本文是对《图解TCP/IP》中第 1 章相关内容的学习总结。
为了加深对整个网络体系的理解,需要对网络底层的相关基础构成有所了解,特别是物理硬件。了解之后,再回来理解软件方面的内容,就能在脑海中想象出具体的场景。比如,在一个路由器上进行了流量转发,在一个 4~7 层交换机上进行了负载均衡调控等。
网络的构成要素
这里引用了书里面的网络构成要素图。结合这张图,笔者将网络底层的设备进行一个初步的梳理。
通信媒介与数据链路
数据链路(Datalink):指的是相互直连的设备之间进行通信所涉及的协议及其网络。
计算机之间通过电缆相互连接,数据链路不同,其使用的电缆也不尽相同。以下表格整理了不同数据链路对应的通信媒介(数据链路还有很多,这里只列出了一部分)。
在网上有一副图标识了不同电缆线的结构(无线连接没有电缆线),如下所示:

需要说明的是,因为光和电流的传输速度是恒定的,所以各种通信媒介中,数据的传输速度理论上也是恒定的。传输速率高,不是指单位数据流动的速度有多快,而是指单位时间内传输的数据量有多少。 我们经常会看到使用高速公路的例子来说明传输速率,高速公路上的车道越多,单位时间内可以通过的车辆就越多。如果车道少,那么就会出现拥堵,传输速率也就变低了。传输速率又称为带宽(Bandwidth),带宽越大,传输能力就越强。
网卡
网卡(NIC,Network Interface Card)在维基百科中的定义是:
一块被设计用来允许计算机在计算机网络上进行通讯的计算机硬件。
网卡又被称为网络适配器(network adapter),局域网接收器(LAN adapter)等,其拥有全局唯一的 MAC 地址,属于 OSI 参考模型中的第 2 层。笔记本电脑一般都可以连接无线网络,那是因为其内部内置了无线网卡。以下为某电商网站上搜索关键字“网卡”的部分结果:
中继器
中继器(Repeater)是物理层面上延长网络的设备,属于 OSI 参考模型的第 1 层。这里的延长网络指的是将电缆传输过来的信号(已减弱的信号)通过中继器进行波形调整和信号放大。
中继器可以放大信号,但不能改变传输速度。另外需要注意的是,即使数据链路层出现某些错误,中继器仍然转发数据。
日常生活中我们家里使用的路由器,如果隔了两道墙,无线信号就会时有时无,此时便可以购买一个中继器进行信号放大。以下为某电商网站上相关产品的截图:
网桥 / 2 层交换机
网桥是一种将数据链路层上多个不同网络进行连接的设备,属于 OSI 参考模型的第 2 层,有时也称为 2 层交换机(L2 交换机)。
网桥不限制连接网段的个数,通过识别数据帧,将其存储在内存中,再重新生成信号作为一个全新的帧转发给相连的另一个网段,如果数据已损坏,则不会进行转发。
网桥通过地址自学机制和过滤功能控制网络流量。这里的地址指的是物理地址,如 MAC 地址。而地址自学机制指的是:每当收到数据帧,网桥就能记录下来这个数据帧是来自哪台机器(如机器 A)和哪个网络(如网络 Z),从而知道了机器 A 属于网络 Z。下次如果有数据要发送给机器 A,它便知道直接发给网络 Z 就好了,而不是浪费流量向所有相连的网络进行转发。
路由器 / 3 层交换机
路由器最为我们熟悉,现在家用的宽带路由器非常常见。路由器是网络层面上用于连接不同网络并对分组报文进行转发的设备,属于 OSI 参考模型的第 3 层,有时也称为 3 层交换机(L3 交换机)。前面的网桥是根据物理地址(MAC 地址)进行处理,而路由器则是根据 IP 地址进行处理的。以下为笔者家中使用的路由器:
4~7 层交换机
前面提到了 2 层,3 层交换机,那么这里的 4~7 层交换机也就很容易理解了,它是负责转发 OSI 参考模型里传输层,会话层,表示层和应用层中数据的设备。
4~7 层交换机一个主要的功能便是负载均衡,通过解析传输层或应用层中的数据,将数据按照一定的规则转发到后端多台服务器中的一台进行处理。因为是在传输层或应用层上,所以能玩出很多花样,比如带宽控制,将一些实时要求高的通信请求优先处理等。其他应用场景还包括:防火墙,广域网加速器等。
网关
网关与 4~7 层交换机类似,也是处理 OSI 参考模型里传输层到应用层的数据,但除了转发数据,网关还有一项工作是数据转换。比如手机邮件与互联网邮件之间的协议有所差异,直接通信会出现如乱码之类的问题,但在这中间设置一道网关服务器,由其进行通信协议的翻译,便能在二者之间正常收发邮件。
网关的另一个使用场景是代理服务器,又称为应用网关,可以通过它进行网络流量的控制和安全规避,比如防火墙。
网络构成要素总结如下:
设备名称 | 作用 | OSI 参考模型 | 其他说明 |
---|---|---|---|
网卡 | 使计算机能够联网的设备 | ||
中继器 | 物理层上对信号进行放大,延长网络 | 1 层(物理层) | 识别 0,1 序列调整波形进行相应放大与转发 |
网桥 / 2 层交换机 | 在数据链路层对数据进行转发,延长网络 | 2 层(数据链路层) | 识别数据链路层的数据帧,重构之后再转发,通过识别物理地址(MAC 地址)进行判断 |
路由器 / 3 层交换机 | 在网络层根据 IP 地址对数据进行转发 | 3 层(网络层) | 根据目标地址判断网络路径 |
4~7 层交换机 | 负责传输层以上分组数据的转发 | 4~7 层(传输层,会话层,表示层,应用层) | |
网关 | 同上,但还支持数据协议的转换 | 同上 |
网络通信的分类
根据网络通信中数据发送方法的不同,可以对传输方式进行分类。
1、有连接 vs 无连接
有连接:在发送数据之前,需要在收发主机之间建立一条通信线路。
这里的连接在不同网络分层协议中的含义有所区别。在数据链路层,连接指的是物理的、通信线路的连接;而在传输层,则指的是逻辑上的连接:通信双方通过建立一定的数据结构来维护双方交互的状态(即用数据结构来维护双方数据发送的状态)。
无连接:发送数据之前,不需要建立或断开连接,即发送方可以随时发(不管对方是否在线),而接收方也不知道何时会从哪里会收到数据。
2、电路交换 vs 分组交换
电路交换:计算机之间进行数据传输之前,需要先建立连接:计算机先被连接到交换机上,交换机再与其他交换机进行连接,直到最终与接收端计算机相连。但这条线路,只能被这两台计算机使用,即通信线路是独占的,除非连接断开。因为是独占,所以实时性好,效率高(比如打电话),一方发送数据,另一方立马可以收到。
电路连接的三个阶段:建立连接,传输数据,释放连接。
分组交换:鉴于电路交换中数据传输效率低下,便有了分组交换。它指的是计算机将需要发送的数据拆分成多个数据包(每个包中有收发地址),并按照一定的顺序分别发送,即分组。如此一来,该链路上的所有计算机便可以利用同一条线路进行数据收发。在分组交换中,由分组交换机(路由器)连接通信线路,计算机都连接到分组交换机上,分组交换机会将发送过来的数据先缓冲到自己内部的缓冲区(缓存队列),然后再按照一定的顺序(一般是 FIFO)发送出去。
分组之后,数据被拆散,就注定不能实时到达对方,因为数据在运输过程中需要重组。那为啥不一次传输完呢,因为数据包大小不确定。假设有 10 GB 的数据需要传输,底层的通信设备也不会为了这些特殊情况而支持这么大的带宽,否则将是巨大的资源浪费。
另外,数据到了路由器之后,会先被缓存进队列,而队列大小是有限的,如果达到了上限(接收数据速度大于发送数据速度),数据可能会出现丢失。
3、单播 vs 任播 vs 多播 vs 广播
根据通信接收端的数量来划分的话,可以分为单播,任播,多播和广播。
单播(Unicast):即 1 对 1 通信。因为是 1 对 1 通信,所以服务端响应较及时,并可以针对不同的客户端提供个性化的服务。但如果与成千上万个客户端进行 1 对 1 通信,那么服务器端的压力将不堪重负。
广播(Boardcast):即 1 对多通信, 1 台主机向所有与之相连的其他主机(这里指的是某个通信范围,比如一个局域网,又叫广播域)发送信息。
广播又分为本地广播和直接广播。本地广播只能在本网络中进行,不能跨越路由器。直接广播可以在不同网络之间通信,但需要在路由器上进行单独设置(一般因为安全问题,不进行转发)。
广播将相同的数据复制给所有的接收端主机,不管对方是否需要,所以网络成本较低廉,但此时就无法再提供个性化服务了。
多播(Multicast):与广播类似,也是 1 对多通信,但不同的是,接收端的主机有限制,只能是符合条件的一组机器才能接收消息。
前面的广播方式,不管某些主机是否需要,全部都发,比较浪费网络流量,而多播则只向有需求者进行发送。另外多播可以穿透路由器,给其他网段发送数据包。
任播(Anycast):与多播和单播相关。与多播一样,接收端都是一群特定的主机,但只从中选择一台最符合某类条件的机器进行单播通信。
IP 任播是指那些提供同一种服务的服务器配置同一个 IP 地址,并与最近的服务器进行通信的一种方法。因为选取的是最近的一台服务器,所以,通信服务器可能会发生变化,故无法保证第一个包和第二个包会发送给同一台主机。
通信分类总结如下:
分类 | 特点 | 相关协议 | 应用场景 |
---|---|---|---|
有连接 | 有状态,保证可靠性,效率一般 | ATM,帧中继,TCP等 | 需要保证高可靠性的业务,比如互联网上以超文本形式提供信息的 Web 系统 |
无连接 | 无状态,不保证可靠性,效率高 | 以太网,IP,UDP等 | 直播相关的流媒体协议,实时游戏,IoT领域等 |
电路交换 | 实时性高,传输速度快,但资源利用率低 | 电话网 | 历史相对久远,主要用于电话通信 |
分组交换 | 设计较简单,资源利用率高,但传输速率不稳定,有延迟,并可能会出现丢包情况 | TCP/IP 协议栈 | 较新的通信方式,20 世纪 60 年代后半叶开始为大众熟悉,用于网络通信。 |
单播 | 1 对 1 通信,即点对点通信。可以及时响应请求,但耗费的流量大 | IP单播协议 | 如收发电子邮件,浏览网页等大多数网络资源访问 |
广播 | 1 对多通信,网络配置比较简单,但浪费资源,不能提供个性化服务 | DHCP等 | 有线电视网 |
多播 | 1 对多通信,但接收端是某一类主机,有广播的优点,同时可以节省带宽 | IPv4, IPv6 ,IGMP等 | 电话会议,视频会议等 |
任播 | 从多台主机中选择一台进行 1 对 1 通信,通信不保证可靠 | IPv4,IPv6 | DNS 根域名解析服务器,110/119 紧急电话等 |
总结
1、从网络的构成要素中我们可以看到一条线:从计算机终端开始到需要连接的目标机器之间,按照 OSI 参考模型的网络分层,衍生出来了许许多多的设备,每一类设备都有一个主要分工。
2、网络通信的分类中,电路交换一般用于实时通信,比如电话网络,而分组交换,则真正实现了各个底层网络设备的互联互通。
参考资料
- 图解TCP/IP(第5版),by [日]竹下隆史 / [日]村山公保 / [日]荒井透 / [日]苅田幸雄
- 计算机网络系列--什么是电路交换和分组交换?,by 帅地
- 单播、多播(组播)和广播的区别,by dagailv