網工成長筆記《六》:傳輸層協議

前言

今天是第六節內容的分享了,學的是傳輸層協議的知識點。主要分為兩種對立性質的協議,學起來會比較有對比性。

TCP和UDP的介紹

瞭解常見服務的應用埠號

TCP和UDP的報文格式

TCP三次握手和四次揮手

傳輸層協議

傳輸層有兩大協議TCP UDP

(1)TCP協議

TCP協議是一種面向連線的協議,可提供可靠的傳輸服務

TCP的埠號

作用:

用來區分不同的網路服務

埠的分類:

知名埠和動態埠

知名埠:

0-1023,常見應用程式會使用的埠

動態埠:

1024-65535,一般作為源埠使用

埠號對應的協議

網工成長筆記《六》:傳輸層協議

TCP頭部

網工成長筆記《六》:傳輸層協議

整個TCP頭部一共20個位元組

Source Port:

源端

Destination Port:

目的埠

Sequence Number:

順序號碼

Acknowledge Number:

確認號碼

Header Length;

報頭長度

Resv:

保留欄位

SYN:

表示建立連線

ACK:

表示響應

Window:

視窗,用於流量控制

Checksum:

校驗欄位

TCP三次握手

網工成長筆記《六》:傳輸層協議

第一次握手:

主機A傳送位碼為syn=1(表示要求建立連線),隨機產生seq number的資料包到主機B

第二次握手:

主機B收到請求後要確認聯機資訊,向A傳送ack number=(主機A的seq+1),同時syn=1,ack=1,隨機產生一個seq number的資料包傳送給A

第三次握手:

主機A收到後檢查ack number是否正確,即第一次傳送的seq number+1,以及位碼ack是否為1,若正確,主機A會再發送ack number=(主機B的seq+1),ack=1,主機B收到後確認seq值與ack=1則連線建立成功。

TCP的傳輸過程

網工成長筆記《六》:傳輸層協議

上圖給出了主機A分2次(分2個數據包)向主機B傳遞200位元組的過程。首先,主機A透過1個數據包傳送100個位元組的資料,資料包的 Seq 號設定為 1200。主機B為了確認這一點,向主機A傳送 ACK 包,並將 Ack 號設定為 1301。

為了保證資料準確到達,目標機器在收到資料包(包括SYN包、FIN包、普通資料包等)包後必須立即回傳ACK包,這樣傳送方才能確認資料傳輸成功。

此時 Ack 號為 1301 而不是 1201,原因在於 Ack 號增加了傳輸資料的位元組數。假設每次 Ack 號不加傳輸的位元組數,這樣雖然可以確認資料包的傳輸,但無法明確100位元組全部正確傳遞還是丟失了一部分,比如只傳遞了80位元組。

因此按如下的公式確認 Ack 號:seq+傳遞的位元組數+1。

TCP的流量控制

網工成長筆記《六》:傳輸層協議

接收端將自己可以接收的緩衝區大小放入 TCP 首部中的 “視窗大小” 欄位, 透過ACK端通知傳送端;視窗大小欄位越大, 說明網路的吞吐量越高接收端一旦發現自己的緩衝區快滿了, 就會將視窗大小設定成一個更小的值通知給傳送端;傳送端接受到這個視窗之後, 就會減慢自己的傳送速度

如果接收端緩衝區滿了, 就會將視窗置為0; 這時傳送方不再發送資料, 但是需要定期傳送一個視窗探測資料段, 來檢視接收端是否有視窗有容量來接收資料

TCP的關閉連線

網工成長筆記《六》:傳輸層協議

TCP的連線的拆除需要傳送四個包,因此稱為四次揮手

由於TCP連線是全雙工的,因此每個方向都必須單獨進行關閉

TCP的四次揮手

(1)客戶端A傳送一個FIN,用來關閉客戶A到伺服器B的資料傳送。(2)伺服器B收到這個FIN,它發回一個ACK,確認序號為收到的序號加1。

(3)伺服器B關閉與客戶端A的連線,傳送一個FIN給客戶端A。(4)客戶端A發回ACK報文確認,並將確認序號設定為收到序號加1。

UCP的協議

UDP協議是一種面向無連線的協議,使用者資料報協議,傳送資料前無需建立連線,不使用擁塞控制,不保證可靠交付,最大努力交付。

UDP頭部

網工成長筆記《六》:傳輸層協議

UDP頭部共8個位元組,傳輸資料時沒有確認機制

Source Port:

源埠

Destination Port:

目的埠

Header;

報頭長度

Checksum:

校驗欄位

UDP的傳輸過程

網工成長筆記《六》:傳輸層協議

UDP傳輸資料不建立連線,因此也就不需要維護連線狀態,包括收發狀態等,因此一臺服務機可同時向多個客戶機傳輸相同的訊息。

UDP是面向報文的。傳送方的UDP對應用程式交下來的報文,在新增首部後就向下交付給IP層。既不拆分,也不合並,而是保留這些報文的邊界,因此,應用程式需要選擇合適的報文大小。

雖然UDP是一個不可靠的協議,但它卻是分發資訊的一個理想協議。例如,在螢幕上報告股票市場、顯示航空資訊等等都使用的是UDP協議。

最後

如果大家覺得本系列不錯,覺得有幫助的朋友可以關注、點贊、收藏支援一下~

碼字不易,你的點贊就是對我創作的支援!