TCP三次握手和四次揮手

三次握手

1.客戶端發送 SYN(SEQ=x)報文給服務器端,進入 SYN_SEND 狀態。
2.服務器端收到 SYN 報文,迴應一個 SYN (SEQ=y)ACK(ACK=x+1)報文,進入 SYN_RECV 狀態。
3.客戶端收到服務器端的 SYN 報文,迴應一個 ACK(ACK=y+1)報文,進入 Established 狀態。

打電話例子:
A:“喂,你聽得到嗎?” A->SYNSEND
B:“我聽得到呀,你聽得到我嗎?” 應答與請求同時發出 B->SYN_RCVD | A->ESTABLISHED
A:“我能聽到你,今天 balabala……” B->ESTABLISHED

四次揮手

1.某個應用進程首先調用 close,稱該端執行“主動關閉”(active close)。該端的 TCP 於是發送一個 FIN 分節,表示數據發送完畢。
2.接收到這個 FIN 的對端執行 “被動關閉”(passive close),這個 FIN 由 TCP 確認。
3.一段時間後,接收到這個文件結束符的應用進程將調用 close 關閉它的套接字。這導致它的 TCP 也發送一個 FIN。
4.接收這個最終FIN的原發送端 TCP(即執行主動關閉的那一端)確認這個 FIN。 既然每個方向都需要一個 FIN 和一個 ACK,因此通常需要 4 個分節。

打電話例子:
A:“喂,我不說了。” A->FIN_WAIT1
B:“我知道了。等下,上一句還沒說完。Balabala…..” B->CLOSE_WAIT | A->FIN_WAIT2
B:”好了,說完了,我也不說了。” B->LAST_ACK
A:”我知道了。” A->TIME_WAIT | B->CLOSED

爲什麼TCP連接只要三次而釋放需要四次呢?

這是由於TCP的半閉造成,因爲TCP連接是全雙工,所以進行關閉時每個方向都需要單獨關閉,這個單方向的關閉叫做半關閉。當一方完成它數據發送任務的時候,就發送一個FIN來向另一方通告對方我將要終止這個方向的連接。

TCP的狀態(SYN,FIN,ACK,PSH,RST,URG)

1.SYN(synchronous):建立連接
2.FIN(finish):結束連接
3.ACK(acknowledgement):確認
4.PSH(push):傳送
5.RST(reset):重置
6.URG(urgent):緊急

常用的TCP端口及功能

端口 協議 說明
21 FTP FTP服務器所開放的控制端口
23 TELNET 用於遠程登錄,可以遠程控制管理目標計算機
25 SMTP SMTP服務器開放的端口,用於發送郵件
80 HTTP 超文本傳輸協議
110 PoP 用於郵件的接受

常用的UDP端口號及功能

端口 協議 說明
69 TFTP 簡單的文件傳輸協議
111 RPC 遠程過程調用
123 NTP 網絡時間協議
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章