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

新夢想IT發表於2019-11-05

新夢想軟體測試


上次我們知道小明把他的床透過了快遞公司運回家裡了,但是快遞的傳送細節並不太清楚。所以關於小明的故事還是得繼續,我們回到小明跟小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是怎麼配合的吧。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69940641/viewspace-2662729/,如需轉載,請註明出處,否則將追究法律責任。

相關文章