-
TCP的滑動視窗協議是什么
滑動視窗協議,用于網路資料傳輸時的流量控制,以避免擁塞的發生,該協議允許發送方在停止并等待確認前發送多個資料分組,由于發送方不必每發一個分組就停下來等待確認,因此該協議可以加速資料的傳輸,提高網路吞吐量,它本質上是描述接收方的TCO資料報緩沖區大小的資料,發送方根據這個資料來計算自己最多能發送多長的資料,這個視窗大小為0時,發送方將停止發送資料,啟動定時器,等待這個視窗變成非0,
??滑動視窗協議必須保證資料包的按序傳輸,發送視窗中的序列號代表已發送但尚未收到確認的資料包,發送視窗可持續地維持一系列未經確認的資料包,因為發送方視窗內的資料包可能在傳輸程序中丟失或損壞,所以發送程序必須把發送視窗中的所有資料包保存起來以備重傳,發送視窗一旦達到最大值,發送程序就必須停止接收新的資料包,直到有空閑快取區,接收視窗外的資料包都要丟棄,當序列號等于接收視窗下限的資料包到達時,把它提交給應用程式并向發送端發送確認,接收視窗向前移動一位,發送視窗和接收視窗上下限無需相同,大小也無需相同,但接收視窗大小需保持固定,發送視窗大小可隨著資料包而改變, -
滑動視窗的大小會變化嗎
TCP是雙工的協議,會話的雙方都可以同時接收、發送資料,TCP會話的雙方都各自維護一個發送視窗和一個接收視窗,各自的接收視窗大小取決于應用、系統、硬體的限制,當鏈路變好或者變差,這個視窗會發生變化, -
這個協議什么情況下會死鎖,怎么解決死鎖
當接收端向發送端發送零視窗報文段后不久,接收端的接收快取又有了一些存盤空間,于是接收端向發送端發送了Windows size = 2的報文段,然而這個報文段在傳輸程序中丟失了,發送端一直等待收到接收端發送的非零視窗的通知,而接收端一直等待發送端發送資料,這樣就死鎖了,
??解決死鎖的方法是:TCP為每個連接設有一個持續計時器,只要TCP連接的一方收到對方的零視窗通知,就啟動持續計時器,若持續計時器設定的時間到期,就發送一個零視窗探測報文段(僅攜帶1位元組的資料),而對方就在確認這個探測報文段時給出了現在的視窗值,
參考(摘抄的文字著作權屬于原作者):
https://blog.csdn.net/m0_37962600/article/details/79951780
https://baike.baidu.com/item/滑動視窗協議/10291557?fr=aladdin
https://www.jianshu.com/p/07bd39becbfd
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/10573.html
標籤:其他
