[ TCP ] : 一個靠譜 Man 的自白

  • >.< 場景導入
    ):
    你跟你的小女朋友打電話,若一直是你的女朋友在說,而你只是在聽。那麼你女朋友會生氣! 爲啥呢? 因爲她感覺你沒有聽她說話,然後覺得你不愛她了。 哈哈 ,通俗一點說就是 打電話時你得 “嗯 , 啊 , 我覺得是這樣…”等,必須 有問有答 才能愉快的聊天。
    ):
    中間有一條河,需要將一邊的貨物扔向另一邊,這時可不能隨意,因爲貨物有多少,扔過去多少,對方接到了多少…雙方都必須要拿一個本子記錄下來。(類比於 tcp 的作用)

  • ?.? TCP報文架構圖
    在這裏插入圖片描述

  • >.< 報文及抓包分析
    在這裏插入圖片描述
    1.port(端口): 不知你有沒有看到圖中 src port 和 Dst port ,一個是你本機的端口,另一個是 web 站點監聽的 port 。(端口號類比於兩棟大樓的單間號,要想大樓之間通信,必須知道對方的房間號才能準確發送)
    ps: 本機(src)端口查看命令 :打開cmd (快捷鍵 win + r 輸入 cmd)
    在這裏插入圖片描述
    2.序號與確認序號(Ack / Seq):

    但你訪問某東時,瀏覽器會將整個頁面通過網絡傳輸到你的電腦上,包括你先在看的這篇文章也是如此。 但數據量太大,一次性不可能全部發完。因此,數據得分段,分包。將部分數據放入網卡緩存中,依次發送。
    在這裏插入圖片描述
    tcp可是一個很靠譜的男人,不存在開完車就不負責任的。即每發完一段數據,都得等對方的 ACK ,才能繼續發送剩下得數據。如圖所示:
    從緩存中發送 [ 1 2 3 ],此時得 Seq(序列號) = 1 , 序列號通俗一點就是一個數據段得第一個字節。) 想想你女朋友跟你說完一句話, 你必須迴應才能代表你在聽她說話。 這個過程也是如此,當收到 [ 1 2 3 ] 後,必須用 確認號 迴應,表示收到你所發的數據,可以繼續發送。此時得 ACK( 確認號)=4.
    或者還不理解,你就這樣想: (發送方:)序號是發送數據段得第一個字節,在進行段組裝成包時用於定位作用。 (接收方:)確認號是收到數據段末尾一個字節自增(+1)。【讓發送者下次應該發哪段數據】

    3.數據偏移:

    在 Tcp 報文中,用於區分TCP首部和 TCP 數據部分。
    在這裏插入圖片描述

    4.保留:

    字面意思,也就是這部分是一片真理得大海,等着你來挖掘。

    5.字母部分:
    在這裏插入圖片描述

    先了解每一列字母組合起來得作用:

    狀態位 作用
    URG 提高數據包優先級(優先級高則先發)
    ACK 數據應答
    PSH 接收端讓優先級高的包先插隊進行處理
    RST 重新連接(網絡異常)
    SYN 發起連接(訪問某東時,或別的web站點)
    FIN 結束連接

    5.窗口:
    TCP 的窗口分爲: 接收窗口,發送窗口,擁塞窗口等。你只需要知道窗口用於流量控制,擁塞控制。
    如果你對TCP如何實現流量控制感興趣(可以點擊下面的鏈接):
    ---------------------兩個控制傳送門 >.< ----------------------------------

    6.校驗和:
    顧名思義,用於數據校對用。通俗點說,就是看看有啥數據傳錯了沒。

    7.緊急指針:
    和 URG 狀態位配合使用。 發送一個非常着急的數據包時,要想快速發出,必須插隊排在緩存出口處,也必須標記(緊急指針的作用)這個數據段在整個包內的位置。不然接收方收到,無法拼接成完成的數據包。

    8.可變部分:
    選項,和填充部分一般很少用到,這裏就不在贅述。

----------------------------------》.《---------------------------------------------------------
=.= 總結:
順序問題,穩重不亂。
丟包問題,承諾靠譜。
連接維護,有始有終。
流量控制,把握分寸。
擁塞控制,激流勇進。

-.- 課後連接傳送門 :
ICMP/IP 協議,網絡世界的偵察兵

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章