Python服務器運維筆記:第二章Linux - 1.2.8 TCP/IP協議

前言:本文是學習網易微專業的《python全棧工程師》 中的《服務器運維開發工程師》專題的課程筆記,歡迎學習交流。同時感謝老師們的精彩傳授!

一、課程目標

  • ipv4協議
  • tcp協議
  • udp協議

二、詳情解讀

2.1.IP協議

ip協議規定了數據怎麼從一臺主機傳輸到另一臺主機。

2.1.1.數據的傳輸

在這裏插入圖片描述

2.1.2.IP數據包

在這裏插入圖片描述
在這裏插入圖片描述
首部長度:
IP頭部的大小,固定部分是5行,另有可選部分

區分服務器:
8位組成,表明服務質量。0~2位表示0~7的優先級別
3位: 最低延遲
4位:最大吞吐
5位: 最大可靠性
6位: 最小代價

總長度:
IP首部 + 數據部分總長
總長不能超過 2162^{16} ,所以在的數據需要折成片段。

標識: 16位組成,用於分片重組,同一個分片的標識相同。
在這裏插入圖片描述
標誌: 3位組成
0位:0
1位:是否進行分片。0可以分,1不可分
2位:是否爲最後一個包,0爲最後一個包

片偏移:
13位組成,用來標識數據片段的位置,第一個分片爲0,單位是字節。

生存時間:
8位組成,每經過一個路由呂減1,變爲0時,棄包。

協議:
IP傳輸上層協議。比如:ICMP、TCP、UDP、......

首部校驗和:
16位組成,用來檢驗IP首部是否被破壞。

源地址:
32位組成,發送端IP

目標地址:
32位組成,接受端IP

2.1.3.數據傳輸

IP數據包內的數據部分就是TCP或者UPD數據包,如下圖所示:
在這裏插入圖片描述

數據傳輸打包或者解包過程,如下圖所示:
在這裏插入圖片描述

2.2.TCP協議

tcp協議是面向連接的可靠的流數據協議tcp數據傳輸首先需要在兩端之間建立虛擬連接,通過順序控制與生髮控制保證數據傳輸可靠性。

tcp由於需要建立連接,以及數據包糾正,所以不適合高速傳輸與實時性很高的場合,比如視頻直播,語音通訊。

2.2.1.tcp數據報

在這裏插入圖片描述
源端口號:
16位組成,發送端端口號

目標端口號:
16位,接收端端口號

通常服務器端口號爲固定的,客戶端端口號爲臨時的。

序列號(Sequence Number):
32位,發送數據的位置,每發送一次累加該次字節數,第一次產生一個隨機數,在這個基礎上累加。

確認應答號(Acknowledgement Number):
32位,下一次應該收到的數據序列號,發送端收到這個信號就認爲之前的數據發送成功。

數據偏移(Data Offset):
4位,TCP首部長度,固定長爲20個字節,即值爲5

控制位(Controller flag):
URG: 該位爲1,表示需要緊急處理
ACK: 該位爲1,表示應答有效
PSK: 該位爲1,表示將收的數據提交給上層應用協議
RST: 該位爲1,表示tcp連接異常,強制斷開
SYN: 該位爲1,表示用於建立連接
FIN: 該位爲1,表示通訊結束,希望斷開連接

窗口大小(window size):
16位,發送數據最大限制,如果爲0,可以發送窗口探測

檢驗和:
檢驗數據是否完整與是否被修改

緊急指針:
緊急數據位置

2.2.2.tcp協議創建連接與斷開連接過程

在這裏插入圖片描述

2.2.UDP協議

UDP協議不提供複雜的數據傳輸控制機制,面向無連接的通信服務,它將應用程序按照原樣在網絡傳輸。

對於數據包順序,丟包等問題,由應用程序解決。UDP適用場合:
1.包總量很小的場合
2.即時通信
3.局域網內通信
4.廣播通信

2.2.1.udp數據報頭

在這裏插入圖片描述

三、課程小結

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