tcp的三次握手四次揮手

wKioL1fnIvTyo1TfAAFB0fMhi1k831.png-wh_50

在這個例子中,首先客戶端主動發起鏈接、發送請求,而後服務器端響應請求,而後客戶端主動 關 閉鏈接。兩條豎線表示通信的兩端,從上到下表示時間的前後順序,注意,數據從一端傳到 網絡的 另外一端也須要時間,因此圖中的箭頭都是斜的。雙方發送的段按時間順序編號爲1-10, 各段中的主 要信息在箭頭上標出,例如段2的箭頭上標着SYN, 8000(0), ACK 1001, <mss 1024>, 表示該段中 的SYN位置1,32位序號是8000,該段不攜帶有效載荷(數據字節數爲0),ACK位置 1,32位確認 序號是1001,帶有一個mss選項值爲1024。  服務器

創建鏈接的過程:   網絡

1.客戶端發出段1,SYN位表示鏈接請求。序號是1000,這個序號在網絡通信中用做臨時的地址,每發一個數據字節,這個序號要加1,這樣在接收端能夠根據序號排出數據包的正 確順 序,也能夠發現丟包的狀況,另外,規定SYN位和FIN位也要佔個序號,此次雖然沒 發數 據,可是因爲發了SYN位,所以下次再發送應該用序號1001。mss表示最大段尺寸, 若是個段太大,封裝成幀後超過了鏈路層的最大幀長度,就必須在IP 層分片,爲了避 免這種情 況,客戶端聲明本身的最大段尺寸,建議服務器端發來的段不要超過這個長度。 ide

2.服務器發出段2,也帶有SYN位,同時置ACK位表示確認,確認序號是1001,表示「我接收到序號1000及其之前全部的段,請你下次發送序號爲1001的段」,也就是應答了客戶端 的鏈接 請求,同時也給客戶端發出個鏈接請求,同時聲明最大尺寸爲1024。 spa

3.客戶端發出段3,對服務器的鏈接請求進行應答,確認序號是8001。在這個過程當中,客戶端和服務器分別給對方發了鏈接請求,也應答了對方的鏈接請求,其中服務 器 的請求和應答在個段中發出,所以共有三個段用於創建鏈接,稱爲'''三握(three-way-  handshake)'''。在創建鏈接的同時,雙方協商了些信息,例如雙方發送序號的初始值、最大段 尺寸等。  在TCP通信中,若是一方收到另外一方發來的段,讀出其中的目的端口號,發現本機並無任何進 程 使用這個端口,就會應答一個包含RST位的段給另外一方。例如,服務器並無任何進程使用 8080端 口,咱們卻用telnet客戶端去鏈接它,服務器收到客戶端發來的SYN段就會應答一個RST 段,客戶 端的telnet程序收到RST段後報告錯誤Connection refused:  blog

數據傳輸的過程:   three

  1. 客戶端發出段4,包含從序號1001開始的20個字節數據.進程

  2. 服務器發出段5,確認序號爲1021,對序號爲1001-1020的數據表示確認收到,同時請求發 送 序號1021開始的數據,服務器在應答的同時也向客戶端發送從序號8001開始的10個 字節數 據,這稱爲piggyback 。  ci

  3. 客戶端發出段6,對服務器發來的序號爲8001-8010的數據表示確認收到,請求發送序號 8011開始的數據。在數據傳輸過程當中,ACK和確認序號是很是重要的,應用程序交給TCP協議發送的數據會暫存 在TCP層的發送緩衝區中,發出數據包給對方以後,只有收到對方應答的ACK段才知道該數據 包確 實發到了對方,能夠從發送緩衝區中釋放掉了,若是由於網絡故障丟失了數據包或者丟失 了對方發 回的ACK段,通過等待超時後TCP協議自動將發送緩衝區中的數據包重發。  get

這個例子只描述了最簡單的一問一答的情景,實際的TCP數據傳輸過程能夠收發不少數據段, 雖然 典型的情景是客戶端主動請求服務器被動應答,但也不是必須如此,事實上TCP協議爲應 用層提供 了全雙工(full-duplex)的服務,雙方均可以主動甚至同時給對方發送數據。  若是通信過程只能採用一問一答的方式,收和發兩個方向不能同時傳輸,在同一時間只容許一 個方 向的數據傳輸,則稱爲'''半雙工(half-duplex)''',假設某種面向鏈接的協議是半雙工的,則只 須要 一套序號就夠了,不須要通信雙方各自維護一套序號,想想爲何。  it

關閉鏈接的過程: 

  1. 客戶端發出段7,FIN位表示關閉鏈接的請求。

  2. 服務器發出段8,應答客戶端的關閉鏈接請求。

  3. 服務器發出段9,其中也包含FIN位,向客戶端發送關閉鏈接請求。  

  4. 客戶端發出段10,應答服務器的關閉鏈接請求。  

  創建鏈接的過程是三方握手,而關閉鏈接一般須要4個段,服務器的應答和關閉鏈接請求一般 不合 並在一個段中,由於有鏈接半關閉的狀況,這種狀況下客戶端關閉鏈接以後就不能再發送 數據給服 務器了,可是服務器還能夠發送數據給客戶端,直到服務器也關閉鏈接爲止,稍後會 看到這樣的例 子。  

相關文章
相關標籤/搜索