网络集成综合布线【1.8】

        2.传输层协议 传输层是 TCP/IP 协议集中协议最少的一层,只有两个协议:传输控制协议 TCP 和用户 数据报协议 UDP。 TCP 协议要完成 5 个主要功能:端口地址寻址;连接的建立、维护与拆除;流量控 制;出错重发;数据分段。

        (1)端口地址寻址 网络中的交换机、路由器等设备需要分析数据报中的 MAC 地址、 IP 地址,甚至端口地 址。也就是说,网络要转发数据,会需要 MAC 地址、 IP 地址和端口地址的三重寻址。因此 在数据发送之前,需要把这些地址封装到数据报的报头中。 端口地址寻址对应用层程序寻址。当数据报到达目标主机后,链路层的程序会通过数 据报的帧报尾进行 CRC 校验。校验合格的数据帧被去掉帧报头向上交给 IP 程序。 IP 程序 去掉 IP 报头后,再向上把数据交给 TCP 程序。 TCP 程序把 TCP 报头去掉后,就可以通过 TCP 报头中源主机指出的端口地址了解到发送主机希望目标主机的什么应用层程序接收这 个数据报。 图 2-18 表明了常用的端口地址。

从图 2-18 中注意到, WWW 所用 HTTP 协议的端口地址是 80。另外一个在互联网中频繁使用的应用层协议 DNS 的端口号是 53。 TCP 和 UDP 的报头中都需要支持端口地址。 目前,应用层程序的开发者都接受 TCP/IP 对端口号的编排。详细的端口号编排可以在 TCP/IP 的注释 RFC 1700 查到。 TCP/IP 规定端口号的编排方法如下。 ① 低于 255 的编号:用于 FTP、 HTTP 这样的公共应用层协议。 ② 255~1023 的编号:提供给操作系统开发公司,为市场化的应用层协议编号。 ③ 大于 1023 的编号:普通应用程序。 端口地址的编码范围从 0~65 535。其中从 1 024~49 151 的地址范围需要注册使用, 49 152~65 535 的地址范围可以自由使用。 端口地址被源主机在数据发送前封装在其 TCP 报头或 UDP 报头中。图 2-19 给出了 TCP 报头的格式。

从图 2-19 所示的 TCP 报头格式可看到,端口地址使用两个字节 16 位二进制数来表 示,被放在 TCP 报头的最前面。 计算机网络中约定,当一台主机向另外一台主机发出连接请求时,这台机器被视为客 户机,而那台机器被视为这台机器的服务器。通常,客户机在给自己的程序编端口号时, 随机使用一个大于 1023 的编号。例如,一台主机要访问 WWW 服务器,在其 TCP 报头中 的源端口地址封装为 1391,目标端口地址则需要为 80,指明与 HTTP 通信。

(2) TCP 连接的建立、维护与拆除 TCP 协议是一个面向连接的协议。所谓面向连接,是指一个主机需要和另外一台主机 通信时需要先呼叫对方,请求与对方建立连接。只有对方同意,才能开始通信。 这种呼叫与应答的操作非常简单。所谓呼叫,就是连接的发起方发送一个“建立连接请求”的报文包给对方。对方如果同意这个连接,就简单地发回一个“连接响应”的应答包,连接就建立起来了。
图 2-21 描述了 TCP 建立连接的过程。

