网络基本功之细说网络传输
共 3742字,需浏览 8分钟
·
2020-12-18 15:52
首先我们来看一个例子:网络服务器向客户端传送数据的过程。下图显示了一个网络服务器向客户端传送数据的完整过程:
需要传送的数据是网络服务器的 HTML 页面。 应用协议 HTTP 报文头添加到 HTML 数据之前,报文头信息包括:服务器所使用的 HTTP 版本,以及表明它包含发给网络客户端信息的状态编码。 HTTP 应用层协议将 HTML 格式的网页数据发送给传输层。TCP 传输层用于管理网络服务器和客户端之间的会话。 IP 信息添加到 TCP 信息之前,IP 指定适当的源和目的 IP 地址,这些信息就构成了 IP 报文。 以太网协议添加到 IP 报文的两端之后,就形成了数据链路帧,上述帧发送至通向网络客户端的路径上的最近的一个路由器。路由器移除以太网信息,观察 IP 报文,判定最佳路径,将报文插入一个新的帧,并发送至目标路径上下一个相邻路由器,每个路由器在转发之前都移除并添加新的数据链路层信息。 客户端接收到包含数据的数据链路帧,处理各层协议头,之后以添加时相反的顺序移除协议头。首先处理并移除以太网信息,之后是 IP 协议信息,接下来是 TCP 信息,最后是 HTTP 信息。 数据通过互联网网络传输,互联网网络包含媒介和中间设备。 之后,将网页信息传递给客户端网页浏览器软件。
数据封装
消息要在网络中传输,必须对它进行编码,以特定的格式进行封装,同时需要适当地封装以足够的控制和地址信息,以使它能够从发送方移动到接收方。
消息大小
理论上,视频或邮件信息是能够以大块非中断型流从网络源地址传送到目的地址,但这也意味着同一时刻同一网络其他设备就无法收发消息。这种大型数据流会造成显著延时。并且,如果传输过程中连接断开,整个数据流就会丢失需要全部重传。因此更好的方法是将数据流分割(segmentation)为较小的,便于管理的片段,能够带来两点好处:
发送较小片段,网络上同时可有多个会话交错进行。这种网络上将不同会话片段交错进行的过程称为多路传输(multiplexing)。 分割可以提高网络通讯的可靠性。各消息片段从源地址到目的地址无需经过相同的路径,如果一条路径被堵塞或断开,其余消息可以从替换路径到达目的地址。如果部分消息到不了目的地址,那只需要重传丢失的部分即可。
通过对片段打上标签的方式来保证顺序以及在接收时进行重组。
协议数据单元(Protocol Data Unit,PDU)
应用层数据在传输过程中沿着协议栈传递,每一层协议都会向其中添加信息。这就是封装的过程。
数据片段在各层网络结构中采用的形式就称为协议数据单元(PDU)。封装过程中,下一层对从上一层收到的 PDU 进行封装。在处理的每一个阶段 PDU 都有不同的名字来反应它的功能。
PDU 按照 TCP/IP 协议的命名规范:
数据(Data):应用层 PDU 的常用术语 分段(Segment):传输层 PDU 帧(Frame):网络层 PDU 比特(Bits):在介质上物理传输数据所使用的 PDU
封装
封装是指指传输之前为数据添加额外的协议头信息的过程。在绝大多数数据通信过程中,源数据在传输前都会封装数层协议。在网络上发送消息时,主机上的协议栈从上至下进行操作。
以网络服务器为例,HTTP 应用层协议发送 HTML 格式网页数据到传输层,应用层数据被分成 TCP 分段。各 TCP 分段被打上标签,称为头(header),表明接收方哪一个进程应当接收此消息。同时也包含使得接收方能够按照原有的格式来重组数据的信息。
传输层将网页 HTML 数据封装成分段并发送至网络层,执行 IP 层协议。整个 TCP 分段封装成 IP 报文,也就是再加上 IP 头标签。IP 头包括源和目的地址,以及发送报文到目的地址所必须的信息。
之后,IP 报文发送到接入层,封装以帧头和帧尾。每个帧头都包含源和目的物理地址。物理地址唯一指定来本地网络上的设备。帧尾包含差错校正信息。最后,由服务器网卡将比特编码传输给介质。
解封装
接收主机以相反的方式进行操作称为解封装。解封装是接收设备移除一层或多层协议头的过程。数据在协议栈中向上移动直到终端应用层伴随着解封装。
访问本地资源
访问本地网路资源需要两种类型的地址:网络层地址和数据链路层地址。网络层和数据链路层负责将数据从发送设备传输到接收设备。两层协议都有源和目的地址,但两种地址的目的不同。
如下图所示例子,客户端 PC1 和 FTP 在同一个 IP 网络中的通信示意图
网络地址
网络层地址或 IP 地址包含两个部分:网络前缀和主机。路由器使用网络前缀部分将报文转发给适当的网络。最后一个路由器使用主机部分将报文发送给目标设备。同一本地网络中,网络前缀部分是相同的,只有主机设备地址部分不同。
源 IP 地址:发送设备,即客户端 PC1 的 IP 地址 → 192.168.1.110
目的 IP 地址:接收设备,即 FTP 服务器 → 192.68.1.9
数据链路地址
数据链路地址的目的是在同一网络中将数据链路帧从一个网络接口发送至另一个网络接口。以太网 LAN 和无线网 LAN 是两种不同物理介质的网络示例,分别有自己的数据链路协议。
当 IP 报文的发送方和接收方在同一网络,数据链路帧直接发送到接收设备。以太网上数据链路地址就是以太网 MAC 地址。MAC 地址是物理植入网卡的48比特地址。
源 MAC 地址:发送 IP 报文的 PC1 以太网卡 MAC 地址,AA-AA-AA-AA-AA-AA。
目的 MAC 地址:当发送设备与接收设备位于同一网路,即为接收设备的数据链路地址。本例中,FTP MAC 地址为,CC-CC-CC-CC-CC-CC。
源和目的 MAC 地址添加到以太网帧中。
MAC 与 IP 地址
发送方必须知道接收方的物理和逻辑地址。发送方主机能够以多种方式学习到接收方的 IP 地址:比如域名系统(DNS),或通过应用手动输入,如用户指定 FTP 地址。
以太网 MAC 地址是怎么识别的呢?发送方主机使用地址解析协议(Address Resolution Protocol,ARP)以检测本地网路的所有 MAC 地址。如下图所示,发送主机在整个 LAN 发送 ARP 请求消息,这是一条广播消息。ARP 请求包含目标设备的 IP 地址,LAN 上的每一个设备都会检查该 ARP 请求,看看是否包含它自身的 IP 地址。只有符合该 IP 地址的设备才会发送 ARP 响应。ARP 响应包含 ARP 请求中 IP 地址相对应的 MAC 地址。
访问远程资源
默认网关
当主机发送消息到远端网络,必须使用路由器,也称为默认网关。默认网关就是位于发送主机同一网络上的路由器的接口 IP 地址。有一点很重要:本地网络上的所有主机都能够配置主机的默认网关地址。如果该主机的 TCP/IP 设置中没有配置默认网关地址,或指定了错误的默认网关地址,则远端网络消息无法被送达。
如下图所示,LAN 上的主机 PC1 使用 IP 地址为 192.168.1.1 的 R1 作为默认网关,如果 PDU 的目的地址位于另外一个网络,则主机将 PDU 发送至路由器上的默认网关。
与远端网络设备通讯
下图显示了客户端主机 PC1 与远端 IP 网络服务器进行通讯的网络层地址与数据链路层地址:
网络地址
当报文的发送方与接收方位于不同网络,源和目的 IP 地址将会代表不同的网络上的主机。
源 IP 地址:发送设备即客户端主机 PC1 的 IP 地址 → 192.168.1.110。
目的 IP 地址:接收设备即网络服务器的 IP 地址 → 172.16.1.99。
数据链路地址
当报文的发送方与接收方位于不同网络,以太网数据链路帧无法直接被发送到目的主机。以太网帧必须先发送给路由器或默认网关。本例中,默认网关是 R1,R1 的接口 IP 地址与 PC1 属于同一网络,因此 PC1 能够直达路由器。
源 MAC 地址:发送设备即 PC1 的 MAC 地址,PC1 的以太网接口 MAC 地址为 AA-AA-AA-AA-AA-AA。
目的 MAC 地址:当报文发送方与接收方位于不同网络,这一值为路由器或默认网关的以太网 MAC 地址。本地中,即 R1 的以太网接口 MAC 地址 11-11-11-11-11-11。
IP 报文封装成的以太网帧先被传输至 R1,R1 再转发给目的地址即网络服务器。R1 可以转发给另外一个路由器,如果目的服务器所在网路连接至 R1,则直接发送给服务器。
发送设备如何确定路由器的 MAC 地址?每一个设备通过自己的 TCP/IP 设置中的默认网关地址得知路由器的 IP 地址。之后,它通过 ARP 来得知默认网关的 MAC 地址,该 MAC 地址随后添加到帧中去。
“原文地址:http://suo.im/6pSaFi
”