傳輸層
只有主機(jī)才有的層次,為應(yīng)用層提供通信服務(wù)使用網(wǎng)絡(luò)層服務(wù)
傳輸層的功能:
2.復(fù)用和分用
3.傳輸層對(duì)收到的報(bào)文進(jìn)行差錯(cuò)檢測
4.傳輸層兩種協(xié)議
傳輸層的尋址與端口
- 復(fù)用:應(yīng)用層所有的應(yīng)用進(jìn)程都可以通過傳輸層再傳輸?shù)骄W(wǎng)絡(luò)層精盅。
- 分用:傳輸層從網(wǎng)絡(luò)層收到數(shù)據(jù)后交付指明的應(yīng)用進(jìn)程帽哑。
邏輯端口/軟件端口 端口是傳輸層的SAP,標(biāo)識(shí)主機(jī)中的應(yīng)用進(jìn)程叹俏。
端口號(hào)只有本地意義祝拯,在因特網(wǎng)中不同計(jì)算機(jī)的相同端口是沒有聯(lián)系的。
端口號(hào)長度位16bit她肯,能表示65536個(gè)不同的端口號(hào)佳头。
套接字Socket=(主機(jī)IP地址,端口號(hào))
UDP
UDP只在IP數(shù)據(jù)服務(wù)之上增加和很少功能晴氨,即復(fù)用分用和差錯(cuò)檢測功能康嘉。
UDP的主要特點(diǎn):
1.UDP是無連接的,減少開銷和發(fā)送數(shù)據(jù)之前的時(shí)延籽前。
2.UDP使用最大努力交付亭珍,即不保證可靠交付。
3.UDP是面向報(bào)文的枝哄,適合一次性傳輸少量數(shù)據(jù)的網(wǎng)絡(luò)應(yīng)用肄梨。
4.UDP無擁塞控制众羡,適合很多實(shí)時(shí)應(yīng)用。
5.UDP首部開銷小蓖租,8B【TCP 20B】
UDP首部格式
來講一下校驗(yàn)過程:
- 在發(fā)送端:
1.填上偽首部
2.全0填充校驗(yàn)和字段
3.全0填充數(shù)據(jù)部分(UDP4B怪)
4.偽首部+首部+數(shù)據(jù)部分采用二進(jìn)制反碼求和
5.把和求反碼填入校驗(yàn)字段
6.去掉偽首部齐婴,發(fā)送 - 在接收端:
1.填上偽首部
2.偽首部+首部+數(shù)據(jù)部分采用二進(jìn)制反碼求和
3.結(jié)構(gòu)全為1則無差錯(cuò)油猫,否則丟棄數(shù)據(jù)報(bào)/交給應(yīng)用層附上出差錯(cuò)警告。
TCP
1.TCP是面向連接(虛連接)的傳輸層協(xié)議柠偶。
2.每一條TCP連接只能有兩個(gè)端點(diǎn)情妖,每一條TCP連接只能是點(diǎn)對(duì)點(diǎn)的。
3.TCP提供可靠交付的服務(wù)诱担,無差錯(cuò)毡证、不丟失、不重復(fù)该肴、按序到達(dá)情竹∶瓴唬【可靠有序匀哄,不丟不重】
4.TCP提供全雙工通信。
- 發(fā)送緩存:準(zhǔn)備發(fā)送的數(shù)據(jù)和已發(fā)送但尚未收到確認(rèn)的數(shù)據(jù)
-
接收緩存:按序到達(dá)但尚未被接受應(yīng)用程序讀取的數(shù)據(jù)和不按序到達(dá)的數(shù)據(jù)
5.TCP面向字節(jié)流:TCP把應(yīng)用程序交下來的數(shù)據(jù)看成僅僅是一連串的無結(jié)構(gòu)的字節(jié)流雏蛮∠呀溃【流:流入到進(jìn)程或從進(jìn)程流出的字節(jié)序列】
把1~10放入緩存等待發(fā)送
TCP報(bào)文段首部格式
確認(rèn)號(hào):期望收到對(duì)方下一個(gè)報(bào)文段的第一個(gè)數(shù)據(jù)字節(jié)的序號(hào)。若確認(rèn)號(hào)為N犀概,則證明到序號(hào)N-1為止的所有數(shù)據(jù)都已正確收到立哑。
6個(gè)控制位
緊急位URG:URG=1時(shí),標(biāo)明此報(bào)文段中有緊急數(shù)據(jù)产喉,是高優(yōu)先級(jí)的數(shù)據(jù)捂掰,應(yīng)盡快傳送,不用在緩存里排隊(duì)曾沈,配合緊急指針字段使用这嚣。
確認(rèn)位ACK:ACK=1時(shí)確認(rèn)號(hào)有效,在連接建立后所有傳送的報(bào)文段都必須把ACK置為1塞俱。
推送位PSH:PSH=1時(shí)姐帚,接收方盡快交付接受應(yīng)用進(jìn)程,不再等待緩存填滿再向上交付障涯。
復(fù)位RST:RST=1時(shí)卧土,表明TCP連接中出現(xiàn)嚴(yán)重差錯(cuò)惫皱,必須釋放連接,然后再重新建立傳輸鏈接尤莺。
同步位SYN:SYN=1時(shí)旅敷,表明是一個(gè)連接請求/連接接受報(bào)文。
終止位FIN:FIN=1時(shí)颤霎,表明此報(bào)文段發(fā)送方數(shù)據(jù)已發(fā)完媳谁,要求釋放連接。
窗口:指的是發(fā)送本報(bào)文段的一方的接收窗口友酱,即現(xiàn)在允許對(duì)方發(fā)送的數(shù)據(jù)量晴音。
校驗(yàn)和:檢驗(yàn)首部+數(shù)據(jù),檢驗(yàn)時(shí)要加上12B偽首部缔杉,第四個(gè)字段為6锤躁。
緊急指針:URG=1時(shí)才有意義,指出本報(bào)文段中緊急數(shù)據(jù)的字節(jié)數(shù)或详。
選項(xiàng):最大報(bào)文段長度MSS系羞、窗口擴(kuò)大、時(shí)間戳霸琴、選擇確認(rèn)......
TCP連接管理
TCP連接傳輸三個(gè)階段:TCP連接的建立采用客戶服務(wù)器方式椒振,主動(dòng)發(fā)起連接的應(yīng)用進(jìn)程叫做客戶,而被動(dòng)等待連接建立的應(yīng)用進(jìn)程叫服務(wù)器梧乘。
ROUND1:客戶端發(fā)送連接請求報(bào)文段澎迎,無應(yīng)用層數(shù)據(jù)。SYN=1选调,seq=x(隨機(jī))
ROUND2:服務(wù)器為該TCP連接分配緩存和變量夹供,并向客戶端返回確認(rèn)報(bào)文段,允許連接仁堪,無應(yīng)用層數(shù)據(jù)哮洽。SYN=1,ACK=1枝笨,seq=y(隨機(jī))袁铐,ack=x+1
ROUND3:客戶端為該TCP連接分配緩存和變量,并向服務(wù)器端返回確認(rèn)的確認(rèn)横浑,可以攜帶數(shù)據(jù)剔桨。SYN=0,ACK=1徙融,seq=x+1洒缀,ack=y+1
TCP的連接釋放
ROUND2:服務(wù)器端回送一個(gè)確認(rèn)報(bào)文段瘫俊,客戶到服務(wù)器這個(gè)方向的連接就釋放了--半關(guān)閉狀態(tài)鹊杖。ACK=1,seq=v,ack=u+1
ROUND3:服務(wù)器端發(fā)送完數(shù)據(jù)扛芽,就會(huì)發(fā)出連接釋放報(bào)文段骂蓖,主動(dòng)關(guān)閉TCP連接。FIN=1川尖,ACK=1登下,seq=w,ack=u+1
ROUND4:客戶端回送一個(gè)確認(rèn)報(bào)文段叮喳,再等到時(shí)間等待計(jì)時(shí)器設(shè)置的2MSL(最長報(bào)文段壽命)后被芳,連接徹底關(guān)閉。ACK=1,seq=u+1嘲更,ack=w+1