苑秀雲
“我是喲喲吼說科技,專注於數據網絡的回答,歡迎大家與我交流數據網絡的問題”
如題,數據包在互聯網傳輸的過程如下圖:
通過上圖來看,數據包在傳輸中主要是在TCP字段和IP字段可能會發生變化,下面喲喲分別來介紹:
TCP字段內:
1、源端口(Source Port):在有PAT設備時,會變
2、TCP Checksum:若覆蓋字段變化,那麼就會跟著變化
3、MSS option:為避免分片,默認是以最大值來定義,但可以通過雙向overwrite去定義此選項
IP字段內:
1、服務類型(TOS):數據包發送至運營商的網絡內,可以根據SLA去增加、減小或者清0
2、標誌(DF):在數據包分片時會變
3、TTL:在運營商網絡過的每一跳都會進行減1操作
4、源IP地址(Source IP):在NAT操作後會發生變化
5、目的IP地址(Destination IP):同樣是在NAT操作時,可能用於load balance到多臺服務器上,因此可能會發生變化
6、IP Checksum:在TTL進行減1操作時,這個字段會根據此變化而變化
歡迎大家多多關注我,在下方評論區說出自己的見解。
喲喲吼說科技
初級工程師的回答
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報文,無休止地佔用自己的硬件處理資源!
當三層環路發生時,TTL減1操作,是保護路由器的最後一根稻草!
Source IP Address
當企業/家庭內網IP報文,在奔向互聯網的時候,需要將內網IP,修改成互聯網IP,或公網IP、或全球IP。
Destination IP Address
在企業網裡,當不願意將互聯網上服務器的公網IP,出現在企業網裡,往往通過修改該字段來實現。
此外,當負載均衡設備將流量分配給某臺服務器時,也是通過修改該字段來實現的。
Header Checksum
IP Checksum用於校驗IP協議頭,只要IP協議頭有任何字段的變化,Checksum都會相應變化!
TCP 協議頭:
Source Port
當做網絡地址轉換時,單單做IP地址的替換是不夠的,需要藉助Source Port來唯一識別用戶的TCP會話。
Destination Port
同Source Port。
TCP Checksum
TCP Checksum 需要校驗保護的字段包括:
1. TCP報文頭
2. TCP報文選項
3. TCP報文數據
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 Header,40字節的IP Option。
為何這個字段要變?
路由器有可能增添或去除IP Option,比如增添“Router Alert”Option,毫無疑問會修改IP Header Length。
“Router Alert”Option
接收到設置該選項的路由器,會更仔細地檢查該IP報文,一般會使用軟件來檢查IP報文。
IP Total Length
當IP報文需要分片時,會修改IP報文的總長度。
IP ECN Flag
當路由器遭遇擁塞時,通過設置該標誌位通知發送方,當前的網絡遭遇擁堵狀態。
當IP報文需要分片時,會修改IP Flags,比如Last /More Flags來完成分片。
IP Fragment Offset
當IP報文需要分片時,一定會修改該值,該值的單位為8個字節。
TCP Option
路由器有可能增添、去除、修改TCP Option,比如修改“TCP MSS”Option。
TCP Window
路由器為了控制雙方發送速率,可以通過修改Window來實現。
高級工程師的回答
如果讀者喜歡這篇文章,請幫助轉發,也許我會把這部分的回答放出來。:)
車小胖談網絡
我覺得唯有數據包不會變,其餘的表頭尾部會被層層封裝和解封裝。按照OSI或者TCPIP模型,數據包都是被層層加了表頭和尾部,比如應用層產生數據, 傳輸層把數據分段壓縮加密等操作變成段,下傳到網絡層會加入源、目的IP變成包,數據鏈路層加入MAC源、目的地址變成幀。然後通過網線變成比特流。
然後對方網線收到了 會解封裝數據鏈路層加的MAC地址識別轉發,然後網絡層解封裝網絡層加的表頭尾部,就像這樣,一個數據包封裝下來,收到又解封裝上去,然後被對方應用軟件識別到裡面的數據。
…………………………………………………
來自於業務垃圾佬的回覆