本文簡述一下內容:
- TCP三次握手和四次揮手
- 網絡分析工具tcpdump抓包
No.1 tcp三次握手和四次揮手
---確認ACK, 僅當ACK=1時, 確認號字段才有效. TCP規定在連接建立后所有報文的傳輸都必須把ACK置1
---同步SYN, 在連接建立時用來同步序號. 當SYN=1 ACK=0 表明是連接請求報文, 若同意連接則響應報文中應該使SYN=1 ACK=1
---終止FIN, 用來釋放連接. 當FIN=1表明此報文的發送方的數據已經發送完畢并且要求釋放
三次握手_建立連接
- 第一次握手:Client將標志位SYN置為1, 隨機產生一個值seq=x, 并將該數據包發送給Server, Client進入SYN_SENT狀態, 等待Server確認
- 第二次握手:Server收到數據包后由標志位SYN=1知道Client請求建立連接, Server將標志位SYN和ACK都置為1, ack=x+1, 隨機產生一個值seq=y, 并將該數據包發送給Client以確認連接請求, Server進入SYN_RCVD狀態
- 第三次握手: Client收到確認后, 檢查ack是否為x+1, ACK是否為1, 如果正確則將標志位ACK置為1, ack=y+1并將該數據包發送給Server, Server檢查ack是否為y+1, ACK是否為1, 如果正確則連接建立成功, Client和Server進入ESTABLISHED狀態, 完成三次握手, 隨后Client與Server之間可以開始傳輸數據了
四次揮手_斷開連接
- 第一次揮手:Client發送一個FIN, 用來關閉Client到Server的數據傳送, Client進入FIN_WAIT_1狀態
- 第二次揮手:Server收到FIN后, 發送一個ACK給Client, 確認序號為收到序號+1, Server進入CLOSE_WAIT狀
- 第三次揮手:Server發送一個FIN, 用來關閉Server到Client的數據傳送, Server進入LAST_ACK狀態
- 第四次揮手:Client收到FIN后, Client進入TIME_WAIT狀態, 接著發送一個ACK給Server, 確認序號為收到序號+1, Server進入CLOSED狀態, 完成四次揮手
No.2 網絡分析工具tcpdump抓包
抓取tcp的三次握手
tcpdump -S host 192.168.0.108 and 151.101.100.133
抓取tcp的四次揮手
(算了,懶得寫了)在上方的基礎上斷開連接即可