「網工小白必備」全網最詳細的網絡基礎分解與解析(2)

1. 傳輸層

1.1. 前言

fa376ce189a984642a6e968a25eaf7af.jpg

1.2. 傳輸層概述

傳輸層提供端到端的連接

網絡層提供點到點的連接

d40ae7aa9d50f2d3eaae37ee591e15b1.jpg

1.3. 傳輸層端口

端口號用來區分不同的網絡服務

0383c31a899e02bb1f2ba66f028797d5.jpeg

端口號的範圍0-65535(2的16次方)

0-1023,公認端口號(知名端口號)

1024-49151,註冊端口

49152-65535,動態端口

493c0faa2ea10066bdd68261c7d0f9e8.jpeg


095e5371f4e5583ea0c402750af79569.jpg601fd8708e69d58eff36562d03685c6e.jpg

1.4. 傳輸層協議

6149903d2db3189d13851158754edb0d.jpg97d6b4b82e6acb1e3f3d9636d2c1dbb1.jpeg


e98f44f86b21b4be58082c1cddbaedd0.jpg


1.4.1. TCP協議

TCP協議頭部

265b6db70b37dc704af07a6ed7bab18e.jpeg


整個TCP頭部一共20個字節

Source Port:源端

Destination Port:目的端口

Sequence Number:順序號碼

Acknowledge Number:確認號碼

Header Length;報頭長度

Resv:保留字段

Flag:標誌字段

Window:窗口,用於流量控制

Checksum:校驗字段

Urgent Pointer:緊急位

Options:可選字段

位碼即tcp標誌位,有6種標示:

SYN(synchronous建立聯機) :請求建立連接,我們把含有SYN標識的報文稱爲同步報文段

ACK(acknowledgement確認) :標識確認序列號是否有效

PSH(push傳送) :用來提示接收端應用程序立刻將數據從TCP緩衝區讀走

FIN(finish結束) :通知對端,本端即將關閉。我們把含有FIN標識的報文稱爲結束報文段

RST(reset重置) :請求重新建立連接,我們把含有RST標識的報文稱爲復位報文端

URG(urgent緊急):標識緊急指針是否有效

TCP會話的建立----三次握手

92199164cffa3015c710872186e2231e.jpeg

1. 第一次握手:主機A發送位碼爲syn=1(表示要求建立連接),隨機產生seq number的數據包到主機B

2. 第二次握手:主機B收到請求後要確認聯機信息,向A發送ack number=(主機A的seq+1),同時syn=1,ack=1,隨機產生一個seq number的數據包發送給A

3. 第三次握手:主機A收到後檢查ack number是否正確,即第一次發送的seq number+1,以及位碼ack是否爲1,若正確,主機A會再發送ack number=(主機B的seq+1),ack=1,主機B收到後確認seq值與ack=1則連接建立成功

TCP會話的確認

fb3f0ccbd96888071575fe9704efc9b6.jpg

上圖給出了主機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的流量控制

827327e94676cd24f34884097b90c8d1.jpg

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

2. 如果接收端緩衝區滿了, 就會將窗口置爲0; 這時發送方不再發送數據, 但是需要定期發送一個窗口探測數據段, 來查看接收端是否有窗口有容量來接收數據

窗口大小決定了在收到確認前可以發送的字節數


TCP會話的拆除----四次握手

07c254c4514661d2c55afd8f0c0c3447.jpeg

TCP的連接的拆除需要發送四個包,因此稱爲四次揮手

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

TCP的四次揮手

1. 客戶端A發送一個FIN,用來關閉客戶A到服務器B的數據傳送。

2. 服務器B收到這個FIN,它發回一個ACK,確認序號爲收到的序號加1。

3. 服務器B關閉與客戶端A的連接,發送一個FIN給客戶端A。

4. 客戶端A發回ACK報文確認,並將確認序號設置爲收到序號加1。

1.4.2. UDP協議

UDP協議頭部

31ee065714ff867851d47aed40ca449c.jpg


UDP頭部共8個字節,傳輸數據時沒有確認機制

Source Port:源端口

Destination Port:目的端口

Header;報頭長度

Checksum:校驗字段


當然我還有很多整理好的資料文檔和視頻文件,【 點這裏】 獲得更多資料文檔 往期教學視頻,主要也是想給新手小白少走點彎路。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章