數據傳輸——傳輸層協議原理
在互聯網上,每個網絡數據包的傳輸都遵循以下五層結構:
TCP(傳輸控制協議)和UDP(用戶數據報協議)都是
·傳輸層提供一個網絡連接以同時允許多個應用程序。就像街道名稱帶有門牌號碼一樣,傳輸層在每個網絡連接中的計算機上創建65000個端口。
·這些端口可以被計算機上的應用程序保留和使用。
·一個應用程序可以根據需要同時使用多個端口。
傳輸層協議實現目的
例如,應用程序保留了端口12437,以將消息發送到其他計算機上的端口80。每當應用程序層創建消息時,都會在傳輸層上傳遞消息。在這一層中將消息包裝在一個段中。該段包含一些其他信息,例如源端口和目標端口。創建段后,該段將傳遞到網絡層以進行進一步處理。
·當它從網絡層傳遞到傳輸層時,網段將顯示在接收方。
·將檢查網段以確定目標端口。
·然后,將郵件解包并傳遞到端口80。
什么是TCP?
TCP是一種面向連接的點對點傳輸通信協議,它以有序順序將數據包作為非結構化字節流發送。TCP通過使用序列號和確認消息,從發送節點提供有關傳輸到目標節點的數據包的傳遞的信息。TCP確保數據的可靠性,端到端傳遞,重新排序和重傳,直到達到超時條件或接收到數據包的確認為止。
此外,TCP提供流控制機制來維持通過高速網絡傳輸的高數據包,并且TCP協議通過觸發數據包的重傳直到接收到無錯誤的確認,從而提供錯誤檢測和丟失的數據功能。TCP協議與應用程序層協議(例如(FTP)文件傳輸協議,(SMTP)簡單郵件傳輸協議和(HTTP)超文本傳輸協議)保持通信。
什么是UDP?
用戶數據報協議(UDP)是一種無連接的傳輸層通信協議,用于建立低容忍和丟失等待時間的連接,以在網絡內或網絡之間傳遞服務或數據包。它與Internet協議套件結合在一起,可以替代TCP協議。
UDP會構造一個數據報包,并使用IP端口號和數據包以及可選的校驗和功能來尋址該數據報包,以驗證完整數據到達的接收。由于UDP協議是簡單協議,可以在發送方端決定是否重發數據包,以在數據傳輸上以低延遲換取高可靠性。由于網絡廣播功能可以將數據包廣播到同一網絡上的某些計算機,UDP減少了總體網絡通信量,并且無需在網絡上進行重復。由于UDP是無連接協議,數據內容包的傳遞或順序會有所不同。
UDP與更高級別的協議(例如瑣碎的文件傳輸協議,實時流協議,簡單的網絡協議和域名系統查找)結合使用,以管理整個網絡上的數據傳輸服務。
TCPVsUDP協議
UDP:有人向快遞員傳遞了一條消息,該消息會在他們走開之前盡力向接收者的方向扔。
TCP:有人向快遞員傳遞消息,然后在信箋上寫上序號,進行復印,然后將原件盡可能向接收者方向扔,然后等待答復,然后將其遞回給發送者。如果他們沒有收到答復,則他們再制作一份并發送。當他們收到答復時,將其交給發件人,并丟棄其副本。如果答復不正確,則在將其交給發件人之前,他們會按正確的順序排列它們。
在UDP情況下,發件人在郵件傳遞中承擔更多責任。在TCP情況下,快遞員承擔更多責任。在TCP情況下,發件人必須向快遞員“支付更多”的內存,延遲和開銷。在某些情況下,為保證消息傳遞而增加的成本是不值得的。
TCP具有類似的建立協議,稱為“三向握手”?!翱蛻舳恕保ㄓ腥艘筮B接)將向正在監聽這些消息的“服務器”發送“SYN”(同步請求)消息;如果服務器決定接受該請求,它將發送回“SYN/ACK”消息,以確認先前的請求并請求其自己的通信“返回通道”。然后,客戶端發送回“ACK”消息,以確認服務器的請求,并建立雙向通信通道。
可以將UDP視為對講機。按下一個按鈕并開始通話,任何聽過該頻率的人都將聽到它,除非他們也使用相同的頻率進行通話。
數據傳輸功能
TCP支持在兩個主機之間建立牢固的連接以交換流中的數據。TCP保證以與服務器發送給用戶的順序相同的方式傳遞數據,反之亦然。TCP是一種面向連接的協議。UDP是無連接的,并且非專用協議不會檢查接收方主機的準備情況。
可靠性
TCP的可靠性相對較高,因為它可以確保在傳輸過程中丟失數據部分的情況下進行消息確認和數據重傳。機不會丟失任何丟失的數據。另一方面,UDP不提供消息確認,超時或重傳功能的概念。不存在有關分組是否已到達接收方或在傳輸中丟失的通信。
序列
TCP傳輸數據包的順序與接收到的順序相同。萬一數據包以錯誤的順序到達,TCP會對它們重新排序并以正確的順序傳遞。在UDP的情況下,以特定順序發送的消息可能會或可能不會在交付主機時得到維護。傳輸分組的順序或順序是不可預測的。
連接
TCP連接非常重要,它需要將近三個數據包才能進行適當的套接字連接,并且可以處理擁塞控制和可靠的傳遞。另一方面,UDP連接是輕量級的,可傳輸通過特定IP設計的層。沒有連接正在跟蹤或排序消息。
數據流
傳輸控制協議以字節流的形式讀取數據,并將消息傳輸到段邊界。UDP消息包含一一發送的數據包,并在到達時檢查其完整性。
傳輸速度
與UDP相比,TCP的速度較慢,因為它檢查錯誤并重新傳輸數據包。
標頭大小
標頭的TCP大小為20個字節,而UDP為8個字節。但是,它們具有公共標頭字段,即源點,目標點和校驗和。
其他協議的使用
由其他協議使用FTP,SMTP,HTTP,HTTP,Telnet,TCP協議和TFTP,SNMP,DNS,DHCP,RIP,VOIP使用UDP協議。
錯誤檢測
傳輸控制協議通過校驗和檢測錯誤并執行錯誤恢復。如果有任何數據包有誤,則接收者不會確認它們,進而觸發主機/發送者的重新傳輸。
這種機制稱為PAR(帶重傳的肯定確認)。由于TCP比UDP慢,TCP適用于不需要高速或傳輸時間較長的應用程序。
關于錯誤檢測和錯誤恢復,UDP會盡力而為。該協議還支持錯誤檢測。但是,校驗和檢測到的錯誤數據包將被丟棄。UDP不會嘗試重新傳輸數據包。
UDP不嘗試重發數據包的原因是該協議通常用于對時間敏感的應用程序,例如語音傳輸,游戲等。嘗試進行重發時,恢復嘗試毫無意義,并且數據包被接收,它們將無用。
總結
TCP/UDP協議,是傳輸層的標準協議,根據應用的場景和需求來決具體使用何種協議,是網絡編程的基本規律,根據不同場景選擇合適的協議。
TCP應用場景:
效率要求相對低,但對準確性要求相對高的場景。例如:文件傳輸、收發郵件、遠程登錄。
UDP應用場景:
效率要求相對高,對準確性要求相對低的場景。例如:視頻會議等。
以上是我的淺薄之見,歡迎指正,謝謝!