
1.傳輸層的服務(wù)和協(xié)議
上下文:上層應(yīng)用層,下層網(wǎng)絡(luò)層。傳輸層的作用是實現(xiàn)進程間的邏輯通信。
收到來自應(yīng)用層的消息將它拆分為一個個segment向下通過socket傳遞給網(wǎng)絡(luò)層,收到網(wǎng)絡(luò)層提取的segment還原為組裝為消息通過socket上交給應(yīng)用層。
socket編程即是封裝了兩種傳輸層的協(xié)議UDP+TCP(也可以自定義寫其他協(xié)議)給上層應(yīng)用層。很多時候應(yīng)用層編程會使用UrlConnection比直接使用Socket要簡單的多,不用關(guān)心狀態(tài)和線程治理。 UrlConnection基于Http協(xié)議,只是進行了封裝,添加了一些額外規(guī)則(如頭信息),本質(zhì)上也是建立TCP連接,利用Socket實現(xiàn)連接和傳輸數(shù)據(jù)的。
2.傳輸層技術(shù)層面
2.1 多路復(fù)用分用



2.2 可靠數(shù)據(jù)傳輸

a圖介紹了可靠數(shù)據(jù)傳輸?shù)慕巧窃趹?yīng)用層之下提供一個可靠數(shù)據(jù)傳輸,b圖說明可靠數(shù)據(jù)傳輸通過對傳輸層前后的數(shù)據(jù)做處理進而為上層服務(wù)。


Rdt 1.0就是最原始的模型,可靠數(shù)據(jù)傳輸通過實現(xiàn)對data的make_pkt()方法使得傳輸?shù)膁ata不錯不丟。這個FSM(狀態(tài)機)比較好的闡述了可靠數(shù)據(jù)傳輸實現(xiàn)的機制。
因為前面rdt1.0假設(shè)不會發(fā)生位錯誤,都是實際會在傳輸過程發(fā)生位錯誤。增加校驗和如果錯誤就發(fā)送NAK讓發(fā)送方重新發(fā)送。誕生了rdt2.0 停等協(xié)議 一直在停和等待的狀態(tài)






也就相當于對接收方不發(fā)送NAK,收到重復(fù)的ack就相當于nak。發(fā)送帶有序號的ack,發(fā)送方如果不是想要的ack0就繼續(xù)重新發(fā)送數(shù)據(jù)包0,如果收到ack0就發(fā)送數(shù)據(jù)包1。
rdt3.0針對分組如果丟失分組產(chǎn)生無限等待的問題增加計時器,超時重傳。



rdt3.0效率低分析:由于只發(fā)送一個分組就陷入等待接收確認,這樣一個分組發(fā)送等待確認再發(fā)送的機制(只需要一個bit的序列號就可以滿足不接受重復(fù)的分組)效率低。
2.3 滑動窗口協(xié)議








發(fā)送方和接收方的窗口大小之和應(yīng)該小于序列號總數(shù)
2.4 擁塞避免




如果網(wǎng)絡(luò)擁塞情況嚴重,路由器或者交換機將data里特定的標記網(wǎng)絡(luò)擁塞情況的bit置1,接收方將該信息返回給發(fā)送方從而控制發(fā)送速率實現(xiàn)擁塞控制。
2.5 流量控制
設(shè)置buffer來通過在返回的segment里面增加返回接收窗口大小來實現(xiàn)。具體研究TCP的流量控制實現(xiàn)。
3. UDP 盡力而為
只完成傳輸層的基本任務(wù),實現(xiàn)進程之間的通信。
segment結(jié)構(gòu)如下:數(shù)據(jù)保存的就是封裝的應(yīng)用層的message數(shù)據(jù)。


4. TCP 可靠服務(wù)
4.1 TCP可靠數(shù)據(jù)傳輸





關(guān)于GBN和SR與TCP
TCP的實現(xiàn)運用了之前介紹的RDT系列算法里面的一些機制,也借鑒了滑動窗口協(xié)議的機制。比如TCP采用了累積確認,和SR類似有緩沖區(qū),但是ack的含義不同于SR,ack為期待接受的下一個數(shù)據(jù)報文的序號,它有快速重傳機制,可以提高效率,發(fā)送多個ack,發(fā)送方收到重復(fù)的ack(意味著可能發(fā)生了超時或丟包)時候就會重傳。
4.2 TCP流量控制


流控是針對接收方的接收速度和擁塞控制不同,擁塞控制是數(shù)據(jù)在網(wǎng)絡(luò)傳輸過程,也就是在路由器的緩存有限防止路由器丟包和崩潰導(dǎo)致數(shù)據(jù)丟失和傳輸過慢。
4.3 TCP連接管理


第三次可能就攜帶數(shù)據(jù)比如html請求之類的信息,注意SYN的變化110


4.4 TCP的擁塞控制


上圖和教材版本不同僅作為參考
發(fā)生timeout時候congwin減少為1開始慢啟動,threshold折半
收到三個ack時候congwin折半+3,threshold折半啟動擁塞避免開始線性增長
控制機制:監(jiān)控segment接受的狀態(tài)(超時和3個ack)---->啟動擁塞控制協(xié)議---->慢啟動和擁塞避免----->congwin的值發(fā)生改變---->發(fā)送方根據(jù)rate = congwin/RTT的速率發(fā)送
其實是通過congwin(一個描述當前擁塞程度的量)來控制發(fā)送速率

4.5 TCP探討
TCP在發(fā)送很多的數(shù)據(jù)時出現(xiàn)丟包率嚴重,未來的TCP需要重新改進設(shè)計。

對于請求打開多個TCP連接請求獲得更多的速率 不公平。
5 報文格式匯總




