TCP/IP数据包在互联网传输过程中,有哪些头会保持不变?

Posted 车小胖谈网络

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TCP/IP数据包在互联网传输过程中,有哪些头会保持不变?相关的知识,希望对你有一定的参考价值。

根据TCP/IP协议和常见实现,两者的哪些头可以在传输过程中保持不变?即对方可以收到哪些确保相同的TCP头字段和IP头字段?那么有哪些可能会在传输中变化?

 

 

 

正文

大型的互联网公司,比如亚马逊、 Google,为了选拔人才,通常会在面试环节选择一些开放性的问题,用于深度考察候选人的技术深度。

 

这是一个非常好的面试题,无法在教科书里找到全部答案,甚至在互联网上也无法找到全部的答案。所以依靠临时突击背题的候选者,在这道问题之前要彻底歇菜了。

 

要想完美回答这道题,需要候选者有非常清晰的概念与积累,这完全凭的是实力!

 

 

  • 初级工程师的回答

 

IP协议头:

 

 

 

归纳一下,可能变化的协议字段:

 

 

  • Type of Service

 

企业网内部、或互联网上运营商,可能会修改该字段(IP Precedence),以实现IP报文的优先级的差异化,进而影响被IP路由器处理该IP报文的优先级。

 

 

  • Time To Live (TTL)

 

IP报文每经过一台三层设备,包括路由器、三层交换机,会将TTL -1

 

为何TTL要减去1

为了防止IP网络的三层环路,通过不断的减1操作,可以将IP报文的TTL最终减到0

 

TTL = 0时,IP报文小命还在吗?

 

不在了!IP路由器用皇上一般的口吻对IP报文幽幽地说:朕赐你死!

 

于是,IP报文就被砍了,消失得无影无踪,再也祸害不了网络环路上的IP路由器!

 

 

如果IP报文不消失,会一直在环路里绕圈圈,与日月同辉!最苦的就是环路上的路由器,永远都无法到达目的地的IP报文,无休止地占用自己的硬件处理资源!

 

当三层环路发生时,TTL1操作,是保护路由器的最后一根稻草!

 

 

  • Source IP Address

 

当企业/家庭内网IP报文,在奔向互联网的时候,需要将内网IP,修改成互联网IP,或公网IP、或全球IP

 

 

  • Destination IP Address

 

在企业网里,当不愿意将互联网上服务器的公网IP,出现在企业网里,往往通过修改该字段来实现。

 

此外,当负载均衡设备将流量分配给某台服务器时,也是通过修改该字段来实现的。

 

 

  • Header Checksum

 

IP Checksum用于校验IP协议头,只要IP协议头有任何字段的变化,Checksum都会相应变化!


 

TCP协议头:

 

 

  • Source Port

 

 

 

  • Destination Port

 

Source Port

 

 

 

  • TCP Checksum

 

TCP Checksum 需要校验保护的字段包括:

 

  1. 1.       TCP报文头

  2. 2.       TCP报文选项

  3. 3.       TCP报文数据

  4. 4.       TCP伪首部

 

只要以上4部分有任何字段的变化,TCP Checksum都会相应变化!

 

让人迷惑的是,TCP伪首部是几个意思?

 

图片就是TCP伪首部的成员组成:

 

 

 

  • 中级工程师的回答

 

变化字段的归纳:

 

  • IP Header Length

 

这个字段代表IP Header + IP Option 长度总和,以4个字节为单位。

 

IPHeader Length = 5,意味着是20个字节,只有20字节的IP Header

IPHeader Length = 15,意味着是60个字节。其中20字节的IP Header40字节的IP Option

 

 

为何这个字段要变?

 

路由器有可能增添或去除IP Option,比如增添“Router AlertOption,毫无疑问会修改IP Header Length



 

Router AlertOption

接收到设置该选项的路由器,会更仔细地检查该IP报文,一般会使用软件来检查IP报文。

 

 

  • IP Total Length

 

IP报文需要分片时,会修改IP报文的总长度。

 

 

  • IP ECN Flag

 

当路由器遭遇拥塞时,通过设置该标志位通知发送方,当前的网络遭遇拥堵状态。

 

 

 

  • IP Flags

 

IP报文需要分片时,会修改IP Flags,比如Last /More Flags来完成分片。

 


 

  • IP Fragment Offset

 

IP报文需要分片时,一定会修改该值,该值的单位为8个字节。

 

 

 

  • TCP Option

 

路由器有可能增添、去除、修改TCP Option,比如修改“TCP MSSOption

 

 

  • TCP Window

 

路由器为了控制双方发送速率,可以通过修改Window来实现。

 

 

  • 高级工程师的回答

 

 如果读者喜欢这篇文章,请帮助转发,也许我会把这部分的回答放出来。:)



愿我的文章帮助更多的同学!

以上是关于TCP/IP数据包在互联网传输过程中,有哪些头会保持不变?的主要内容,如果未能解决你的问题,请参考以下文章

TCP和UDP比較

TCP与UDP协议

TCP和UDP数据包大小限制

TCP/IP网络编程 习题2

TCP/IP通信协议各层内容

互联数据包封装和解封装过程