天天看點

傳輸層協定基礎(三次握手&四次揮手)

目标:

TCP協定及TCP協定的構造

TCP協定可靠傳輸的實作

UDP協定的概念與作用

傳輸層

  1. 傳輸層建立管理維護本段到對端的連結
  2. 傳輸層主要包含兩種協定:TCP與UDP

    端口号

    端口是傳輸層,TCP或UDP來識别服務的

    0~1024之間的端口号為通用端口,遵循相同的标準化方法;

    1024~49151之間的端口為注冊端口,用于特定用途;

    49151~65535之間的 端口為動态端口,供任何需求的應用程式使用

TCP協定

TCP

TCP/IP協定不是TCP和IP這兩個協定的合稱,而是指網際網路整個TCP/IP協定族。

從協定分層模型方面來講,TCP/IP由四個層次組成:網絡接口層、網絡層、傳輸層、應用層。

TCP協定:即傳輸控制協定,它提供的是一種可靠的資料流服務。當傳送受差錯幹擾的資料,或舉出網絡故障,或網絡負荷太重而使網際基本傳輸系統不能正常工作時,就需要通過其他的協定來保證通信的可靠。TCP就是這樣的協定。TCP采用“帶重傳的肯定确認”技術來實作傳輸的可靠性。并使用“滑動視窗”的流量控制機制來高網絡的吞吐量。TCP通信建立實作了一種“虛電路”的概念。雙方通信之前,先建立一條連結然後雙方就可以在其上發送資料流。這種資料交換方式能提高效率,但事先建立連接配接和事後拆除連接配接需要開銷。

傳輸層控制協定TCP

面向連接配接的,可靠的傳輸層協定傳輸資料之前,要先建立連接配接有可靠的傳輸機制

TCP包格式

傳輸層協定基礎(三次握手&四次揮手)

可靠傳輸的實作

滑動視窗

傳輸層協定基礎(三次握手&四次揮手)

圖解:每次隻能發送大小=20的資料 多餘的資料不允許發送,等發送的資料并收到确認了.然後後面資料頂上滿20後,後面的資料停止發送

逾時重傳:

介紹了發送方如果收不到确認的情況,會停止等待,并且逾時重傳.

流量控制:

滑動視窗越大,發送速度也就越大,TCP可以使用滑動視窗的大小來進行控制速度,進而控制流量

傳輸層協定基礎(三次握手&四次揮手)

三次握手:

三次握手的目的:消除舊有連接配接請求的列号和确認号并交換TCP視窗大小資訊

四次揮手:

由于TCP的半關閉特性,TCP連接配接時(全雙傳遞)是以每個方向必須單獨的進行關閉.

**原則:**當一方完成他的資料發送任務後就能發送一個當一端收到一個FIN後,它必須通知應用層另一端已經收到一個FIN意味着在這乙方向上沒有資料流動了,保受對方發送的資料

《《《《《《三次握手四次揮手的過程及圖解放到文章最後》》》》》》

UDP協定:

UDP(資料封包協定)

UDP是面向資料報的傳輸層協定

UDP的不可靠性:把應用程式傳給IP層的資料發送出去,但并不保證他們能達到目的

UDP的封裝:

傳輸層協定基礎(三次握手&四次揮手)

主要講述的是

1、TCP三向交握原理。

2、TCP四次揮手原理,為什麼要四次揮手。

TCP三向交握原理:

首先,給張圖檔,建立TCP三向交握的直覺印象。

傳輸層協定基礎(三次握手&四次揮手)
每次握手(發送資料請求或應答)時,發送的資料為TCP封包,TCP段包含了源/目的位址,端口号,初始序号,滑動視窗大小,視窗 擴大因子,最大封包段長度等。還有一些标志位:
(1)SYN:同步序号
(2)ACK:應答回複
(3)RST:複位連接配接,消除舊有的同步序号
(4)PSH:盡可能的将資料送往接收程序
(5)FIN:發送方完成資料發送
(6)URG
           

從圖中,可以看出三次握手的基本步驟是:

第一次握手:用戶端向伺服器端發送連接配接請求包SYN(syn=j),等待伺服器回應;

第二次握手: 伺服器端收到用戶端連接配接請求包SYN(syn=j)後,将用戶端的請求包SYN(syn=j)放入到自己的未連接配接隊列,此時伺服器需要發送兩個包給用戶端;

  (1)向用戶端發送确認自己收到其連接配接請求的确認包ACK(ack=j+1),向用戶端表明已知道了其連接配接請求

  (2)向用戶端發送連接配接詢問請求包SYN(syn=k),詢問用戶端是否已經準備好建立連接配接,進行資料通信;

  即在第二次握手時伺服器向用戶端發送ACK(ack=j+1)和SYN(syn=k)包,此時伺服器進入SYN_RECV狀态。

第三次握手:用戶端收到伺服器的ACK(ack=j+1)和SYN(syn=k)包後,知道了伺服器同意建立連接配接,此時需要發送連接配接已建立的消息給伺服器;

  向伺服器發送連接配接建立的确認包ACK(ack=k+1),回應伺服器的SYN(syn=k)告訴伺服器,我們之間已經建立了連接配接,可以進行資料通信。

  ACK(ack=k+1)包發送完畢,伺服器收到後,此時伺服器與用戶端進入ESTABLISHED狀态,開始進行資料傳送。

四次揮手

TCP釋放連接配接需四次揮手

先看圖,直覺的了解下:

傳輸層協定基礎(三次握手&四次揮手)

需四次揮手原因:由于TCP的半關閉特性,TCP連接配接時雙全工(即資料在兩個方向上能同時傳遞),是以,每個方向必須單獨的進行關閉。這個原則就是:當一方完成它的資料發送任務後就能發送一個FIN來終止這個方向上的連接配接。當一端收到一個FIN後,它必須通知應用層另一端已經終止了那個方向的資料傳送。即收到一個FIN意味着在這一方向上沒有資料流動了。

目的:保證伺服器與用戶端都能完全的接受對方發送的資料。 假設客戶機A向伺服器B請求釋放TCP連接配接,則:

第一次揮手:主機A向主機B發送FIN包;A告訴B,我(A)發送給你(B)的資料大小是N,我發送完畢,請求斷開A->B的連接配接。

第二次揮手:主機B收到了A發送的FIN包,并向主機A發送ACK包;B回答A,是的,我總共收到了你發給我N大小的資料,A->B的連接配接關閉。

第三次揮手:主機B向主機A發送FIN包;B告訴A,我(B)發送給你(A)的資料大小是M,我發送完畢,請求斷開B->A的連接配接。

第四次揮手:主機A收到了B發送的FIN包,并向主機B發送ACK包;A回答B,是的,我收到了你發送給我的M大小的資料,B->A的連接配接關閉。

繼續閱讀