在網絡中,有些服務,如HTTP和FTP,對數據的可靠性要求很高。在使用這些服務時,需要確保數據包能夠完整、正確地傳遞。其他服務,如DNS、即時聊天工具等,不需要那麽高的可靠性,但高效率、實時性才是他們在乎的。根據這兩種服務的不同需求,誕生了面向連接的TCP協議和無連接的UDP協議。
在這裏,連接和無連接是網絡傳輸中常用的術語,它們之間的關系可以用壹個生動的比喻來說明,那就是打電話和寫信。
打電話時,壹個人必須先撥號(發送連接請求),等待對方的回應,再接電話(建立連接),才能互相傳遞信息。通話完成後,需要掛機(斷開)才能完成整個通話。寫信是不同的。妳只需要填寫收件人的地址信息,然後把信放到郵局,就算完成了任務。此時,郵局會根據收件人的地址信息將信件投遞到指定的目的地。
我們可以看到兩者有很大的區別。打電話時,雙方必須建立連接才能傳遞信息。連接也保證了信息傳輸的可靠性,所以面向連接的協議必須是可靠的。沒有聯系,就沒有那麽多關註。它只是發出信息,不管對方有沒有回應。就像信件壹旦進入郵箱,在到達目的地之前,妳無法追蹤信件的去向;即使收信人收到了信,他也不會通知妳信什麽時候到。整個溝通過程沒有任何保障。所以我們常說無連接協議也是不可靠的。當然,郵局會盡力把正確的鑰匙送到目的地。在99%的情況下,信件會安全到達,但也有壹些例外。
面向連接的協議在可靠性上比無連接協議有明顯的優勢,但是它在建立連接之前要等待接收方的響應,在傳遞信息的過程中要確認信息是否已經送達,斷開時還要發送響應信號,無形中增加了面向連接協議的資源開銷。具體到TCP和UDP協議,除了源端口和目的端口,TCP還包括序列號、確認信號、數據偏移量、控制標誌(俗稱URG、ACK、PSH、RST、SYN、FIN)、窗口、校驗和、緊急指針、選項等信息。,而UDP僅包括長度和校驗和信息。UDP數據報比TCP小得多,這意味著更少的負載和更有效地利用帶寬。很多即時聊天軟件使用UDP協議,跟這個有很大關系。