TCP/UDP協議簡要梳理
TCP/UDP協議簡要梳理
TCP
TCP,Transmission Control Protocol,傳輸控制協議是一種面向連接的、可靠的、基於字節流的傳輸層通信協議。在因特網協議族中,TCP所在的層位於IP層之上,應用層之下。
TCP面向連接。其實網絡上的傳輸是沒有連接的,包括TCP也是如此。而TCP所謂的“連接”,其實只不過是在通訊的雙方維護一個“連接狀態”,從而從應用層看,它們是連接在一起的。所以,TCP的狀態變換非常重要。尤其在進行數據傳遞前的三次握手和數據傳遞完畢之後的四次揮手操作。
可靠性是指TCP協議能確保,發送數據的一端能知曉數據是否安全到達接收方了。
基於字節流。TCP不在字節流中插入記錄標識符,一個字節8bit,在8bit中,不會插入數據。因此TCP不知道傳輸的數據字節流是二進制數據還是ASCII字符。
報文段結構
其他特點:全雙工協議、半關閉、錯誤檢查、將數據打包成段、排序、確認反饋、流量控制(擁塞控制)。
如何確保數據的可靠性?
要確保數據可靠的到達目的端系統,主要可以從兩方面考慮:一是保證將提交給它的所有數據都發送出去;二是能夠保證到達目的主機的數據都是可以檢測是否準確的,不受損壞且順序不變。通過以下幾個特點來保證數據可靠傳輸:
- 分割。應用數據被分割成TCP最合適發送的數據塊
- 反饋。當收到另一端的數據,它將發送一個確認包。這個確認包有一定的延時性
- 重傳。當TCP發出一個包之後,它啟動一個定時器,等待目的端反動確認收到的包,如果沒有收到確認包,就重發這個報文段
- 差錯檢測
- 排序。可以對收到的數據包進行排序,然後提交到應用層
- 去重。對於重復數據,能夠自行丟棄
- 流量控制(擁塞控制)。
- 三次握手和四次揮手過程
UDP
UDP,User Datagram Protocol,用戶數據報協議是OSI參考模型中一種無連接的傳輸層協議,提供面向事務的簡單不可靠信息傳送服務。
無連接,相對於TCP,傳送數據前沒有三次握手,也沒有數據傳送完成之後的四次揮手過程。
不可靠,不能確保數據是否安全達到接收方
分組首部開銷小。每個TCP報文段都有20個字節的首部開銷,而UDP僅需要8個字節
UDP報文段結構:
特點:無連接,不可靠,輕量,支持數據包正確性檢測
比較異同
相同點:都屬於傳輸層協議;都沒有提供加密機制,不過有另一種協議——安全套接字協議SSL(Secure Sockets Layer),有加密機制。支持對數據包檢測
不同點:
|
TCP |
UDP |
是否面向連接 |
是,三次握手和四次揮手 |
否 |
可靠性 |
可靠,提供確認反饋、超時重發,丟棄重復數據、流量控制 |
不可靠 |
負載大小 |
20+字節 負載相對大 |
8個 負載相對小 |
報文段構成 |
序號、確認號、數據偏移、控制標誌窗口、校驗和、緊急指針、選項等 |
長度、校驗 |
使用場景 |
需確保數據完整性,對時效性要求略低。文件下載和上傳 |
時效性要求很高。像現在的流行的直播,視頻電話 |
TCP/UDP協議簡要梳理