详解TCP协议三次握手四次挥手
三次握手:
三次握手表示建立通信階段,在TCP協議中,在發送數據的準備階段,客戶端與服務器之間的三次交互,以保證連接的可靠,由于這種面向連接的特性, TCP協議可以保證傳輸數據的安全,所以應用十分廣泛。例如上傳文件、下載文件、瀏覽網頁等
第一次握手,客戶端向服務器端發出連接請求,等待服務器確認(客:我就蹭蹭不進去)
第二次握手,服務器端向客戶端回送一個響應,通知客戶端收到了連接請求(服:行)
第三次握手,客戶端再次向服務器端發送確認信息,確認連接 完成三次握手,連接建立后,客戶端和服務器就可以開始進行數據傳輸了。(客:開始了哦)
| SYN(synchronous) | 建立連接 |
| ACK(acknowledgement) | 連接確認 |
| PSH(push) | 傳送 |
| FIN(finish) | 結束 |
| RST(reset) | 重置 |
| URG(urgent) | 緊急 |
| Sequence number | 順序號碼 |
| Acknowledge number | 確認號碼 |
建立連接(三次握手)的過程:
客戶端發出段3,對服務器的連接請求進行應答,確認序號是8001。在這個過程中,客戶端和服務器分別給對方發了連接請求,也應答了對方的連接請求,其中服務器的請求和應答在一個段中發出。因此一共有三個段用于建立連接,稱為“三方握手”。在建立連接的同時,雙方協商了一些信息,例如,雙方發送序號的初始值、最大段尺寸等。
數據傳輸的過程:
在數據傳輸過程中,ACK和確認序號是非常重要的,應用程序交給TCP協議發送的數據會暫存在TCP層的發送緩沖區中,發出數據包給對方之后,只有收到對方應答的ACK段才知道該數據包確實發到了對方,可以從發送緩沖區中釋放掉了,如果因為網絡故障丟失了數據包或者丟失了對方發回的ACK段,經過等待超時后TCP協議自動將發送緩沖區中的數據包重發。
四次揮手:
所謂四次揮手(Four-Way-Wavehand)即終止TCP連接,就是指斷開一個TCP連接時,需要客戶端和服務端總共發送4個包以確認連接的斷開。在socket編程中,這一過程由客戶端或服務器任一方執行close來觸發。
客戶端向服務器發出取消連接請求
服務器向客戶端返回一個響應,表示收到請求
服務器向客戶端發出確認取消請求
客戶端再次確認連接取消
為什么握手只有三次,揮手卻要四次
因為握手的時候兩端沒有連接,只要確認連接就行
但是揮手的時候是已經連接了,這個時候服務器要在第二次握手以后處理最后的數據,處理完最后數據跟客戶端確認了才能取消
關閉連接(四次握手)的過程:
由于TCP連接是全雙工的,因此每個方向都必須單獨進行關閉。這原則是當一方完成它的數據發送任務后就能發送一個FIN來終止這個方向的連接。收到一個 FIN只意味著這一方向上沒有數據流動,一個TCP連接在收到一個FIN后仍能發送數據。首先進行關閉的一方將執行主動關閉,而另一方執行被動關閉。
建立連接的過程是三次握手,而關閉連接通常需要4個段,服務器的應答和關閉連接請求通常不合并在一個段中,因為有連接半關閉的情況,這種情況下客戶端關閉連接之后就不能再發送數據給服務器了,但是服務器還可以發送數據給客戶端,直到服務器也關閉連接為止。
總結
以上是生活随笔為你收集整理的详解TCP协议三次握手四次挥手的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android module 引用lib
- 下一篇: android新建多个java,Java