计算机网络:传输层(上)

161 阅读2分钟

日新计划6月更文 Day 8

  传输层(Transport Layer)位于应用层之下网络层之上,使用端口区分一台主机上的不同连接,双方通信的数据单元是段(Segment)。

  发送方将应用层的报文分割为段,通过下面的网络层进一步处理后进行传输,在接收端的传输层重新组成报文,回到应用层。

  传输层使用端口(port)来区分同一主机上的不同进程,端口分为为0~65535(2^16-1)。其中 0~1023 是公认端口,被许多重要的服务使用;1024~49151 是注册端口,分配给某些应用服务;49152~65535 是私有端口。

  传输层的主要通信协议是 UDP 和 TCP。UDP(User Datagram Protocol,用户数据报协议)是一种无连接(connectionless)、无序(unordered )、不可靠(unreliable)、尽力而为(best-effort)的对 IP 协议简单扩展的协议;TCP(Transport Control Protocol,传输控制协议)是一种面向连接的、按序交付的、可靠的通信协议,TCP 还提供了拥塞控制(congestion control)、流量控制(flow control)等功能。

  TCP/UDP 的数据段起始处为源端口(source port)与目的端口(dest port),共 32 bits,后面是其他头部属性(header fields)与 应用层的数据报。

  UDP 是无连接、不可靠的通信协议,但由于其实现简单,常用于一些对时效性要求高但对数据完整性要求不高(如在线视频)和传输数据量较小(如 DNS 等)的领域。

  UDP(User Datagram Protocol,用户数据报协议)「RFC 768」虽然是无连接、不可靠的,但 UDP 也对数据段进行校验和(checksum)检验:UDP 报文在源端口与目的端口后还有各 16 bits 的载荷长度(length)与校验和数据。校验和的计算方法如下:

  • 将载荷看成多个 16 bits 的整数,将其相加
  • 将超过 16 位的进位除以 2^16 后与结果相加
  • 将得到的 16 位数按位取反,作为 checksum

  对于 UDP,checksum 与受到的数据不符时,该包会被丢弃。