運(yùn)輸層的作用
運(yùn)輸層向它上面的應(yīng)用層提供通信服務(wù)(提供端到端,進(jìn)程到進(jìn)程的可靠通信),為運(yùn)行在不同 host 上的進(jìn)程提供邏輯通信,向高層用戶屏蔽通信子網(wǎng)的細(xì)節(jié)
2.UDP 和 TCP 的特點(diǎn),及使用它們的應(yīng)用程序,熟知端口號(hào)
UDP 和 TCP 的特點(diǎn):
UDP
支持單播、多播、廣播
無(wú)連接,不可靠
可以任何速率發(fā)送數(shù)據(jù)
TCP
僅單播,不支持多播、廣播
面向連接,可靠按序
流量控制(發(fā)送速率不超過(guò)接收方的接收能力)
擁塞控制(網(wǎng)絡(luò)過(guò)載時(shí)限制發(fā)送方的發(fā)送速率)
及使用它們的應(yīng)用程序:
熟知端口號(hào):
3.UDP:首部格式,檢驗(yàn)和
首部格式:
檢驗(yàn)和:
發(fā)送端:
先設(shè)置檢驗(yàn)和字段為 0
每?jī)蓚(gè)字節(jié)為一組,進(jìn)位累加求和,多出的加到最后一位
把求和結(jié)果求反,求反即轉(zhuǎn)換成 2 進(jìn)制后,0 變 1,1 變 0
把計(jì)算結(jié)果放入檢驗(yàn)和字段
接收端
把每 2 個(gè)字節(jié)為一組,進(jìn)位累加求和
把求和結(jié)果求反:為 0 即未檢驗(yàn)出差錯(cuò)(不排除沒(méi)檢測(cè)出來(lái)的錯(cuò)誤)
4.TCP 的首部格式(端口號(hào),序號(hào),確認(rèn)號(hào),窗口,首部長(zhǎng)度,檢驗(yàn)和,6 個(gè)標(biāo)志位)
端口號(hào):各占 2 個(gè)字節(jié)
當(dāng)訪問(wèn)百度時(shí),源端口使用客戶端系統(tǒng)隨機(jī)分配的端口號(hào),目的端口是使用熟知端口號(hào) 80
序號(hào):占 4 個(gè)字節(jié)。序號(hào)范圍是【0~2^32-1】,循環(huán)使用
確認(rèn)號(hào):占 4 個(gè)字節(jié),是期望收到對(duì)方下一個(gè)報(bào)文段的第一個(gè)數(shù)據(jù)字節(jié)的序號(hào)。若確認(rèn)號(hào)為 N,則代表:序號(hào) N-1 為止的所有數(shù)據(jù)都已正確收到
窗口:占 2 個(gè)字節(jié)。窗口值是【0~2^16-1】之間的整數(shù)。窗口指的是發(fā)送本報(bào)文段的一方的接收窗口。窗口值告訴對(duì)方:從本報(bào)文段首部中的確認(rèn)號(hào)算起,接收方目前允許對(duì)方發(fā)送的數(shù)據(jù)量。窗口值作為接收方讓發(fā)送方設(shè)置其發(fā)送窗口的依據(jù)。
窗口字段明確指出了現(xiàn)在允許對(duì)方發(fā)送的數(shù)據(jù)量。窗口值經(jīng)常在動(dòng)態(tài)變化著
首部長(zhǎng)度:占 4 位,也叫數(shù)據(jù)偏移,最小 20,最大 60
檢驗(yàn)和:占 2 位,檢驗(yàn)和字段檢驗(yàn)的范圍包括首部和數(shù)據(jù)兩部分
6 個(gè)標(biāo)志位:
緊急 URG:當(dāng) URG=1 時(shí),表明緊急指針字段有效。緊急指針:指出在本報(bào)文段中緊急數(shù)據(jù)共有多少個(gè)字節(jié)(緊急數(shù)據(jù)放在本報(bào)文段數(shù)據(jù)的最前面)
確認(rèn) ACK:只有當(dāng) ACK=1 時(shí)確認(rèn)號(hào)字段才有效
推送 PSH:接收方 TCP 收到 PSH=1 的報(bào)文段,就盡快地交付接收應(yīng)用進(jìn)程,而不再等到整個(gè)緩存都填滿了后再向上交付
復(fù)位 RST:當(dāng) RST=1 時(shí),表明 TCP 連接中出現(xiàn)嚴(yán)重差錯(cuò),重新建立運(yùn)輸連接
同步 SYN:同步 SYN=1 表示這是一個(gè)連接請(qǐng)求或連接接受報(bào)文
終止 FIN:FIN=1 表明發(fā)送端的數(shù)據(jù)已發(fā)送完畢,并要求釋放運(yùn)輸連接
5.TCP 的可靠傳輸:超時(shí)重傳機(jī)制,TCP 流量控制(序號(hào),確認(rèn)號(hào),確認(rèn)標(biāo)志位,窗口,死鎖問(wèn)題與持續(xù)計(jì)時(shí)器),發(fā)送緩存和接受緩存的作用,捎帶確認(rèn)與累積確認(rèn)
超時(shí)重傳機(jī)制:
超時(shí)計(jì)時(shí)器時(shí)間 RTO:RTO=RTTs+4*RTTD
測(cè)量多個(gè) sampleRTT 求平均值,形成 RTT 的估計(jì)值 RTTs:
RTTs=(1-α) * RTTS+α * SampleRTT 典型值α=1/8
測(cè)量 RTT 的變化值:RTTs 與 SampleRTT 的差值:
RTTd=(1-β) * RTTD+β * |RTTs-SampleRTT| 典型值:β=1/4
TCP 流量控制(序號(hào),確認(rèn)號(hào),確認(rèn)標(biāo)志位,窗口,死鎖問(wèn)題與持續(xù)計(jì)時(shí)器) :
序號(hào):發(fā)送窗口里面的序號(hào)表示允許發(fā)送的序號(hào)
確認(rèn)號(hào):表明主機(jī)期望收到的下一個(gè)序號(hào),而上一個(gè)序號(hào)位置的數(shù)據(jù)已經(jīng)收到了
確認(rèn)標(biāo)志位:
窗口:窗口指的是發(fā)送本報(bào)文段的一方的接收窗口;發(fā)送窗口表示:在沒(méi)有收到 B 的確認(rèn)的情況下,A 可以連續(xù)把窗口內(nèi)的數(shù)據(jù)都發(fā)送出去。
死鎖問(wèn)題:發(fā)送方等待接收方通知窗口大小,接收方等待發(fā)送方發(fā)送數(shù)據(jù)
持續(xù)計(jì)時(shí)器:當(dāng)發(fā)送方收到接收方的零窗口通知,啟動(dòng)持續(xù)計(jì)時(shí)器。若持續(xù)計(jì)時(shí)器到期,就發(fā)送一個(gè)零窗口探測(cè)報(bào)文段
接收方發(fā)送的確認(rèn)報(bào)文段中:
若窗口仍是零,則重置持續(xù)計(jì)時(shí)器
若窗口不是零,則死鎖打開
發(fā)送緩存和接受緩存的作用:
發(fā)送方應(yīng)用進(jìn)程把數(shù)據(jù)發(fā)送到 TCP 的發(fā)送緩存;發(fā)送緩存暫時(shí)存放:1 準(zhǔn)備發(fā)送的數(shù)據(jù);2 已發(fā)送未確定的數(shù)據(jù)
接收方應(yīng)用進(jìn)程從 TCP 的接收緩存中讀取字節(jié)流;接收緩存暫時(shí)存放:1 已收到但尚未提交的數(shù)據(jù);2 失序的數(shù)據(jù)
捎帶確認(rèn)與累積確認(rèn):
累積確認(rèn):即不必對(duì)收到的分組逐個(gè)發(fā)送確認(rèn),而是對(duì)按序到達(dá)的最后一個(gè)分組發(fā)送確認(rèn),這樣就表示:到這個(gè)分組位置的所有分組都已正確收到了
捎帶確認(rèn):當(dāng)一個(gè)數(shù)據(jù)幀到達(dá)的時(shí)候后,接收方并不是立即發(fā)送一個(gè)單獨(dú)的控制幀,而是抑制一下自己并且開始等待,知道網(wǎng)絡(luò)層傳遞給他下一個(gè)分組,然后,確認(rèn)信息被附在往外發(fā)送的數(shù)據(jù)幀中(使用幀頭中的 ack 域)。實(shí)際上,確認(rèn)報(bào)文搭了下一個(gè)外發(fā)數(shù)據(jù)幀的便車。
6.TCP 的擁塞控制:網(wǎng)絡(luò)擁塞的判斷,傳輸輪次與擁塞窗口大小的關(guān)系(慢開始與擁塞避免,門限 ssthresh,重傳計(jì)時(shí)器超時(shí)與三個(gè)重復(fù) ACK)
網(wǎng)絡(luò)擁塞的判斷:重傳定時(shí)器超時(shí)
*** 傳輸輪次與擁塞窗口大小的關(guān)系(慢開始與擁塞避免,門限 ssthresh,重傳計(jì)時(shí)器超時(shí)與三個(gè)重復(fù) ACK)***:
慢開始:每經(jīng)過(guò)一個(gè) RTT,cwnd 翻倍
擁塞避免:每經(jīng)過(guò)一個(gè) RTT,cwnd 加一
慢開始門限 ssthresh:當(dāng) cwnd = ssthresh 時(shí)由指數(shù)增長(zhǎng)切換為線性增長(zhǎng);ssthresh=24 時(shí),重傳計(jì)時(shí)器超時(shí),發(fā)送方判斷為網(wǎng)絡(luò)擁塞。調(diào)整 ssthresh=cwnd/2,擁塞窗口 cwnd=1,執(zhí)行慢開始
7.TCP 連接:TCP 的套接字,三次握手建立 TCP 連接,四次握手釋放 TCP 連接
TCP 的套接字:就是對(duì)網(wǎng)絡(luò)中不同主機(jī)上的應(yīng)用進(jìn)程之間進(jìn)行雙向通信的端點(diǎn)的抽象。一個(gè)套接字就是網(wǎng)絡(luò)上進(jìn)程通信的一端,提供了應(yīng)用層進(jìn)程利用網(wǎng)絡(luò)協(xié)議交換數(shù)據(jù)的機(jī)制
三次握手建立 TCP 連接:
剛開始客戶端 A 和服務(wù)端 B 都是關(guān)閉的
B 的 TCP 服務(wù)器進(jìn)程被動(dòng)打開,準(zhǔn)備接受客戶進(jìn)程的連接請(qǐng)求
A 主動(dòng)打開,A 向 B 發(fā)出 SYN 報(bào)文段,選擇初始序號(hào),不攜帶數(shù)據(jù)。SYN=1,SEQ=X
B 收到 SYN 報(bào)文段,發(fā)回 ACK 報(bào)文段,選擇初始序號(hào),分配緩存,不攜帶數(shù)據(jù)。SYN=1.ACK=1.SEQ=Y,ack=x+1
A 向 B 發(fā)送 SYN+ACK 報(bào)文段,可攜帶數(shù)據(jù)。通知上層應(yīng)用進(jìn)程:TCP 連接已建立。
B 通知其上層應(yīng)用進(jìn)程 TCP 連接已經(jīng)建立。
四次握手釋放 TCP 連接:
客戶端 A 主動(dòng)關(guān)閉。A 向 B 發(fā)出 FIN 報(bào)文段,并停止發(fā)送是數(shù)據(jù)。FIN=1,seq=u
B 通知應(yīng)用進(jìn)程。B 收到 FIN 報(bào)文段,回復(fù) ACK 報(bào)文段。TCP 連接處于半關(guān)閉狀態(tài):B 仍可發(fā)送數(shù)據(jù)。ACK=1,seq=v,ack=u+1
B 被動(dòng)關(guān)閉。若 B 已經(jīng)沒(méi)有要向 A 發(fā)送的數(shù)據(jù),向 A 發(fā)送 FIN 報(bào)文段。FIN=1,ACK=1,seq=w,ack=u+1
A 收到 FIN 報(bào)文段后,必須發(fā)出 ACK 報(bào)文段。ACK=1,seq=u+1,ack=w+1
B 收到 ACK 報(bào)文段后,TCP 連接關(guān)閉。
客服QQ1:63355785 客服QQ2:61303373 客服QQ3:67399965 客服QQ4:2656068273 產(chǎn)品分類地圖
版權(quán)所有:保定市禾邦電子有限公司 保定市禾邦電子有限公司營(yíng)業(yè)執(zhí)照 備案號(hào):冀ICP備12019441號(hào)-1
關(guān)鍵字:保定電子元器件 保定電子元件 電子元器件 電子元件