IP协议八股
子网掩码的作用
用来标识网络号和主机号的范围
为什么IP协议需要分片
因为对于数据链接层而言,由于物理网卡的限制,导致最大传输单元MTU不能超过1500字节,那么当网络层的数据大于1500字节时,就需要对数据进行分片,这个分片是由IP协议来做的。
IP协议什么时候需要分片
当IP数据包的总长度 > MTU时,就需要分片传输,为了满足数据链路层MTU的要求
IP协议是怎么进行分片的
例如,当前传输层的数据大小是2000字节,那么这个传输层的数据传递给网络层后,由于超过了数据链路层的MTU1500字节,所以IP协议对这2000字节进行分片,IP包头+1000,和IP包头+1000,分为两个片,就是这样进行分片的,将该分片之后的数据传递给数据链路层。
那么IP协议是如果进行标识属于同一个分片呢?
确定是否是属于同一个分片:16位标识符
确定是否进行了分片:3位标志
确定该包属于整个分片的相对位置:13位片偏移
TCP协议和UDP协议将数据交给IP协议之后,是否需要分片传输?
TCP协议将数据交给IP协议之后,IP协议不需要分片传输:
原因:TCP在三次握手的时候会协商MSS,最大报文段长度,而MSS + TCP头部 + IP头部 <= MTU,因此MSS一定是小于MSS的,所以会天然满足MTU的要求,所以TCP协议数据是不需要让IP协议进行分片传输的
而对于TCP来说,先设置一个MSS,就会确保该数据包不会被IP协议分片,那么就防止TCP整个数据包的丢失而进行重传
UCP协议将数据交给IP协议之后,IP协议是否需要分片传输?看情况:
如果IP包头+UDP数据包 > MTU ,那么就需要进行分片
如果IP包头+UDP数据包 < MTU ,那么就不需要进行分片