前言:本文是學習網易微專業的《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
首部 + 數據部分總長
總長不能超過 ,所以在的數據需要折成片段。
標識: 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
協議