传输层
传输层也称为运输层(Transport Layer)。在此层的分组,TCP称为“报文段”,UDP称为“数据报“。
进程到进程的数据交付(多路复用与多路分解)和差错检查是两种最低限度的传输层服务,也是UDP所能提供的仅有的两种服务。
端口号
端口号为一个16比特的值,即范围为 0-65535。其中 0-1023 称为“周知端口号”。
UDP套接字由一个二元组全面标识:目的IP地址、目的端口号。
TCP套接字由一个四元组全面标识:源IP地址、源端口号、目的IP地址、目的端口号。
TCP与UDP的比较
相比TCP,UDP满足:
- 关于发送什么数据以及何时发送的应用层控制更精细
- 无需连接建立
- 无连接状态(无须保存与维护连接状态,节约资源)
- 分组的首部开销小。(TCP:20 Bytes,UDP:8 Bytes)
UDP
报文段格式
- 源端口号 (2 bytes)
- 目的端口号 (2 bytes)
- 长度 (2 bytes)
- 检验和 (2 bytes)
- 应用数据
当一台主机接收一个UDP分组,它的目的端口与运行中的任一UDP套接字都不匹配,则该主机发送一个特殊的ICMP数据报。
可靠数据传输
解决流水线的差错恢复有2种基本方法:
- 回退N步(Go-Back N,GBN),即“滑动窗口协议”(Sliding-Window Protocol)
- 选择重传(Selective Repeat,SR)。选择重传协议通过让发送方仅重传那些它怀疑在接收方出错(即丢失/受损)的分组而避免了不必要的重传。这种个别的、按需的重传要求接收方逐个确认正确接收的分组。对于选择重传协议,其窗口长度必须小于等于序号空间的一半。
TCP
概念
- 发起连接的称为客户,另一方称为服务器。
- TCP可从缓存中取出并放入报文段中的数据数量受限于最大报文段长度MSS(Maximum Segment Size)。MSS通常根据最初确定的由本地发送主机发送的最大链路层帧长度(最大传输单元MTU,Maximum Transmission Unit)。该MSS要保证一个TCP报文段(当封装在一个IP数据报中)加上TCP/IP首部长度(通常为40字节 [TCP首部20字节,IP首部20字节])须能放入单个链路层帧中。以太网和PPP链路层协议都具有1500字节的MTU,因此MSS的典型值为1460字节。注意MSS是指在报文段里应用层数据的最大长度而非指包括首部的TCP报文段的最大长度。