天天看點

計算機網絡傳輸層

傳輸層

●不同主機程序間提供端到端的邏輯通信功能,協定運作于端系統,而非路由器。運輸層從不同的套接字接收資料并進行封裝,生成封包段,交給網絡層

●封包段:

#源端口 #目的端口

運輸層首部其他字段

資料(來自應用層)

●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 對一組内增加标記,允許亂序

繼續閱讀