【新夢想幹貨連載】網絡情緣之TCP的分包處理

新夢想軟件測試

上次我們知道小明把他的牀通過了快遞公司運回家裏了,但是快遞的發送細節並不太清楚。所以關於小明的故事還是得繼續,我們回到小明跟小MM對話的場景,當小MM確定好接收點正常營業之後,故事是怎麼進行的。

Part 1

小MM說:”你的東西呢,拿過來看看啊”。小明指着外面的牀說:“那就是了”。小MM說:“那麼個東西,我們可沒有這麼大的箱子,要把牀拆了,一個一個小包的送過去”。小明沒有辦法,只能把牀都拆散了。然後再包成一個一個小箱子。小MM在每個箱子上按順序貼上快遞單號:“到時候讓你家裏人按編號組裝起來就行了”。然後叫來快遞員把1號至4號箱子裝上三個車。小明比較奇怪爲什麼不一次全部發過去。小MM說:“這是規定一次只發三個”。小明擔心的問:“萬一路上出了什麼事故怎麼辦。”小MM說:“我們送快遞是有時間限制的,如果在規定的時間內沒有收到回覆,那你就去買一個一模一樣的零部件回來重新發一次過去”。

新夢想軟件測試新夢想軟件測試
圖一:wireshark抓包的結果

Part 2

在小明覺得可能不太靠譜的時候,小明總算收到了1號箱送達的回覆,3號箱的回覆。但是沒有2號箱子的回覆。小MM說:“沒事,2號肯定是收到了,不然不會發3號箱子的確認回覆。估計只是回覆消息在路上出了什麼事情了”。再發接來的3個箱子就是了。於是小MM又把4號,5號,6號箱子發出去了,然後重新啓動計時,但是時間都過去了4號,5號,6號回覆信息都沒有收到,小明這下緊張了,趕緊問一下:“怎麼還沒有收到回覆?”,小MM說:“現在不知道原因,肯定是出問題了,你去買這幾個零部件,一模一樣的,然後再發一次”。小明覺得這也太坑了點,但是人家快遞公司可不管,沒辦法,趕緊去買回來,然後重新發送了出去。經過多次折騰後,總算是把牀全部發了出去,然後收到牀已經組裝成功的消息。

新夢想軟件測試
圖二:wireshark抓包服務器給客戶端的響應

Part 3

通過這個過程大家應該知道,TCP的每個數據包的大小是有限制的,當數據超大的時候,就會切分成多個包進行傳輸。每個數據包的發送出去以後就會收到消息確認,而且消息確認是有順序的。TCP的可靠性就是通過消息確認和數據包超時重傳來保證的,當然還有一些其它的措施。

大家瞭解過傳輸協議的話應該知道,TCP協議有一個不太靠譜的兄弟叫做UDP(用戶數據報)協議。爲啥不靠譜,因爲他不建立連接。他也不太去管對方是否會收到數據,只管發送數據。那這兩個協議分別用在什麼場景呢?

你覺得你什麼時候會比較關注延時和數據質量問題。有想到的麼?

一般情況下,要求文件準確無誤的傳送給對方的就會使用TCP協議,應用層很多都是的,比如:HTTP協議,FTP協議,QQ文件傳輸,郵件傳輸等。而UDP協議的使用有:QQ語音,QQ視頻。你可以想象一下,當你跟朋友視頻或者語音的時候,如果因爲一點點沒有聽清楚,對方就一直重複一直重複。整個過程多麼慘不忍睹。當然UDP有它的優點:速度快。
新夢想軟件測試
既然HTTP是用的TCP協議,那下次我們就來說一說HTTP與TCP是怎麼配合的吧。

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