簡介
OSI七層模型中,傳輸層(Transport Layer)為應(yīng)用進(jìn)程提供端到端的通信服務(wù)。傳輸層的協(xié)議主要包括TCP和UDP等協(xié)議缸兔。
TCP的全稱是Transmission Control Protocol,即傳輸控制協(xié)議卖氨。TCP是面向連接的笑窜、可靠的流協(xié)議尔当。TCP通過校驗(yàn)和配喳、序列號(hào)识补、確認(rèn)應(yīng)答族淮、重發(fā)控制、連接管理以及窗口控制等機(jī)制實(shí)現(xiàn)可靠性傳輸凭涂。此外祝辣,還具備流量控制、擁塞控制和提高網(wǎng)絡(luò)利用率等眾多功 能切油。
UDP的全稱是User Datagram Protocol,即用戶數(shù)據(jù)報(bào)協(xié)議蝙斜。UDP是一個(gè)非常簡單的傳輸層協(xié)議,并不提供可靠性澎胡。因此孕荠,UDP經(jīng)常應(yīng)用在以下幾個(gè)方面:
- 包總量較少的通信(DNS娩鹉、SNMP)
- 視頻、音頻等多媒體通信(即時(shí)通信)
- 限定于LAN等特定網(wǎng)絡(luò)中的應(yīng)用通信
- 廣播通信(廣播稚伍、多播)
數(shù)據(jù)格式
TCP通信過程中傳遞的數(shù)據(jù)單位是報(bào)文段,每一個(gè)報(bào)文段的首部是20字節(jié)弯予,如下圖所示
Sequence Number(Seq):代表序列號(hào),按順序給發(fā)送數(shù)據(jù)的每一個(gè)字節(jié)(8位字節(jié))都標(biāo)上號(hào)碼的編號(hào)个曙。確認(rèn)應(yīng)答處理锈嫩、重發(fā)控制以及重復(fù)控制等功能都可以聽過序列號(hào)實(shí)現(xiàn)。
Acknowledgment Number(ACK):負(fù)責(zé)確認(rèn)應(yīng)答垦搬,當(dāng)發(fā)送端的數(shù)據(jù)達(dá)到接收主機(jī)時(shí)呼寸,接收端主機(jī)會(huì)返回一個(gè)已收到消息的通知。這個(gè)消息叫做確認(rèn)應(yīng)答(ACK)悼沿。
TCP Flags:標(biāo)識(shí)位,其中S表示SYN,代表同步序號(hào)骚灸;F表示FIN糟趾,代表完成數(shù)據(jù)發(fā)送;R表示RST甚牲,代表復(fù)位連接义郑;P表示PSH,盡快發(fā)送數(shù)據(jù)丈钙,以上的標(biāo)志用bit的0或1表示非驮。
Window:窗口大小,用于流量控制和擁塞控制。
連接管理
TCP是一個(gè)面向連接的協(xié)議雏赦,因此在正式發(fā)送數(shù)據(jù)之前需要在通信的雙方建立一條連接劫笙。同樣,在完成數(shù)據(jù)傳遞后需要雙方將通信的連接斷開星岗。正常的通信過程至少來回發(fā)送7個(gè)包才能夠完成填大,這就是所謂的三次握手、四次揮手俏橘。
TCP狀態(tài)圖說明
實(shí)線:代表客戶端的正常狀態(tài)變遷
虛線:代表服務(wù)器的正常狀態(tài)變遷
應(yīng)用進(jìn)程:說明當(dāng)應(yīng)用執(zhí)行某種操作時(shí)發(fā)生的狀態(tài)變遷
收:說明當(dāng)收到TCP報(bào)文段時(shí)狀態(tài)變遷
發(fā):說明為了進(jìn)行某個(gè)狀態(tài)變遷要發(fā)送的TCP報(bào)文段
流量控制
擁塞控制
參考文獻(xiàn)
[https://zh.wikipedia.org/wiki/%E4%BC%A0%E8%BE%93%E5%B1%82]
[https://zh.wikipedia.org/wiki/%E7%94%A8%E6%88%B7%E6%95%B0%E6%8D%AE%E6%8A%A5%E5%8D%8F%E8%AE%AE]