今天的因特网无疑是有史以来由人类创造的、精心设计的最大系统、该系统由数以千计的计算机设备(计算机、平板电脑、智能手机)彼此相互连接构成,并且还有一批与因特网相互连接的物品比如游戏机、监控系统、汽车、医疗设备、智能眼镜、手表、运动手环等,随着5G时代的到来,万物互联也越来越称为可能,这里推荐一下 尤瓦尔·赫拉利 的《未来简史》,这个人的格局很高,他书中描述的未来也越来越成为现实,他写的文字能让你感觉到你更想变为计算机世界里的一片硅片。
但是,面对互联网如此巨大且迅速的变化,我们能做些什么?我在地铁站等车的时候经常被地铁广告洗脑,鼓吹人工智能发展的多么牛逼,鼓吹大家都成为人工智能的高端型人才,我不能否认这个操作,但是我认为人工智能并不适合每个人,而且人工智能需要的技术和知识储备是巨大的,所以,**与其憧憬成为人工智能的高端型人才,不如把眼下的计算机基础知识学好,你的未来才会有更多的可能性。**毕竟,一切计算力发展的源头都是计算机,也可以说现在互联网一切的衍生物都是计算机的儿子。
说到计算机基础,就不得不提计算机网络,就像人长大后是需要和外界进行交流一样,计算机网络也是计算机彼此通信的必要条件。如果计算机的创造好比新中国成立,那么计算机网络的出现就相当于是改革开放。并且计算机网络是每个软件工程师必须要学好的一门知识。扯了这么多,下面开始进入正题,一展计算机网络的宏图。
什么是因特网
首先来聊一下因特网是什么,wiki 对它的定义是:因特网是一个全球范围的互联网系统,它使用 TCP/IP
协议簇来链接全世界的设备。我们可以从两个方面来描述一下因特网
- 我们描述因特网可以通过基本硬件和软件组件来进行描述
- 我们能够根据为分布式应用提供服务的联网基础设施来描述因特网
我们先从第一条描述开始
因特网的描述
通过硬件和软件来描述
因特网是一个世界范围的计算机网络。说到因特网的构成,就不得不提构成因特网的组件是什么,还记得我们开头提到的因特网设备吗?智能手机、平板电脑,智能电视,智能家居,游戏机,手表,汽车,眼镜,温度调节系统,这些构件在因特网中有个专门的术语,所有的这些设备都被称为主机(host)
或者端系统(end system)
,一提到主机你是不是想到的是计算机的主机?这两个主机的领域虽然不同,但是它们的作用是相同的,都是系统的大脑
。据保守性评估,2015年已经有大约50亿台设备接入了因特网。而到了2020年这个数字将会变为250亿。
那么这些主机或者端系统之间是如何进行通信的呢?实际上,端系统通过通信链路(communication link)
和分组交换机(packet switch)
连接到一起。
通信链路:指的是因特网中两个节点之间的物理通道。通信链路的传输介质有
双绞线
、光纤
和微波
分组交换机:网络交换设备,它主要包括三个基本部分:交换单元、接口单元和控制单元。
不同的链路能够以不同的速率进行传输数据,称为链路的传输速率(transmission type)
,以 比特/秒(bit/s,或 bps)
进行度量。当一台端系统要向另一台端系统发送数据时,发送端系统将数据分段,并为每段加上首部字节。由此形成的信息包用计算机网络的术语称为分组(packet)
,这个分组的概念非常重要,以后我们会经常提到。这些分组通过网络发送到目的端系统,在那里被装配成初始数据。
分组交换机从它的一条入通信链路接收到达的分组,并从它的一条出通信链路转发该分组。分组交换机的种类有很多种,最著名最常见的分组交换机就是路由器(router)
和 链路层交换机(link-layer switch)
,一个分组所经历的一系列通信链路和分组交换机称为通过该网络的路径(route 或者 path)
。
上面讲述的名词肯能比较晦涩,如果你不是很理解的话,就可以把分组在交换网络中的传输比作是 运输车在高速公路上的运输
,分组类似于卡车,通信链路类似于高速公路,分组交换机类似于交叉口,端系统类似于建筑物,就像卡车需要从某一建筑物的起点经过高速公路和交叉口到达另外一个建筑物的过程。就像卡车需要选取一条路进行运输一样,分组也选取计算机网络的一条路径前行。
端系统通过因特网服务提供商(Internet Service Provider,ISP)
接入因特网,包括如本地电缆或电话公司那样的住宅区 ISP、公司 ISP、大学 ISP,在机场、咖啡馆或者公共场所所提供的 WiFi 接入的 ISP,以及为智能手机或者其他设备提供移动接入的蜂窝数据。
我们国家的 ISP 主要有三大基础运营商,中国电信、中国移动和中国联通。
端系统、分组交换机和其他因特网部件都要运行一系列的 协议(protocol)
,这些协议控制因特网中信息的接收和发送。其中 TCP
和 IP
协议是因特网中最重要的两个协议。IP协议定义了在路由器和端系统之间发送和接收的分组格式。因特网中的协议统称为TCP/IP
,而不单单指的是TCP 和 IP 两个协议。
那么这些协议是由谁制定的呢?实际上,这些因特网协议或者称为因特网标准是由因特网工程任务组(Internet Engineering Task Force)
通过分布式应用程序来描述
上面我们描述的因特网是从硬件和软件层面进行说明的,除此之外,我们还可以通过为分布式应用提供服务的联网基础设施来描述因特网,这个概念比较抽象,我们还是举例子说明一下。除了传统应用程序就像是电子邮件和web 冲浪外,因特网应用还包括智能手机和平板应用程序,这些应用程序中又包括像是即时通讯、来自云的音乐流、电影和电视流、在线社交网络、视频会议、多人游戏和基于位置的推荐系统。因为这些应用程序涉及多个相互交换的端系统,所以这些应用被称为分布式应用程序
。重要的是,因特网应用程序运行在端系统上,而不是运行在网络核心的分组交换机中。
我们来深入的探究一下,因为应用程序可能会运行在端系统上,所以你需要编写使其运行在端系统上的程序,你可能会使用 C、Java、Python 来编写。现在,因为你开发了一个分布式应用程序,这个程序运行在不同的端系统需要彼此发送消息。此时我们遇见一个核心问题,那就是一个运行在端系统的应用程序如何让其他运行在端系统的应用程序收发数据呢?
接入因特网的端系统提供了一个套接字接口(socket Interface)
用于和其他端系统的应用程序收发数据。这个因特网套接字是应用程序必须要遵守的约定。
协议是什么
既然我们已经对因特网有了一点概念了,下面我们就来探讨一下因特网又一个很重要的概念那就是协议
,协议就相当于是人类活动所遵守的约定。
人类活动的比喻
理解计算机网络协议最简单的方式就是把它抽象为我们的生活,因为我们人类无时无刻都在执行协议。考虑一下当你想向其他人询问当前时间的时候你会怎样做?下面是一个典型的询问方式
上图是一个男女双方都比较友好的对话,那么假如女方回答:“请不要烦我”,或者说我不会说中文等等类似不合时宜的回答造成双方不再对话,那么此时就会造成中断。通常情况下,发问者就会放弃继续询问。那么造成上述中断的原因是什么呢?是不是男女双方没有就询问时间
这个话题达成一致呢?也就是说,协议最重要的一点就是 为了完成一项工作,需要两个(或多个)通信实体遵守相同的协议 。
网络协议
网络协议非常类似于人类协议,除了通信双方由人类变为乐计算机载体,哦,协议也会不一样。以大家熟悉的一个计算机网络协议为例,考虑当你向一个 Web 服务器发送请求时(即你在 Web 浏览器中键入一个 Web 页面的 URL)所发生的情况。
首先,你的计算机会向 Web 服务器发送一条连接请求报文,并等待该服务器的响应,等到服务器发送响应到计算机之后,计算机会重新发送一条 GET 请求报文到服务器,最后,Web 服务器向计算机返回该 Web 页面(文件)。
根据上面两个例子你能给的出协议的定义了吗?也许下面这个定义会比较准确呢
协议(protocol)定义了在两个或多个通信实体之间交换报文的格式和顺序,以及报文发送和/或接受一条报文或其他事件所采取的动作 。
因特网广泛的采取了各种各样的协议,不同的协议用于完成不同的通信任务。掌握计算机网络领域知识的过程就是理解网络协议的构成、原理和工作方式的过程。
接入网
回想上一节中计算机网络的术语,通常把与因特网相连的计算机和其他设备称为端系统。
如上图所示,因为它们位于因特网的边缘,故而被称为端系统。因特网的端系统包括了桌面计算机(桌面PC、Mac 和 Linux 设备)、服务器(Web 和电子邮件服务器)和移动计算机(便携机、智能手机和平板电脑)。
端系统也称为主机,即端系统 = 主机。后面一说主机也就指的就是端系统。主机进一步也可以划为两类:客户(client) 和 服务器(server)
。客户通常是桌面 PC,移动 PC 和 智能手机等,而服务器通常是更为强大的机器,用于存储和发布 Web 页面、流视频、中继电子邮件等。
考虑了位于网络边缘
的应用程序和端系统后,我们接下来考虑一下接入网
,接入网指的是将端系统物理链接到边缘路由器(edge router)
的网络。边缘路由器指的是端系统到任何其他远程端系统的路径上的第一台路由器。
家庭接入: DSL、电缆、光纤
DSL
我们一般家庭最常用的接入方式就是数字用户线(Digital Subscriber Line)
和 电缆
。住户通常从提供本地电话接入的本地电话公司处获得 DSL 因特网接入。
先来看一下这幅图片吧,DSL 调制解调器是允许你的计算机通过 DSL 连接与 ISP 进行通信的硬件设备。每个用于的 DSL 调制解调器使用现有的电话线(双绞铜线)与位于电话公司的本地中心局(CO) 中的数字用户线接入复用器(DSLAM) 交换数据。
在计算机网络中,上游是指可以将数据从客户端
传递到服务器
(上载)的方向,上游的速度非常宝贵。下游是指从网络提供商
发送给客户
的数据。
上图中有三条电话线,它们使用不同的频率进行编码
- 高速下载通道,用于处理 50KHz - 1MHz的频段
- 中速上传通道,用于处理 4KHz - 50KHz的频段
- 普通的双向电话信道,位于 0 到 4KHz的频段
这种方法使得单根 DSL 线路看起来像拥有三根一样,因此一个电话通道和一个因特网连接能够共享 DSL 链路,在用户的一侧,一个分配器把到达家庭的数据信号和电话信号分开,并将数据信号转发给 DSL 调制解调器。在服务提供商一侧,在中心局中,DSLAM 把数据信号和电话信号分隔开,并将数字信号发送给因特网。数百上千的家庭与一个 DSLAM 相连。
DSL 中定义了多个传输速率,DSL 的传输速率由服务提供商来决定的,根据价位的的不同,会有不同的传输速率,并且实际的上传下载速率要比理论上的速率要慢很多,比如我家是 50M 光纤,实际也就是 30M 这样。
电缆
DSL 利用电话公司现有的本地电话基础设施,而 电缆因特网接入(cable Internet access)
利用了有线电视公司现有的有线电视基础设施。用户从有线电视公司获得了电缆因特网接入。如下图所示
这种接入方式使用了同轴电缆
和 光纤
两种接入方式,因此被称为混合光纤同轴
接入系统。
电缆因特网接入需要特殊的调制解调器,这种调制解调器称为电缆调制解调器(cable modem)
。和 DSL 相似,电缆调制解调器通常也是一个外部设备,通过一个以太网
端口连接到家庭 PC,在电缆的头部具有和 DSLAM 相似的功能,即将来自许多下游用户中的电缆调制解调器发送的模拟信号转换为数字形式。
电缆因特网接入的一个重要特征是共享广播媒体
,由头发送的每个分组向下行经每条链路到每个家庭;每个家庭发送的每个分组经上行信道向头部传输。因此,如果几个用户同时经下行信道下载一个视频文件,每个用户接受视频文件的实际速率将大大低于电缆总计的下行速率。
光纤
DSL 和 电缆网络在3年前还是提供网络接入的主流,但是现在却有一种更高速的新兴技术是光纤到户(FTTH)
。最简单的光线分布网络称为直接光纤
,从本地中心局到每户都设置一根光纤。还有一种是从本地中心局拉出来的光纤被每个家庭网络共享,光纤部署靠近用户的位置才会分为光纤网络为每个家庭接入。
光纤分布体系结构
就值得是光纤遍布的光纤网络,分为两种:主动光纤网络(AON)
和 被动光纤网络(PON)
,AON 的本质是交换因特网,这个比较复杂,后面的文章会进行介绍,这里我们先介绍一下被动光纤网络 PON,下面是 PON 的因特网接入图
上图显示了使用 PON 分布体系结构的光纤网络。每个家庭具有一个光纤网络端连接器(Optical Network Terminator, ONT)
,它由临近的光纤分配器进行分配。中心局有一个光纤线路端连接器(Optical Line Terminator, OLT)
。 OLT 提供了光信号到电信号的转换,经本地电话公司路由器与因特网相连。在每个家庭中,通常使用路由器与 ONT 相连,并经过这台家庭路由器接入因特网。
光纤有潜力提供每秒千兆比特范围的因特网接入速率,然而,服务提供商根据不同的网络传输速率来收费,较高的速率当然花费更多。
企业和家庭接入:以太网和 WiFi
在公司和大学校园以及越来越多的家庭环境中,使用局域网(LAN)
将端系统连接到边缘路由器。尽管有许多不同类型的局域网技术,但是以太网
是目前为止公司、大学和家庭网络中用的最为流行的接入技术。
以太网
以太网是一种连接局域网的传统技术,它能够使设备通过协议(一组规则或通用网络语言)相互通信,以太网的接入设备可以相互识别对方。
我之前一直想了解以太网是怎样工作的,但是一直没有细致的了解,现在就来挖一下以太网的工作流程!下面是以太网的接入过程
之前的以太网用户使用双绞铜线
与一台以太网交换机相连,以太网交换机或这样相连的交换机网络,则再与更大的因特网相连。使用以太网接入,用户通常以 100 Mbps 或 1 Gbps 速率接入以太网交换机,而服务器可能具有 1 Gbps 甚至 10 Gbps 的接入速率。
而最新的以太网用户可以使用双绞线和光纤线路以及交换机接入。以太网传输速率从 2.94 Mbit/s 提高到最新的 400 Gbit/s 。
有线和无线
在往下进行前,需要先讨论一下有线和无线的关系
有线
顾名思义就是使用电缆或者物理介质组成的,而有线网络是使用有线把电信号从一端传输到另一端的网络。通常在有线网络中,使用 T1线,电缆解调器或任何其他方式使用 Internet 连接。
无线
指的是由电磁波(即 EM 波)或红外波组成的介质。所有的无线设备都带有天线或者传感器。典型的无线设备包括蜂窝移动设备,无线传感器,电视遥控器,带有 WLAN 的笔记本电脑。无线网络不使用电线
进行数据通信。
它们之间的差别如下
技术指标 | 有线网络 | 无线网络 |
---|---|---|
运作速度 | 更高 | 相比有线网络要低,但是先进的无线技术(例如LTE,LTE-A和WLAN-11ad)将有可能实现与有线网络相当的速度 |
系统带宽 | 高 | 低,因为频谱是非常稀缺的资源 |
成本 | 更少,因为电缆不贵 | 无线订户站,无线路由器,无线接入点和适配器价格昂贵 |
安装 | 有线网络安装麻烦,需要更多时间 | 无线网络安装简便,所需时间更少 |
流动性 | 受限制,因为它在有线网络连接的系统所覆盖的区域中运行 | 没有限制,因为它在整个无线网络覆盖范围内运行 |
传输介质 | 铜线,光缆,以太网 | 电磁波或无线电波或红外线 |
网络覆盖范围扩展 | 需要集线器和交换机来扩展网络覆盖范围 | 相互连接的无线基站覆盖了更多区域。 |
应用领域 | 局域网(以太网),城域网 | WLAN,WPAN(Zigbee,蓝牙),红外,蜂窝(GSM,CDMA,LTE) |
信道干扰和信号功率损耗 | 干扰较小,因为一个有线网络不会影响另一有线网络 | 由于无线发射器和接收器之间的障碍(例如天气条件,墙壁反射等),干扰会更高。 |
QoS(服务质量) | 更好 | 由于抖动值高和连接设置延迟而导致的性能较差 |
可靠性 | 与无线同类产品相比,具有较高的优势,因为多年以来由于有线技术的存在,制成的电缆具有更高的性能。 | 合理高,这是由于路由器故障会影响整个网络。 |
WiFi
如果你配置过网络,那你一定见过 WLAN(Wireless LAN)
无线计算机网络,它使用无线通信连接两个或多个设备,用来形成一个 LAN。
现在,越来越多的人通过智能手机、平板电脑和其他物品无线接入因特网。基于 IEEE 802.11 技术的无线 LAN 接入,更通俗的称为 WiFi
,现在WiFi 几乎无处不在,如大学、商业办公室、咖啡厅、机场、家庭甚至是在飞机上。
广域无线接入:3G 和 LTE
iPhone 和 安卓等设备越来越多的用于在移动中发信息、在社交网络中分享照片、观看视频和播放音乐等。这些设备应用了与蜂窝移动电话相同的无线基础设施,通过蜂窝网提供商运营的基站来发送和接收分组。与 WiFi 不用的是,蜂窝网提供的范围要比 WiFi 大太多了。
下面是使用 3G 无线技术进行接入的示意图
电信公司在第三代无线技术中进行了大量的投资,3G 为分组交换广域无线因特网接入提供了超过 1Mbps 的速率。甚至更高速率的广域接入即第四代 4G 广域无线网络也已经被部署了(咳咳,我们国家已经马上5G 了谢谢)。LTE(Long-Term Evolution)
来源于 3G 技术,它能够取得超过 10Mbps 的速率。
物理媒介
在前面的内容中,我们描述了互联网接入技术,那么要进行这些互联网必然是少不了传输媒介的,那么你考虑一下这个发送过程,一个比特数据包从一个端系统开始传输,经过一系列的链路和路由器,从而到达另外一个端系统。这个比特会被转发了很多次,那么这个比特经过传输的过程所跨越的媒介就被称为物理媒介(phhysical medium)
,物理媒介有很多种,比如 双绞铜线、同轴电缆、多模光纤榄、陆地无线电频谱和卫星无线电频谱 。其实大致分为两种:引导性媒介和非引导性媒介。
双绞铜线
最便宜且最常用的引导性传输媒介就是双绞铜线
,多年以来,它一直应用于电话网。从电话机到本地电话交换机的连线超过 99% 都是使用的双绞铜线,例如下面就是双绞铜线的实物图
双绞铜线由两根绝缘的铜线组成,每根大约 1cm 粗,以规则的螺旋形状排列,通常许多双绞线捆扎在一起形成电缆,并在双绞馅的外面套上保护层。一对电缆构成了一个通信链路。无屏蔽双绞线
一般常用在局域网(LAN)中。
同轴电缆
与双绞线类似,同轴电缆也是由两个铜导体组成,下面是实物图
借助于这种结构以及特殊的绝缘体和保护层,同轴电缆能够达到较高的传输速率,同轴电缆普遍应用在在电缆电视系统中。同轴电缆常被用户引导型共享媒介。
光纤
光纤是一种细而柔软的、能够引导光脉冲的媒介,每个脉冲表示一个比特。一根光纤能够支持极高的比特率,高达数十甚至数百 Gbps。它们不受电磁干扰。光纤是一种引导型物理媒介,下面是光纤的实物图
一般长途电话网络全面使用光纤,光纤也广泛应用于因特网的主干。
陆地无线电信道
无线电信道承载电磁频谱中的信号。它不需要安装物理线路,并具有穿透墙壁、提供与移动用户的连接以及长距离承载信号的能力。
卫星无线电信道
一颗卫星电信道连接地球上的两个或多个微博发射器/接收器,它们称为地面站。通信中经常使用两类卫星:同步卫星和近地卫星。
文章参考:
https://en.wikipedia.org/wiki/Internet
《计算机网络:自顶向下方法》
https://baike.baidu.com/item/分组交换机/12661339?fr=aladdin
https://baike.baidu.com/item/ISP/10152?fr=aladdin
《Computer Networking A Top-Down Approach (7th Edition)》
https://baike.baidu.com/item/以太网/99684?fr=aladdin
https://searchnetworking.techtarget.com/definition/Ethernet
https://en.wikipedia.org/wiki/Ethernet
https://www.rfwireless-world.com/Terminology/wired-network-vs-wireless-network.html
https://www.androidauthority.com/worlds-fastest-networks-709140/
https://www.investopedia.com/articles/markets-economy/090916/5g-technology-which-country-will-be-first-adapt.asp
欢迎关注我的个人公众号
Java 面试宝典是大明哥全力打造的 Java 精品面试题,它是一份靠谱、强大、详细、经典的 Java 后端面试宝典。它不仅仅只是一道道面试题,而是一套完整的 Java 知识体系,一套你 Java 知识点的扫盲贴。
它的内容包括:
- 大厂真题:Java 面试宝典里面的题目都是最近几年的高频的大厂面试真题。
- 原创内容:Java 面试宝典内容全部都是大明哥原创,内容全面且通俗易懂,回答部分可以直接作为面试回答内容。
- 持续更新:一次购买,永久有效。大明哥会持续更新 3+ 年,累计更新 1000+,宝典会不断迭代更新,保证最新、最全面。
- 覆盖全面:本宝典累计更新 1000+,从 Java 入门到 Java 架构的高频面试题,实现 360° 全覆盖。
- 不止面试:内容包含面试题解析、内容详解、知识扩展,它不仅仅只是一份面试题,更是一套完整的 Java 知识体系。
- 宝典详情:https://www.yuque.com/chenssy/sike-java/xvlo920axlp7sf4k
- 宝典总览:https://www.yuque.com/chenssy/sike-java/yogsehzntzgp4ly1
- 宝典进展:https://www.yuque.com/chenssy/sike-java/en9ned7loo47z5aw
目前 Java 面试宝典累计更新 400+ 道,总字数 42w+。大明哥还在持续更新中,下图是大明哥在 2024-12 月份的更新情况:
想了解详情的小伙伴,扫描下面二维码加大明哥微信【daming091】咨询
同时,大明哥也整理一套目前市面最常见的热点面试题。微信搜[大明哥聊 Java]或扫描下方二维码关注大明哥的原创公众号[大明哥聊 Java] ,回复【面试题】 即可免费领取。