主机 A 希望与主机 B 建立连接以交换数据,它的 TCP 程序首先构造一个请求连接报文 包给对方。请求连接包的 TCP 报头中的报文性质码标志为 SYN,声明是一个“连接请求 包”。主机 B 的 TCP 程序收到主机 A 的连接请求后,如果同意这个连接,就发回一个“确 认连接包”,应答 A 主机。主机 B 的确认连接包的 TCP 报头中的报文性质码标志为 ACK。 SYN 和 ACK 是 TCP 报头中报文性质码的连接标志位。建立连接时, SYS 标志位置 1, ACK 标志位置 0,表示本报文包是个同步 synchronization 包。确认连接的包, ACK 置 1, SYN 置 1,表示本报文包是个确认 acknowledgment 包。

        从图 2-22 可以看到,建立连接有第三个包,是主机 A 对主机 B 的连接确认。主机 A 发送第三个包是考虑这样一种情况:主机 A 发送一个连接请求包,但这个请求包在传输过 程中丢失。主机 A 发现超时仍未收到主机 B 的连接确认,会怀疑到有包丢失。主机 A 再重 发个连接请求包。第二个连接请求包到达主机 B,保证了连接的建立。 但是如果第一个连接请求包没有丢失,而只是因为网络慢而导致主机 A 超时呢?这就 会使主机 B 收到两个连接请求包,使主机 B 误以为第二个连接请求包是主机 A 的又一个请 求。第三个确认包就是为防止这样的错误而设计的。

        这样的连接建立机制被称为三次握手。 从功能实现的角度看, TCP 在数据通信之前先要建立连接,是为了确认对方是活跃 的,并同意连接,这样的通信是可靠的。 从 TCP 程序设计的原理看,源主机 TCP 程序发送“连接请求包”是为了触发对方主机 的 TCP 程序,开辟一个对应的 TCP 进程,并在双方的进程之间传输数据。即对方主机中开 辟了多个 TCP 进程,分别与多个主机的多个 TCP 进程在通信。源主机也可以邀请对方开辟 多个 TCP 进程,同时进行多路通信。对方同意与源主机建立连接,对方就要分出一部分内 存和 CPU 时间等资源。 可以理解,当通信结束时,发起连接的主机应该发送拆除连接的报文包,通知对方主 机关闭相应的 TCP 进程,释放所占用的资源。拆除连接报文包的 TCP 报头中,报文性质码 的 FIN 标志位置 1,表明是一个拆除连接的报文包。 为了防止连接双方的一侧出现故障后异常关机,而另外一方的 TCP 进程无休止地驻 留,任何一方如果发现对方长时间没有通信流量,就会拆除连接。但有时确实有一段时间 没有流量,但还需要保持连接,这就需要发送空的报文包,以维持这个连接。维持连接的 报文包的英语名称非常直观: keepalive。为了在一段时间内没有数据发送但还需要保持连接 而发送 Keepalive 包,被称为连接的维护。 TCP 程序为实现通信而对连接进行建立、维护和拆除的操作,称为 TCP 的传输连接管理。

(3) TCP 报头中的报文序号 TCP 是将应用层交给的数据分段后发送的。为了支持数据出错重发和数据段组装, TCP 程序为每个数据段封装的报头中设计了两个数据报序号字段,分别称为发送序号和 确认序号。 出错重发是指一旦发现有丢失的数据段,可以重发丢失的数据,以保证数据传输的完 整性。如果数据没有分段,出错后源主机就不得不重发整个数据。为了确认丢失的是哪个 数据段,报文就需要安装序号。 另外,数据分段可以使报文在网络中的传输非常灵活。一个数据的各个分段可以选择 不同的路径到达目标主机。由于网络中各条路径在传输速度上的不一致性,有可能前面发 出的数据段后到达,而后发出的数据段先到达。为了使目标主机能够按照正确的次序重新 装配数据,也需要在数据段的报头中安装序号。

        TCP 报头中的第三、四字段是两个基本点序号字段。发送序号是指本数据段是第几号 报文包。接收序号是指对方该发来的下一个数据段是第几号段。确认序号实际上是已经接 收到的最后一个数据段加 1。 如图 2-23 所示,左方主机发送 Telnet 数据,目标端口号为 23,源端口号为 1028。发 送序号(Sequencing Numbers)为 10,表明本数据是第 10 段。确认序号(Acknowledgement Numbers)为 1,表明左方主机收到右侧主机发来的数据段数为 0,右侧主机应该发送的数 据段是 1。 右侧主机向左方主机发送的数据报中,发送序号是 1,确认序号是 11。确认序号是 11 表明右侧主机已经接收到左方主机第 10 号包以前的所有数据段。 TCP 协议设计在报头中安装第二个序号字段是很巧妙的。这样,对对方数据的确认随 着本主机的数据发送而载波过去,而不是单独发送确认包,大大节省了网络带宽和接收主机的 CPU 时间。

        (4) PAR 出错重发机制 在网络中有两种情况会丢失数据包。如果网络设备(交换机、路由器)的负荷太大, 当其数据包缓冲区满时,就会丢失数据包。另外一种情况是,如果在传输中因为噪声干扰、数 据碰撞或设备故障,数据包就会受到损坏。在接收主机的链路层接受校验时就会被丢弃。 发送主机应该发现丢失的数据段,并重发出错的数据。 TCP 使用称为 PAR 的出错重发方案(Positive Acknowledgment and Retransmission), 这个方案是许多协议都采用的。

        TCP 程序在发送数据时,先把数据段都放到其发送窗口中,然后发送出去。然后, PAR 会为发送窗口中每个已发送的数据段启动定时器。被对方主机确认收到的数据段将 从发送窗口中删除。如果某数据段的定时时间到仍然没有收到确认, PAR 就会重发这个 数据段。 在图 2-24 中,发送主机的 2 号数据段丢失。接收主机只确认了 1 号数据段。发送主机 从发送窗口中删除已确认的 1 号包,放入 4 号数据段(发送窗口=3,没有地方放更多的待 发送数据段),将数据段 2、 3、 4 号发送出去。其中,数据段 2、 3 号是重发的数据段。

