【T01】理解面向連接和無連接協議之間的區別


1、面向連接和無連接指的是協議,本質區別在於:對於無連接協議來說,每個分組的處理都獨立於其他的分組。 而對於面向連接的協議,協議實現維護了當前分組與后繼分組有關的狀態信息。 2、無連接就是指udp,分組稱為數據報(datagram),每個分組都獨立尋址,udp會盡最大努力發送數據報, 但是不保證數據報不丟失,不延遲,不錯序。 注意:對於udp,可以在應用層維護數據報的狀態。 3、面向連接就是tcp,tcp的分組稱為段(segment),協議維護了分組之間的狀態,記住這些狀態,協議可以提供可靠的傳輸。 4、一個標准的類比就是:udp就像寄明信片,tcp就像打電話。 5、udp有這么多缺點,為什么還要使用這種協議呢? a、面向連接只支持一對一通信,無連接很方便地支持一對多和多對一的通信,面向連接需要多個獨立的連接才能實現。 b、更重要的是,無連接是面向連接的基礎,udp和tcp在ip協議之上,ip協議只轉發分組,不對底層做任何假設, ip就是不可靠的無連接服務。 6、tcp是怎么提供可靠的傳輸? tcp在ip協議上增加了3項功能: a、為tcp段中的數據提供校驗和,在接收端檢查數據是否損壞 b、tcp為每個字節提供序列號,即使在接收端錯序了,可以根據恰當的順序重裝起來 注意:tcp並沒有為每一個字節附加一個序列號,而是在tcp發送的段中為第一個字節標識了序號, 這樣就隱含了段中其它字節的序列號 c、tcp提供了確認重傳機制 7、確認重傳機制是如何工作的? tcp是全雙工的,每一端既是接收端又是發送端。 8、站在接收端的角度,接收端維護了接收窗口,左邊界是期望接收的下一個字節的序號,右邊界表示接收緩沖區的能容納的最大字節序號。 接收端通過告訴發送端自己的接收窗口,可以用於流量控制,防止緩沖區溢出。 對於接收的數據(一組字節,會覆蓋接收窗口的一個區間),如果在左邊界之前,說明是已收到的數據,丟棄。 如果在右邊界之后,說明是沒有對應的緩沖區存儲,丟棄。 如果不是所期望的下一個字節,說明是錯序的,需要等待前面缺少的數據到達。 如果是所期望的下一個字節,通知應用程序有數據可讀。這時候所期望接收的字節序號加上段中的字節個數,進行更新, 窗口向右滑動。同時向發送端發送ack,告知所期望接收的下一個字節序號。 9、站在發送端的角度,發送端維護發送窗口,窗口划分成兩部分,已發送但還未被確認的字節,可以發送但還未發送的字節。 對於已發送但還未被確認的字節,會啟動RTO(Retransmission TimeOut 超時重傳)定時器,超時認為丟失了,重新發送。 注意:RTO超時並不意味着原來的數據沒有到達目的地,有可能是ack丟失了,也有可能是網絡延遲,導致收到ack的時候已經超時。 重傳不會導致什么問題,因為接收端會丟棄重新收到的數據。 10、udp在ip協議上增加了2項功能,分別如下: a、提供了可選的校驗和用來檢測數據是否損壞。ip也有校驗和,但是ip的校驗和只是對ip分組的首部進行計算, 而udp和tcp提供的校驗和用於保護他們自己的首部和數據。 b、udp增加了端口的概念(當然tcp也是),ip地址對應主機,端口對應主機上的進程。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM