- IPv4 数据报最大大小是65535(16位),包括IPv4头部。
- IPv6 数据报最大大小是65575,包括40个字节的IPv4头部
- MTU,这是由硬件规定的,如以太网的MTU是1500字节,IPv4要求最小MTU是68字节,IPv6要求最小MTU是576字节
- path MTU: 指两台主机间的路径上最小MTU
- 分片(fragmentation):指ip数据报大小超过相应链路的MTU,IPv4和IPv6都将对ip数据进行分片,到达目的主机后进行重组。
- IPv4头部的DF位用于设置分片还是不分片
- MSS:最大分节大小,向对方TCP通告被通告方在每个分节中能发送的最大TCP数据量。MSS的目的是告诉对方其重组缓冲区大小的实际值,从而避免分片。
TCP(transport control protocol,传输控制协议)
TCP是面向连接的,面向流的,提供高可靠性服务。收发两端(客户端和服务器端)都要有一一成对的socket,因此,发送端为了将多个发往接收端的包,更有效的发到对方,使用了优化方法(Nagle算法),将多次间隔较小且数据量小的数据,合并成一个大的数据块,然后进行封包。这样,接收端,就难于分辨出来了,必须提供科学的拆包机制。即面向流的通信是无消息保护边界的。
TCP报文格式:
UDP(user datagram protocol,用户数据报协议)
UDP是无连接的,面向消息的,提供高效率服务。不会使用块的合并优化算法,, 由于UDP支持的是一对多的模式,所以接收端的skbuff(套接字缓冲区)采用了链式结构来记录每一个到达的UDP包,在每个UDP包中就有了消息头(消息来源地址,端口等信息),这样,对于接收端来说,就容易进行区分处理了。 即面向消息的通信是有消息保护边界的。
UDP是一种保留消息边界的简单的面向数据报的传输协议,它不提供差错纠正\队列管理\重复消除\流量控制和拥塞控制,它是无连接特征的,要比其他传输协议使用更少的开销,广播\组播经常采用UDP.
UDP报文格式:
UDP长度:UDP头部+UDP数据总长度,最小值为8.
UDP校验和:它覆盖了UDP头部\UDP数据和一个伪头部,它由初始发送方计算得到,由最终目的方进行校验,在传输中不会被修改(除非通过一个NET).UDP接收方校验失败直接丢弃报文,不产生ICMP差错消息,但如果接收服务程序未启动,将产生ICPM不可达消息(发送方可获取消息(send return -1))
UDP的"虚"和伪头部
UDP伪头部以及长度补足部分(虚)(将UDP数据包补足16位的整数倍的一个全为0的8位字),伪头部和长度补足部分不会进行传输,长度也不包含在UDP数据包长度字段内,仅是为了校验和而存在的,在校验和中包含伪报头的目的是为了防止目的主机错误地接收存在路由的错误数据报。