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