程序员社区

如果你是ip,你会怎么选

如果你是网络层,你更喜欢icmp、tcp、udp三种报文中的哪一个?

如果你了解MTU和MSS,那你应该很容易做出选择

就像选择对象一样,你首先要了解对方是谁,有什么优缺点,能给你带来什么

ICMP

Internet Control Message Protocol,IP层的一个组成部分,主要用来传递差错报文以及其他需要注意的信息

在这里插入图片描述

icmp虽然也属于网络层,但是它并不“在乎”网络层是否太忙,压力太大,它只把自己的东西交给IP,由IP自行处理

如果你是ip,你会怎么选插图1

好吧,IP累死累活地把数据切割了以后,终于发送了出去。接收方的网络层又有的烦了

这里的udp应该是icmp

由于ip在分片时像切香肠一样,icmpHeader只存在于第一个包里,其他的包并没有icmpHeader,所以当这些切割好的ip包到达网络层,不能直接送给icmp,需要在网络层进行重组,重组成一个完整的icmpHeader+Data,才能送给icmp

UDP

UDP是网络层上面的传输层的一个协议,UDP也是一个不可靠的粗人,所以它如果有什么东西想交给IP,它会是这样

在这里插入图片描述

这样还没有完,当网络层接收到这些分割后的数据,想要发给udp时,udp又说了

在这里插入图片描述

和icmp一样,udp报文在网络层分片成ip包时,也是第一个ip包里有udp头,其他都没有,如果这样发给udp,udp并不能识别,所以需要在网络层重组好

TCP

TCP是网络层上面的传输层的另一个协议,和UDP的不可靠不同,TCP不止可靠,还非常的绅士

在这里插入图片描述

tcp非常绅士,它在发送东西给ip前,会自己去确定最大MTU,计算出自己每次最大传输量MSS,然后自己把数据分割,保证ip收到后不需要再分片

而网络层收到后,也不必须重组才能交给tcp

在这里插入图片描述

tcp收到ip发来的数据,发现每条数据都携带了tcp头,它自然可以处理,不需要再麻烦ip帮忙重组,最后甚至还礼貌地和ip说了句谢谢

如果你是ip,你会怎么选?


赞(0) 打赏
未经允许不得转载:IDEA激活码 » 如果你是ip,你会怎么选

相关推荐

  • 暂无文章

一个分享Java & Python知识的社区