尽管数据段 3 已经被接收主机收到,但是仍然被重发。这显然是一种浪费。但是 PAR 机制只能这样处理。 (5)流量控制 如果接收主机同时与多个 TCP 通信,接收的数据包的重新组装需要在内存中排队。如 果接收主机的负荷太大,导致内存缓冲区满,就有可能丢失数据。因此,当接收主机无法 承受发送主机的发送速度时,就需要通知发送主机放慢数据发送速度。 事实上,接收主机并不通知发送主机放慢发送速度,而是直接控制发送主机的发送窗 口大小。接收主机如果需要对方放慢数据的发送速度,就减小数据报中 TCP 报头里“发送 窗口”字段的数值。对方主机必须服从这个数值,减小发送窗口的大小,从而降低了发送 速度。 在图 2-25 中,发送主机开始的发送窗口大小是 3,每次发送 3 个数据段。接收主机要 求窗口大小为 1 后,发送主机调整了发送窗口的大小,每次只发送一个数据段,因此降低 了发送速度。

        极端的情况是,如果接收主机把窗口大小字段设置为 0,发送主机将暂停发送数据。 不过,尽管发送主机通过接受接收主机的窗口设置降低了发送速度,但是,发送主机 自己会渐渐扩大窗口。这样做的目的是尽可能地提高数据发送速度。 在实际中, TCP 报头中的窗口字段不是用数据段的个数来说明大小的,而是以字节数 为大小的单位的。 在 TCP/IP 协议集中设计了另外一个传输层协议:无连接数据传输协议(Connectionless Data Transport Protocol)。这是一个简化了的传输层协议。

        UDP 去掉了 TCP 协议中 5 个功 能中的 3 个功能:连接建立、流量控制和出错重发,只保留了端口地址寻址和数据分段两 个功能。 UDP 通过牺牲可靠性换得通信效率的提高。对于那些数据可靠性要求不高的数据传输 (如 DNS、 SNMP、 TFTP、 DHCP),可以使用 UDP 协议来完成。 UDP 报头的格式非常简单,核心内容只有源端口地址和目标端口地址两个字段。 UDP 程序需要与 TCP 一样完成端口地址寻址和数据分段两个功能。但是它不能知道数据包是否到达目标主机,接收主机也不能抑制发送主机发送数据的速度。由于数据报中不 再有报文序号,一旦数据包沿不同路由到达目标主机的次序出现变化,目标主机也无法按 正确的次序纠正这样的错误。

        TCP 是一个面向连接的、可靠的传输; UDP 是一个非面向连接的、简易的传输。 3.网络层协议 TCP/IP 协议集中最重要的成员是 IP 和 ARP。 IP 协议的功能是寻址与路由。即用 IP 地 址来标识 Internet 的主机:在每个 IP 数据报中都会携带源 IP 地址和目标 IP 地址来标识该 IP 数据报的源主机和目的主机。 IP 数据报在传输过程中,每个中间节点(IP 网关)还需要为 其选择从源主机到目的主机的合适的转发路径(即路由)。

        IP 协议可以根据路由选择协议 提供的路由信息对 IP 数据报进行转发,直至抵达目的主机。 ARP 协议则用来实现 IP 地址 和物理的转换。 除了这两个协议外,网络层还有一些其他协议,如 RARP、 DHCP、 ICMP、 RIP、 IGRP、 OSPF 等。 2.3.3 IEEE 802 标准 TCP/IP 没有对 OSI 模型最下面两层的实现。 TCP/IP 协议主要是在网络操作系统中 实现的。主机中应用层、传输层和网络层的任务由 TCP/IP 程序来完成,而主机 OSI 模 型最下面两层数据链路层和物理层的功能则是由网卡制造厂商的程序和硬件电路来完 成的。 网络设备厂商在制造网卡、交换机、路由器时,其数据链路层和物理层的功能是依照 IEEE 制订的 802 规范,也没有按照 OSI 的具体协议开发。 IEEE 制订的 802 规范标准规定了数据链路层和物理层的功能。 物理地址寻址:发送方需要对数据包安装帧报头,将物理地址封装在帧报头中。接收 方能够根据物理地址识别是否是发给自己的数据。 介质访问控制:如何使用共享传输介质避免介质使用冲突。知名的局域网介质访问控 制技术有以太网技术、令牌网技术和 FDDI 技术等。 数据帧校验:数据帧在传输过程中是否受到了损坏,丢弃损坏了的帧。 数据的发送与接收:操作内存中的待发送数据向物理层电路中发送的过程。在接收方 完成相反的操作。 IEEE 802 根据不同的功能,有相应的协议规范,如标准以太网协议规范 802.3、无线局 域网 WLAN 协议规范 802.11 等,统称为 IEEE 802x 标准。图 2-27 列出的是现在流行的 802 标准。

        由图 2-27 可见, OSI 模型把数据链路层又划分为两个子层:逻辑链路控制( LLC, Logical Link Control)子层和介质访问控制(MAC, Media Access Control)子层。 LLC 子层 的任务是提供网络层程序与链路层程序的接口,使得链路层主体 MAC 层的程序设计独立于 网络层的具体某个协议程序。这样的设计是必要的。例如,新的网络层协议出现时,只需 要为这个新的网络层协议程序写出对应的 LLC 层接口程序,就可以使用已有的链路层程 序,而不需要全部推翻过去的链路层程序。 MAC 层完成所有 OSI 对数据链路层要求完成的功能:物理地址寻址、介质访问控制、 数据帧校验、数据发送与接收的控制。 IEEE 遵循 OSI 模型,也把数据链路层分为两层,设计出 IEEE 802.2 协议与 OSI 的 LLC 层对应,并完成相同的功能。(事实上, OSI 把数据链路层划分出 LLC 是非常科学的, IEEE 没有道理不借鉴 OSI 模型的如此设计。) 可见, IEEE 802.2 协议对应的程序是一个接口程序,提供了流行的网络层协议程序 (IP、 ARP、 IPX、 RIP 等)与数据链路层的接口,使网络层的设计成功地独立于数据链路层 所涉及的网络拓扑结构、介质访问方式和物理寻址方式。

         IEEE 802.1 有许多子协议,其中有些已经过时。但是新的 IEEE 802.1Q、 IEEE 802.1D 协议(1998 年)则是最流行的 VLAN 技术和 QoS 技术的设计标准规范。 IEEE 802x 的核心标准是十余个跨越 MAC 子层和物理层的设计规范,目前关注的是如 下 8 个知名的规范。 IEEE 802.3:标准以太网标准规范,提供 10 兆位局域网的介质访问控制子层和物理层 设计标准。 IEEE 802.3u:快速以太网标准规范,提供 100 兆位局域网的介质访问控制子层和物理 层设计标准。 IEEE 802.3ab:千兆位以太网标准规范,提供 1 000 兆位局域网的介质访问控制子层和 物理层设计标准。 IEEE 802.5:令牌环网标准规范,提供令牌环介质访问方式下的介质访问控制子层和物 理层设计标准。 IEEE 802.11:无线局域网标准规范,提供 2.4 GHz 微波波段 1~2 Mbps 低速 WLAN 的 介质访问控制子层和物理层设计标准。 IEEE 802.11a:无线局域网标准规范,提供 5 GHz 微波波段 54 Mbps 高速 WLAN 的介 质访问控制子层和物理层设计标准。 IEEE 802.11b:无线局域网标准规范,提供 2.4 GHz 微波波段 11 Mbps WLAN 的介质访问控制子层和物理层设计标准。 IEEE 802.11g:无线局域网标准规范,提供 IEEE 802.11a 和 IEEE 802.11b 的兼容标准。 IEEE 802.14:有线电视网标准规范,提供 Cable MODEM 技术所涉及的介质访问控制 子层和物理层设计标准。 在上述规范中,忽略掉了一些不常见的标准规范。尽管 802.5 令牌环网标准规范描述的 是一个停滞了的技术,但它是以太网技术的一个对立面,因此仍然将它列出,以强调以太 网介质访问控制技术的特点。 另外一个曾经红极一时的数据链路层协议标准 FDDI 不是 IEEE 课题组开发的(从名称 上能够看出它不是 IEEE 的成员),而是美国国家标准协会 ANSI 为双闭环光纤令牌网开发 的协议标准。

  • 23
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BinaryStarXin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值