傳輸層
●不同主機程序間提供端到端的邏輯通信功能,協定運作于端系統,而非路由器。運輸層從不同的套接字接收資料并進行封裝,生成封包段,交給網絡層
●封包段:
#源端口 #目的端口
運輸層首部其他字段
資料(來自應用層)
●UDP
套接字組成:二進制組(IP位址,端口号),可用一個套接字接受來自不同源的資料
多個UDP段互相獨立,提供盡力而為的服務
◎提供有限的可靠性(UDP的檢驗和):
發送方:
将資料按16位劃分,對所有的劃分段求和,超過最高位的加到最低位,最後對和求反得校驗碼
接收方:
校驗碼和16位劃分求和,與上同理,全1則無錯
◎優點:
效率高,傳輸開銷小
●可靠傳輸服務得實作:
低層信道通過可靠的資料傳輸向上保證有效
Rdt1.0:信道完全可靠,收發雙方速率比對
發送方:将資料發向下一信道
接收方:從下層信道讀取資料
Rdt2.0:信道不完全可靠,可能産生比特差錯,但不丢失分組
處理:讓發送方攜帶檢錯字段,接收方發送确認或者否定确認,發送方收到否定确認則重傳上一個分組(停等)
缺陷:未考慮ACK或NAK确認出錯的情況
處理:ACK、NAK加校驗和,發送方接到錯誤的确認則重傳
缺陷:可能重複重傳造成備援
處理:發送資料首部加一個序列,如重複,丢棄,傳回ACK。
Rdt2.1:封包、ACK、NAK有檢錯字段,資料分組增加序号
序号:
停等協定:0,1,0,1…一位即可
Rdt2.2:在ACK中增加序列字段,去掉NAK
接收方收到出錯的封包,傳上一個ACK,接收方接到上一個ACK重新傳此封包。
Rdt3.0:具有比特差錯且可丢包
處理:發送方加入定時,逾時即重發
缺陷:時延過大導緻備援
處理:增加序号
●流水線技術
發送方不再停等,區間連續發送分組
需要緩存:
發送方:發送但未确認的分組
接收方:正确接收但未向上層送出的分組
◎GBN(go back n)協定(回退n步):
發送方:連續發送n個分組
收到未确認分組的ACK,繼續發送後續可發送分組
逾時,從未收到ACK的第一個重發
接收方:
收到正确且有序的分組:存入緩存,傳回ACK
出錯或亂序分組:傳回最後一個正确的ACK
發送視窗(視窗大小:n):
[0,base-1]已收到确認 [base,next-1]已發送未确認 [next,base+n-1]目前可發送 >=base+n不能發送
發送視窗大小的确定(避免ACK丢包):
設位數為k,發送視窗為2^k-1
eg:位數為3,則視窗依次為0123456,7012345,6701234
◎選擇性重傳SR:
GBN的差序造成備援
收到ACK即标記确認,ACK等于基序号,發送視窗移動到最小未确認分組處。
發送視窗大小的确定(避免錯誤的标記):
設位數為k,發送視窗為2^k/2
eg:位數為2,則視窗一次為01,23,01,23…
◎問題:收到以前時延較大的分組
處理:規定分組在網絡中的最長壽命
●TCP
套接字組成:四元組(源IP位址,源端口号,目的IP位址,目的端口号),一個程序對應一個套接字
◎伺服器動作:
先産生一個套接字監聽來自客戶機的請求——客戶機建立套接字并與伺服器連接配接——伺服器收到連接配接請求後,建立一個新的套接字與用戶端連接配接,老的套接字繼續監聽其他請求
○高性能多線程Web伺服器:一個程序三個線程對應三個TCP套接字
◎面向連接配接:三次握手建立連接配接
◎全雙工:連接配接上雙向資料流,有各自獨立序号,且起始序号随機
●擁塞控制:
◎端到端擁塞控制:端系統對網絡觀察判斷是否擁塞
◎網絡輔助的擁塞控制:路由器告知端是否擁塞,并說明自己的能支援的傳輸速率
直接回報:路由器直接告知
經過接收方回報:路由器對發送方字段标記,接收方接受了再告知發送方網絡是否擁塞
◎TCP的擁塞控制:
端到端擁塞控制
判定擁塞:連續接到三個重複ACK
處理:擁塞視窗
分别描述停止等待協定、GBN、SR協定的工作原理(基本思想),并給出發送視窗和接收視窗尺寸與序号位數的關系。
協定 原理
停等 等一個确認,再發一個
GBN 以組為機關且按序
SR 對一組内增加标記,允許亂序