計算機網絡-詳解TCP三次握手與四次揮手

1.計算機網絡體系結構圖

在這裏插入圖片描述

2.數據鏈路層

  • PPP協議:互聯網用戶通常需要連接到某個ISP才能接入到互聯網。PPP協議就是用戶計算機和ISP進行通信時所使用的數據鏈路層協議(撥號)
  • 網卡:串行到並行的轉換,數據緩存
  • MAC地址:固化在適配器的ROM中

3、網絡層

  • 地址解析協議ARP IP地址到MAC地址的映射
  • 網際控制協議ICMP
  • 網際組管理協議IGMP

4、運輸層

TCP

TCP報文首部格式

在這裏插入圖片描述

三次握手

在這裏插入圖片描述

  • 1、首先創建傳輸控制塊TCB,然後發送SYN報文段(即SYN等於1)同時選擇一個初始序號seq=x,SYN報文段不能攜帶數據,但要消耗一個序號,然後客戶端進程進入同步已發送狀態

  • 2、B收到連接請求報文後,如同意連接,則向A發送確認。確認報文中SYN位和ACK位 都置爲1,確認號ack=x+1,同時爲自己選擇一個初始序號seq=y。這時B進入同步已收到狀態

  • 3、客戶端A收到B的確認後,還要再向B給出確認,確認報文ACK置1,確認號ack=y+1,自己的序號seq=x+1然後A進入已連接狀態

四次揮手

在這裏插入圖片描述

  • 1、A進程先想B發出釋放報文段,並停止發送數據,主動關閉TCP連接,釋放報文段中FIN置1,seq=u(等於它前面報文段中最後一個字節的序號+1),這裏TCP規定FIN報文段即使不攜帶數據,也要消耗一個序號。這是A進入FIN-WAIT1(終止等待1) 狀態

  • 2、B收到連接報文段後即發出確認,然後通知應用進程的上層,因而A->B這個方向的連接就釋放了,這個時候TCP連接處於半關閉狀態,即A已經沒有數據要發了,若B發送數據,A仍要接收。這個狀態可能會持續一段時間。A收到來自B的確認報文後進入FIN-WAIT-2階段

  • 3、若B沒有要向A發送的數據,其應用進程就通知TCP釋放連接。這是B發出釋放報文段,然後進入LAST-ACK(最後確認狀態)等待A確認

  • 4、在A收到確認報文段後,必須對此發出確認。然後進入時間等待狀態,經過2MSL後,A才進入CLOSED狀態,MSL是指最長報文壽命

爲什麼要三次握手

  • 三次握手的目的是建立可靠的通信信道,說到通訊,簡單來說就是數據的發送與接收,而三次握手最主要的目的就是雙方確認自己與對方的發送與接收是正常的。

  • 第一次握手:Client 什麼都不能確認;Server 確認了對方發送正常

  • 第二次握手:Client 確認了:自己發送、接收正常,對方發送、接收正常;Server 確認了:自己接收正常,對方發送正常

  • 第三次握手:Client 確認了:自己發送、接收正常,對方發送、接收正常;Server 確認了:自己發送、接收正常,對方發送接收正常

  • 所以三次握手就能確認雙發收發功能都正常,缺一不可。

參考資料
《計算機網絡》謝希仁
http://www.noobyard.com/article/p-eyqlbiwb-gg.html