您好,登錄后才能下訂單哦!
一,TCP/IP協議棧的概述
TCP/IP協議棧是由美國國防部(DoD)在20世紀60年代創建的(比OSI模型還早),是一種具體實現標準。
分為4層:網絡接入層(鏈路層),Internet層(網絡層),主機到主機層(傳輸層),應用層
由于TCP/IP協議棧涉及的知識點很多,而其中最主要的協議是IP協議和TCP協議,故本文主要是針對IP和TCP協議來分析,其他的知識點后續補上。
二,IP協議
IP(Internet Protocol,網際協議)是TCP/IP協議棧中最重要的協議(位于網絡層),用于實現數據的不可靠面向無連接通信,實現三層數據封裝與IP尋址。
什么是不可靠?
不可靠的意思就是它不能保證IP數據包能百分百到達目的地
什么是面向無連接?
意思是I P并不維護任何關于后續數據報的狀態信息。每個數據報的處理是相互獨立的。IP數據報可以不按發送順序接收。如果一信源向相同的信宿發送兩個連續的數據報(先是 A,然后是B) ,每個數據報都是獨立地進行路由選擇,可能選擇不同的路線,因此B可能在A到達之前先到達。
1.IP頭部格式
(1)版本
4bit,用于標記IP協議的版本。IPv4---->4;IPv6--->6.
(2)首部長度
4bit,可表示的最大十進制為15.指示IP報頭長度,指出IP報頭的結束位置或數據的開始位置
接收方可知道如何根據首部長度來解封裝
(3)服務類型
ToS,8bit,提供QoS服務質量技術用于實現流量標記
(4)總長度
總長度指首部和數據之和的長度,單位為字節。字段16bit。
(5)標識符
16bit,用于標志分片的進程
(6)標志符
3bit,第一個比特位0:表示保留或未使用;第二個比特DF位:DF=1,表示該數據包不應該被分段;DF=0,表示可以根據需要對數據包進行分段。第三個比特位MF位:表示該分段是最后一個分段(比特為0)或者后面更多的分段(比特為1)。
(7)片偏移量
13bit,用于告知接收方每個分片距離IP頭部的位置,才能實現有序的重新組裝
(8)生存時間
8bit,TTL最大值為255;標記路徑和防環。
(9)協議
8bit,標記上層協議
(10)首部檢驗和
16bit,校驗數據包的完整性
(11)源IP地址
32bit,發送者的IP地址
(12)目的IP地址
32bit,接收者的IP地址
(13)選項
options,可變長度該字段為可選字段
常見:記錄路由選項,時間戳選項以及用來增強traceroute程序的路由選項
(14)填充
Padding,可變長度,如果IP報頭大小不是32比特的整數倍,則會在報頭填充0直至32比特
(15)數據
可變長度,是在IP包中進行傳輸并通過協議字段進行標識的數據
三,TCP協議
TCP(Transmission Control Protocol,傳輸控制協議)是TCP/IP協議棧中算法最多,功能最繁雜的重要的協議(位于傳輸層)。
TCP提供的功能
面向連接(三次握手,四次揮手)
可靠傳輸(超時重傳,快速重傳)
流量控制(滑動窗口,擁塞控制)
多路復用(套接字,Socket)
2.原理
2.1 面向連接(三次握手,四次揮手)
三次握手:(下圖所示)
注:三次握手是一個會話的建立過程,此過程沒有正式的數據包的傳送。
SYN(同步位)用于實現端口請求,ACK(確認位)用于實現端口回復
四次揮手(見下圖):
問題:為什么關閉時要四次,而不是三次呢?
因為在一方傳輸數據結束的時候,可能另一方還在傳輸數據,所以需要四次。
2.2 可靠傳輸
見下圖:
利用Seq(序列號)和ACK(確認號)來保證可靠傳輸。
2.3 流量控制
利用滑動窗口來達到流量控制
2.4 多路復用
利用套接字socket來實現多路復用,socket=ip+port。比如多個客戶端要連接同一個服務器,就需要多路復用。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。