(*长期更新)软考网络工程师学习笔记——Section 8 传输层
目錄
- 一、傳輸層的基本協議
- 二、面向連接服務和無連接服務
- 三、TCP
- (一)TCP的基本概念
- (二)TCP的三種機制
- (三)TCP的報文首部格式
- (四)TCP三次握手
- (五)TCP釋放連接
- 四、UDP
- (一)UDP的基本概念
- (二)UDP首部結構
- (三)協議端口號
- 1、系統端口
- 2、登記端口
- 3、客戶端使用端口
- 結語
一、傳輸層的基本協議
傳輸層依靠的基本協議是TCP(傳輸控制協議)和UDP(用戶數據報協議),傳輸層的相關知識由這兩部分協議展開。
二、面向連接服務和無連接服務
面向連接服務,分為三步:建立連接、使用連接和釋放連接,即首先要建立一條通信線路,然后在正式傳輸數據時,數據分組就不再需要攜帶目的地址,可靠性高,但它相比無連接服務其效率低,例如TCP協議。
無連接服務,由系統選定路線進行傳輸,收發方只有在傳輸數據時才處于激活狀態,其下層資源動態分配,相比面向連接服務,它更加靈活、通信比較迅速且開銷小,但可靠性低,不能防止報文出錯,例如IP協議、UDP協議。
三、TCP
(一)TCP的基本概念
TCP是一種可靠的、面向連接服務的字節流服務,源主機在傳輸數據時要先與目標主機建立連接,然后被編號的數據段按順序進行收發,且同時對每個數據段進行確認,從而保證了可靠性,若沒有收到確認則會再次發送。
(二)TCP的三種機制
TCP是建立在無連接服務的IP基礎上,通過三種機制實現面向連接服務:
1、使用序號對數據報標記,便于接收服務向高層傳遞數據之前調整錯序的數據報。
2、通過使用確認、校驗和定時器系統提供可靠性。
3、使用窗口機制調整數據流量,即可變大小的滑動窗口協議減小接收方緩沖區滿而造成丟失數據報文的可能性,從而實現流量控制。
(三)TCP的報文首部格式
TCP的報文首部格式有以下:
1、源端口
字段長度為16位,用于標識源端和目標端的應用進程,端口號取值范圍為0-65535。
2、序列號
又稱為報文段序號,字段長度為32位。
3、確認號
字段長度為32位,即對方下一個報文段的第一個數據字段的序號。
4、報頭長度
又稱為數據偏移字段,字段長度為4位,單位32位,沒有選項字段的TCP頭部長度為20字節,最多可以有60字節的TCP頭部長度。
5、保留字段
字段長度為6位,通常設置為0。
6、標記
當請求方發出同步SYN連接請求后,等待對方回答同步SYN、確認ACK,這樣防止建立錯誤的連接。
(1)緊急URG:緊急有效,需要盡快傳送;
(2)確認ACK:建立連接后的報文回應,ACK置1;
(3)推送PSH:接收方應將該報文盡快交給上層協議,無需等待緩存滿;
(4)復位RST:重新連接;
(5)同步SYN:發起連接,即當TCP實體要建立連接時,其段頭中的SYN標志置1;
(6)終止FIN:釋放連接。
7、窗口大小
字段長度為16位,該字段用于進行流量控制(通過可變大小的滑動窗口協議),作為接收方讓發送方設置其發送窗口的依據,該值為期望下一次接收的字節數。
8、校驗和
字段長度為16位,對整個TCP報文段進行校驗和計算,并由目標端進行驗證。
9、緊急指針
字段長度為16位,它是一個偏移量,和序號字段中的值相加表示緊急數據最后一個字節的序號。
10、選項
字段長度可變,可變至40字節,為保證報文長度是32位的倍數,因此還需要填充0。
(四)TCP三次握手
TCP協議使用三次握手機制建立連接,其目的是使數據段的發送和接收同步,同時也向其它主機表明其一次可接收的數據量(窗口大小)并建立邏輯連接,雙方通信前源主機和目標主機都處于CLOSED狀態。
1、第一次握手
源主機發送一個SYN=1的TCP數據段,同時標明初始序號ISN,ISN是一個隨時間變化的隨機值,即SYN=1,SEQ=x,源主機進入SYN-SENT狀態。
2、第二次握手
目標主機收到SYN包后,發回確認數據報文,即ACK=1,同時確認序號字段,表明目標主機期待收源主機下一個數據段的序號,即ACK=x+1。
數據段中另外設置SYN=1,并包含目標主機的段初始序號y,即ACK=1,確認序號ACK=x+1,SYN=1,自身序號SEQ=y,此時目標主機進入SYN-RCVD狀態,源主機進入ESTABLISHED狀態。
3、第三次握手
源主機再回送一個確認數據段,同樣帶有遞增的發送序號和確認序號,即ACK=1,確認序號ACK=y+1,自身序號SEQ+1。經過三次握手后,源主機就可以與目標主機互相收發數據。
(五)TCP釋放連接
TCP釋放連接分為四步,此時源主機和目標主機都處于ESTABLISHED狀態。
1、第一步
源主機發送一個釋放報文,FIN=1,自身序號SEQ=x,源主機進入FIN-WAIT狀態。
2、第二步
目標主機接收到報文后發送確認報文,即ACK=1,確認序號ACK=x+1,自身序號SEQ=y,目標主機進入CLOSE-WAIT狀態,此時TCP連接處于半關閉狀態,源主機已經停止發送數據,但目標主機仍可發送數據。源主機在接收到ACK報文后等待目標主機發出FIN報文。
3、第三步
目標主機確認沒有數據后,發出釋放報文,即FIN=1,ACK=1,確認序號ACK=x+1,自身序號SEQ=z,此時目標主機進入LAST-ACK狀態。
4、第四步
源主機接收到釋放報文后,對目標主機發送確認報文,即ACK=1,確認序號ACK=z+1,自身序號SEQ=x+1,等待一段時間確定確認報文到達后,源主機進入CLOSED狀態,目標主機在接收到確認報文后,也進入CLOSED狀態。
四、UDP
(一)UDP的基本概念
用戶數據報協議(UDP)是一種不可靠的、無連接服務的數據報服務,它在IP層之上提供了端口尋址能力,數據附加源端口號和目標端口號等UDP報頭字段后,直接發往目的主機,在傳送數據較少且較小的情況下,UDP比TCP顯得更加高效。
(二)UDP首部結構
UDP的首部格式有以下:
1、源端口號
字段長度為16位,與TCP中的端口號字段作用相同,用于標識源端的應用進程,在需給對方回信時用,不需要時為0。
2、目標端口號
字段長度為16位,與TCP中的端口號字段作用相同,用于標識目標端的應用進程,在需目標交付報文時用到。
3、長度字
字段長度為16位,用于標明UDP頭部和UDP數據的總長度字節。
4、校驗和
該字段為可選項,長度為16位,用于校驗UDP頭部和UDP數據,有錯時就丟棄。
(三)協議端口號
協議端口號是用于標識目標主機進程的方法,TCP/IP協議中使用16位的端口號來標識端口,即端口號的取值為0-65535。
協議端口號可分為系統端口、登記端口和客戶端使用端口三種。
1、系統端口
常用的系統端口協議號有以下:
| 20 | FTP-DATA | FTP數據傳輸 |
| 21 | FTP | FTP控制 |
| 22 | SSH | SSH登錄 |
| 23 | telnet | 遠程登錄 |
| 25 | SMTP | 簡單郵件傳輸協議 |
| 53 | DNS | 域名解析 |
| 67 | DHCP | DHCP服務器開啟,用于監聽和接收客戶請求信息 |
| 68 | DHCP | 客戶端開啟,用于接收DHCP服務器的消息回復 |
| 69 | TFTP | 簡單FTP |
| 80 | HTTP | 超文本傳輸 |
| 110 | POP3 | 郵局協議 |
| 143 | IMAP | 交互式郵件存取協議 |
| 161 | SNMP | 簡單網管協議 |
| 162 | SNMP(trap) | SNMP Trap報文 |
| 443 | HTTPS | 加密的超文本傳輸服務 |
2、登記端口
該端口是為沒有熟知端口號的應用程序使用的,端口號范圍為1024-49151。
3、客戶端使用端口
該端口在客戶端進程運行時動態使用,使用完后,進程會釋放端口,端口號范圍為49152-65535。
結語
記錄一下,這是2021年的最后一篇文章,希望2022新的一年,大家事業沖沖沖!!!
總結
以上是生活随笔為你收集整理的(*长期更新)软考网络工程师学习笔记——Section 8 传输层的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言程序设计——设计一个学生管理系统(
- 下一篇: (*长期更新)软考网络工程师学习笔记——