0.? tcp 與 udp 的 異同特性
TCP | UDP | |
name | 傳輸控制協議 | 用戶數據報協議 |
面向連接? | 需要
| 不需要 |
可靠的傳輸數據? | 可靠 有確認機制(三次握手)
保證數據可靠傳輸
| 不可靠 沒有確認機制
可能會造成問題:
|
傳輸的消息有狀態? | 有狀態 需要維持復雜的連接狀態表
| 無狀態 |
數據傳輸的形式? | 面向連續的字節流 | 面向獨立的報文 |
協議首部開銷? | 20~60 字節 | 8 字節 |
服務形式or范圍 | 僅支持 點對點通信 | 支持? 一對一、 一對多、 多對一、多對多通信 |
如何選擇? | 一般用于傳輸準確性要求高場景
| 一般用于即時通信
|
傳輸效率 | 由于TCP 在傳輸 的時候 ,多了連接、確認、重傳等機制 相比TCP傳輸速率低許多 |
1. Tcp
1.1 建立與斷開連接
(1)tcp三次握手 —— 建立連接
(2)Tcp四次揮手——斷開連接
1.2 傳輸的可靠性保證
????????tcp是一種面向連接的、可靠的、基于字節流的傳輸協議,通過一系列機制來保證數據的可靠傳輸,主要包括:
1. 超時重傳
- 通過在每個數據包上標記一個序列號,并等待接收方的確認應答
- 如果一定時間內未收到應答,在設定的超時時間過后,再次發送
2. 流量控制
- 防止接受過多的數據,導致接收方無法處理
- 連接的雙方都有固定大小的緩沖空間
- 接受方通過tcp窗口來告知發送方?? 還有多少緩存空間
- 使用到了流量控制協議,即 tcp通過滑動窗口來實現
- 提示發送方控制發送的數據量
3. 擁塞控制
- 防止發送過多的數據,導致網絡擁塞
- 通過檢測網絡的擁塞狀態(擁塞控制算法)來動態調整發送頻率
4. 校驗和
- 如果收到首部和數據的校驗和 有差錯,則丟棄此報文
- 端對端的校驗和?? 可以檢測到數據在傳輸過程中的變化