**:
tcp(
(transmission control protocol
)傳輸控制協議,是乙個面向連線的協議。在運用此協議進行資料傳輸前都會進行連線的建立工作(三次握手);當資料傳輸完畢,連線的雙方都會通知對方要釋放此連線(四次揮手)。
三次握手過程:
第一次握手:host1傳送乙個tcp標誌位
syn=1
、ack=0的資料報給host2,並隨機會產生一
個sequence number=3233.當host2接收到這個資料後,host2由syn=1可知客戶端是想要建立連線;
第二次握手:host2要對客戶端的聯機請求進行確認,向host1傳送應答號
ack=1
、syn=1、
確認號a
cknowledge number=3234,此值是host1的序列號加1,還會產生乙個隨機的序列號
sequence number=36457,這樣就告訴host1可以進行連線;
第三次握手:host1收到資料後檢查acknowledge number是否是3233+1的值,以及ack的值是否為1,若為1,host1會傳送ack=1、確認號碼
acknowledge number=36457,告訴host2,你的請求連線被確認,連線可以建立。
四次揮手過程:
第一次揮手:當傳輸的資料到達尾部時,host1向host2傳送fin=1標誌位;可理解成,host1向host2說,我這邊的資料傳送完成了,我準備斷開了連線;
第二次揮手:因tcp的連線是全雙工的雙向連線,關閉也是要從兩邊關閉;當host2收到host1發來的fin=1的標誌位後,host2不會立刻向host1傳送find=1的請求關閉資訊,而是先向host1傳送乙個ack=1的應答資訊,表示:你請求關閉的請求我已經收到,但我可能還有資料沒有完成傳送,你再等下,等我資料傳輸完成了我就告訴你;
第三次揮手:host2資料傳輸完成,向host1傳送fin=1,host1收到請求關閉連線的請求後,host1就明白host2的資料已傳輸完成,現在可以斷開連線了,
第四次揮手:host1收到find=1後,host1還是怕由於網路不穩定的原因,怕host2不知道他要斷開連線,於是向host2傳送ack=1確認資訊進行確認,把自己設定成time_wait狀態並啟動定時器,如果host2沒有收到ack,host2端tcp的定時器到達後,會要求host1重新傳送ack,當host2收到ack後,host2就斷開連線;當host1等待2mls(2倍報文最大生存時間)後,沒有收到host2的重傳請求後,他就知道host2已收到了ack,所以host1此時才關閉自己的連線。這一點我覺得設計得非常巧妙!
整個過程host1端所經歷的狀態如下:
host2所經歷的過程如下:
總結:以前對tcp的三次握手與四次揮手沒有進行深入的理解,只是一知半解,現在參照網上的一些資料寫了此博文,對此知識點有了深刻認識。
在tcp連線的建立與釋放的過程中,host1與host2並沒有嚴格的客戶端與伺服器之分,誰先發起請求,那就是客戶端。
tcp ip三次握手與四次揮手
原文 所謂三次握手 three way handshake 即建立tcp連線,就是指建立乙個tcp連線時,需要客戶端和服務端總共傳送3個包以確認連線的建立。在socket程式設計中,這一過程由客戶端執行connect來觸發。1 第一次握手 client將標誌位syn置為1,隨機產生乙個值seq j,...
TCP IP三次握手 四次揮手
一 tcp ip三次握手原理 建立連線協議 三次握手 1 客戶端向伺服器端傳送連線請求包syn syn j 等待伺服器回應 2 伺服器端收到客戶端連線請求包syn syn j 後,將客戶端的請求包syn syn j 放入到自己的未連線佇列,此時伺服器需要傳送兩個包給客戶端 1.向客戶端傳送確認自己收...
TCP IP三次握手 四次揮手
我們在使用網際網路和別的 進行通訊的時候,都要依賴tcp ip協議。甚至有時候網不太好,瀏覽器會顯示當前狀態 正在與某某 握手.當網路狀態很好的時候,就會一閃而過。本文將詳細總結筆者在學習三次握手四次揮手時的各個狀態以及過程。首先,狀態圖如下。初始時,客戶端和服務端都是closed狀態。這時,客戶端...