總算是把TCP協定這些東西複習的差不多,就把複習過程中的一些問題用QA的方式來一個總結。
TCP協定與UDP協定主要差別
UDP是面向資料封包的,封包之間沒有互相關系,并且也不提供可靠傳輸等功能。
TCP是面向資料流的,封包段之間有次序關系,并且會提供可靠傳輸、流量控制、擁塞控制等功能。
舉個例子:
UDP隻關心把這個資料封包發送出去完事兒,至于對方收沒收到就不關心了。
TCP不僅關心封包段發沒發出去,還要知道對方收沒收到,是不是按次序收到的,會不會發送的太快對方來不及接收。
TCP為什麼要進行擁塞控制
網絡中的路由器會有一個資料包處理隊列,當路由器接收到的資料包太多而一下子處理不過來時,就會導緻資料包處理隊列過長。此時,路由器就會無條件的丢棄新接收到的資料封包。
這就會導緻上層的TCP協定以為資料包在網絡中丢失,進而重傳這些資料包,而路由器又會丢棄這些重傳的資料包,如此以往,就會導緻網絡性能急劇下降,引起網絡癱瘓。
是以,TCP需要控制資料包發送的數量來避免網絡性能的下降。
擁塞控制與流量控制的差別
引用書上的答案:
- 擁塞控制就是防止過多的資料注入到網絡中,這樣可以防止網絡中的路由器或鍊路不緻過載。擁塞控制所要做的都有一個前提,就是網絡能夠承受現有的網絡負荷。擁塞控制是一個全局性的過程,涉及到所有的主機、所有的路由器,以及與降低網絡傳輸性能有關的所有因素。
- 流量控制往往指點對點通信量的控制,是個端到端的問題。流量控制所要做的就是抑制發送端發送資料的速率,以便使接收端來得及接收。
TCP的發送視窗到底是多大
發送視窗的上限值 = Min{rwnd, cwnd}
rwnd:接收方接收視窗
cwnd:發送方擁塞視窗