乾貨分享|網路情緣之TCP的握手和分手

新夢想IT發表於2022-05-31



    最近給學員們複習介面測試的時候,有人找到一個面試的時候被問到的問題:“請說明TCP的三次握手。”然後有人笑著回答說:“就是問女朋友‘約嗎’?”女朋友說:“約”,然後再說:“走吧”,這樣的過程。看到這個回答,有點好像理解了,但又不知道理解什麼了的感覺,所以今天我們就來聊一下TCP協議相關的內容吧,希望對大家以後做 有所幫助。

 

    不知道大家有沒有寄大件物品的經歷,比如寄一張床,小明同學肯定有(小明是誰?我也不知道)。有一天小明要給老家寄一張大床,於是去了物流公司,找到客服小MM諮詢。小MM問:“你住哪,要把東西寄到哪裡去?”於是小明趕緊說了自己的情況:“我住長沙五一新幹線1430,寄到湖南省長沙縣某某村222號”

    小MM繼續問:“這個村有很多個收快遞的點,你要放到哪個點呢?”小明想了一下:“放到標有80的快遞點,他們會有人來拿的。”

    小MM說:“我現在還不知道那個地方是不是營業,我先幫你確定一下。”於是她叫了一個小弟說:“你給長沙縣某某村去送個信,說我們要給他們發個快遞,看他們還營業嘛或者有空沒有”小弟聽完就出去了。(不要問為什麼不打電話,因為劇情需要)一個小時後,小弟回來了,說:“他們營業的,有空。”小MM說:“你再跑一趟,告訴他我們知道了,我們就要給他們送個物品過去了。”小弟又出去跑了一趟,小明覺得這個小MM是有點消遣人,讓人家跑三趟,小MM做出解釋:“我們要建立一個可靠的連線通道,不跑三趟怎麼證明我們雙方收件發件沒有問題呢。我們要保證你的東西能寄到的話就一定要這麼做,自己琢磨琢磨就知道了。”看到這裡大家應該差不多知道TCP建立連線的三次握手是怎麼回事了 。

 

 

圖一: wireshark抓取的資料包

 

第一次握手: 192.168.1.105傳送位碼syn=1資料包到119.75.219.45,119.75.219.45由SYN=1知道192.168.1.105要求建立聯機;

第二次握手: 119.75.219.45收到請求後要確認聯機資訊,向192.168.1.105傳送ack , v傳送syn=1,ack=1的確認包;

第三次握手: 192.168.1.105收到後檢查位碼ack是否為1,若正確,192.168.1.105會再發ack=1,119.75.219.45收到後確認seq=seq+1,ack=1則連線建立成功。

 

 

圖二、三次握手

 

    小明的床經過很多次快遞後,終於把所有的零部件都送出去了。這時小MM說:“都發過去了,可以跟那邊不聯絡了。”於是把之前的小弟叫來說:“跟那邊說一下,該發的包都傳送完了。”過了一會,小弟回來說:“他們知道了,有事情會跟我們聯絡的。”過了一會,又有一個小弟過來說:“我們那邊已經沒有事情了,今天的事情結束了,我們會等待半小時,如果你們沒有事情了,半個小時後,就不聯絡了。”小MM很開心說:“那你帶個結束確認信過去,我們也等半小時,如果他們沒有事情,今天就結束了。”小明說:“你們這結束連線也還挺麻煩的。”小MM說:“那是自然,萬一有什麼臨時事情發生呢,這叫四次分手。”

    TCP結束連線需要進行四次對話,雙方確保沒有資料要傳送了,才能斷開連線。

 

 

圖三: wireshark抓取四次揮手的資料包

 

第一次揮手:客戶端 A傳送一個FIN,用來關閉客戶A到伺服器B的資料傳送。

第二次揮手:伺服器 B收到這個FIN,它發回一個ACK,確認序號為收到的序號加1,和SYN一樣,一個FIN將佔用一個序號。

第三次揮手:伺服器 B關閉與客戶端A的連線,傳送一個FIN給客戶端A。

第四次揮手:客戶端 A發回ACK報文確認,並將確認序號設定為收到序號加1。

 

圖四、 TCP資料傳輸的過程

讀書小筆記

2018/12/13

俗話說 “有趣的靈魂萬里挑一”,羅曼老師用講故事的方式講述知識,讓人忍不住一直讀下去,原來枯燥的知識也變的輕鬆有趣起來,感謝羅曼老師為我們講述的“網路情緣”系列的第二個故事,讓我們繼續為羅曼老師打call吧~

乾貨分享|網路情緣之TCP的握手和分手

乾貨分享|網路情緣之TCP的握手和分手

乾貨分享|網路情緣之TCP的握手和分手

乾貨分享|網路情緣之TCP的握手和分手



 


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

相關文章