吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

33張圖詳解TCP和UDP:打通網絡和應用的中間人

SDNLAB ? 來源:網絡技術平臺 ? 作者:Fox ? 2022-12-06 10:56 ? 次閱讀

先來一張全景圖,3 秒快速了解整篇文章的內容。

3e870afe-747d-11ed-8abf-dac502259ad0.png

初始傳輸層

前面說過,傳輸層的作用是建立應用程序間的端到端連接,為數據傳輸提供可靠或不可靠的通信服務。傳輸層有兩個重要協議,分別是 TCP 和 UDP。TCP 是面向連接的可靠傳輸協議,UDP 是無連接的不可靠傳輸協議。

3e93f804-747d-11ed-8abf-dac502259ad0.png

傳輸層協議

一個 IP 地址可以標識一臺主機,IP 報文頭部有一個字段,用來標識上層協議類型。根據這個字段的協議號,來識別 IP 傳輸的數據是 TCP 還是 UDP 。IP 用協議號 6 標識 TCP ,用協議號 17 標識 UDP 。但一臺主機可能同時有多個程序,傳輸層的 TCP 和 UDP ,為了識別上一層的應用程序類型,使用端口號來識別具體的程序,從而使這些程序可以復用網絡通道。

3eaf60bc-747d-11ed-8abf-dac502259ad0.png

協議號和端口號

二層的幀通信和三層的包通信都是無連接的、不可靠的通信方式,四層的 TCP 卻是一種可靠的通信方式。如果幀在傳輸中丟失,通信雙方的二層功能模塊發現不了;如果包在傳輸中丟失,通信雙方的三層功能模塊發現不了。燃鵝,一個 TCP 段丟失了,TCP 模塊一定能夠發現。一個 TCP 段的丟失,意味著一個 IP 包的丟失,因為 TCP 段是封裝在 IP 包里的;同理,一個 IP 包的丟失,意味著一個幀的丟失。因此,二層和三層通信的不可靠性在 TCP 這里得到補償。

3ec691ce-747d-11ed-8abf-dac502259ad0.png

數據封裝

應用程序其實就是 TCP/IP 的應用協議,應用協議大多以客戶端/服務端的形式運行。客戶端( Client ,使用服務的一方。)是請求的發起端。而服務端( Server ,提供服務的程序或主機。)則是請求的處理端。作為服務端的程序有必要提前啟動,隨時準備接收客戶端的請求。否則即使有客戶端的請求發過來,也無法進行處理。

3eeeb848-747d-11ed-8abf-dac502259ad0.png

Client/Server模式

確認一個請求究竟是發給哪一個服務端,可以通過收到數據包的目的端口號輕松識別。當收到 TCP 的建立連接請求時,如果目的端口號是 22 ,則轉給 SSH ,如果是 80 則轉給 HTTP 。

>TCP

TCP 是面向連接的、可靠的流協議。流就是不間斷的數據,當應用程序采用 TCP 發送消息時,雖然是按順序發送,但接收端收到是沒有間隔的數據流。比如,在發送端應用程序發送了 10 次 100 字節的數據,那么在接收端,應用程序可能會收到一個 1000 字節連續不間斷的數據。

3f019346-747d-11ed-8abf-dac502259ad0.png

可靠傳輸

TCP 為提供可靠性傳輸,實行順序控制、重發控制機制。此外還有流量控制、擁塞控制、提高網絡利用率等眾多功能。

>UDP

**UDP **是不具有可靠性的協議,可靠性功能交給上層的應用去完成。UDP 雖然可以確保發送數據的大小,比如:發送端應用程序發送一個 100 字節的消息,那么接收端應用程序也會以 100 字節為長度接收數據。但不能保證數據一定會到達。因此,應用有時會根據需要進行重發處理。

3f16f8b2-747d-11ed-8abf-dac502259ad0.png

不可靠傳輸

>TCP 和 UDP 的區別

TCP 是可靠的傳輸協議,一定會優于 UDP 嗎?其實不然,TCP是面向連接的,并且具備順序控制、重發控制等機制,可以為應用提供可靠傳輸。而 UDP 主要用于對高速傳輸和實時性有較高要求的通信。比如:通過 IP 電話進行通話。如果使用 TCP ,數據如果丟失會重發,這樣就無法流暢地傳輸通話的聲音,導致無法進行正常交流。而采用 UDP ,它不會進行重發處理。也就不會有聲音大幅度延遲到達的問題。即使有部分數據丟失,也只會影響小部分的通話。因此,TCP 和 UDP 需要根據應用的目的選擇使用。

端口號

數據鏈路層和網絡層的地址,分別是 MAC 地址和 IP 地址。MAC 地址用來標識同一網段中不同的設備,IP 地址標識網絡中的主機或路由器。傳輸層的地址就是端口號,端口號用來識別同一臺主機中不同的應用程序,也被稱為程序地址。

一臺主機可以同時運行多個程序,比如 WWW 服務的 Web 瀏覽器、電子郵箱客戶端等程序都可同時運行。傳輸層協議正是利用這些端口號,識別主機正在進行通信的應用程序,并準確的傳輸數據。

3f2af740-747d-11ed-8abf-dac502259ad0.png

端口號

僅僅通過目的端口來識別某一個通信是不準確的。兩臺主機訪問的目的端口號 80 相同,可以根據源端口號區分這兩個通信。

目的端口號和源端口號相同,但是兩臺主機的源 IP地址不同;IP 地址和端口號都一樣,只是協議號不同。這些情況,都會認為是兩個不同的通信。

因此,網絡通信中通常采用 5 個信息來識別一個通信。它們是源 IP 地址、目的 IP 地址、協議號、源端口號、目的端口號。只要其中一項不同,就會認為是不同的通信。

3f3f6482-747d-11ed-8abf-dac502259ad0.png

會話五元素

TCP/UDP 的端口號是一個 16 位二進制數,端口號范圍為 0 ~ 65535 。在實際進行通信時,要事先確定端口號。確定端口號的方法分為兩種:

1)標準端口號

這種方法也叫靜態方法。它是指每個應用程序都有指定的端口號。HTTP 、TELNET 、FTP 等常用的應用程序所使用的端口號是固定的,這些端口號又稱為知名端口號。知名端口號范圍是 0 ~ 1023 。

除了知名端口號外,還有一些端口號也被正式注冊,稱為注冊端口。它們分布在 1024 ~ 49151 之間。

3f60f1c4-747d-11ed-8abf-dac502259ad0.png

標準端口號

2)時序分配法

這種方法也叫動態分配法。服務端有必要確定監聽的端口號,但是接受服務的客戶端不需要確定端口號。

客戶端應用程序不用設置端口號,由操作系統進行分配。操作系統可以為每個應用程序分配不沖突的端口號。比如:每需要一個新的端口號時,就在之前分配號碼的基礎上加 1 。這樣,操作系統就可以動態管理端口號了。

動態分配的端口號范圍是 49152 ~ 65535 之間。

UDP

UDP ,全稱 User Datagram Protocol 。UDP 不提供復雜的控制機制,利用 IP 提供面向無連接的、不可靠的通信服務。并且它是將應用程序發來的數據,在收到的那一刻,立即按照原樣發送到網絡上的一種機制。

即使在網絡出現擁堵的情況下,UDP 也無法進行流量控制。傳輸途中出現丟包,UDP 也不負責重發。當出現包的到達順序錯誤時也沒有糾正的功能。如果需要這些細節控制,那么需要交由上層的應用程序去處理。也可以說,是損失信息傳輸的可靠性來提升信息傳輸的效率。

UDP 的特點如下:

UDP 是無連接的:UDP 發送數據前不與對方建立連接。

UDP 不對數據進行排序:UDP 報文的頭部沒有數據順序的信息。

UDP 對數據不發送確認,發送端不知道數據是否被正確接收,也不會重發數據。

UDP 傳送數據比 TCP 快,系統開銷也少。

UDP 缺乏擁塞控制機制,不能夠檢測到網絡擁塞。

由于 UDP 面向無連接,它可以隨時發送數據。再加上 UDP 本身的處理既簡單又高效,因此常用于以下幾個方面:

包總量較少的通信( DNS 、SNMP 等)

視頻音頻等多媒體通信(即時通信)

只在局域網使用的應用通信

廣播通信(廣播、多播)

3f6fd6a8-747d-11ed-8abf-dac502259ad0.png

UDP知名端口號

TCP

UDP 將部分控制轉移給應用程序去處理,只提供作為傳輸層協議的最基本功能。與 UDP 不同,TCP 是對傳輸、發送、通信進行控制的協議。

主要特點如下:

三次握手建立連接:確保連接建立的可靠性。

端口號:通過端口號識別上層協議和服務,實現網絡的多路復用。

完整性校驗:通過計算校驗和,保證接收端能檢測出傳輸過程中可能出現的錯誤。

確認機制:對于正確收到的數據,接收端通過確認應答告知發送方,超出一定時間后,發送方將重傳沒有被確認的段,確保傳輸的可靠性。

序列號:發送的數據都有唯一的序列號,標識了每一個段。接收端可以利用序列號實現丟失檢測、亂序重排等功能。

窗口機制:通過可調節的窗口,TCP 接收端可以告知希望的發送速度,控制數據流量。

TCP 實現了數據傳輸時各種控制功能,可以進行丟包時的重發控制,還可以對次序錯誤的分包進行順序控制。作為一種面向有連接的協議,只有在確定對端存在時,才會發送數據,從而可以控制通信流量的浪費。由于 UDP 沒有連接控制,即使對端不存在或中途退出網絡,數據包還是能夠發送出去。

1)連接

連接是指網絡中進行通信的兩個應用程序,為了相互傳遞消息而專有的、虛擬的通信線路,也叫做虛擬電路。

一旦建立了連接,進行通信的應用程序只使用這個虛擬線路發送和接收數據,就可以保障信息的傳輸。應用程序可以不用考慮 IP 網絡上可能發生的各種問題,依然可以轉發數據。TCP 則負責連接的建立、斷開、保持等管理工作。

3f83a732-747d-11ed-8abf-dac502259ad0.png

連接

為了在不可靠的 IP 通信實現可靠性傳輸,需要考慮很多事情,數據的破壞、丟包、重復以及分片順序混亂等問題。TCP 通過校驗和、序列號、確認應答、重發控制、連接管理以及窗口控制等機制實現可靠性傳輸。

3f92af02-747d-11ed-8abf-dac502259ad0.png

TCP知名端口號

>序列號和確認應答

在 TCP 中,當發送端的數據到達接收主機時,接收端主機會返回一個已收到的消息。這個消息叫做確認應答( ACK )。

3fb03496-747d-11ed-8abf-dac502259ad0.png

正常數據傳輸

TCP 通過確認應答實現可靠的數據傳輸。當發送端將數據發出后,會等待對端的確認應答。如果有確認應答,說明數據已經成功到達對端。否則,數據可能已經丟失。

在一定時間內沒有等到確認應答,發送端會認為數據已經丟失,并進行重發。這樣,即使有丟包,仍能保證數據到達對端,實現可靠傳輸。

3fcbca44-747d-11ed-8abf-dac502259ad0.png

數據丟失

未收到確認應答,不一定是數據丟失。也可能對端已經收到數據,返回的確認應答在途中丟失,也會導致發送端重發。此外,也可能確認應答延遲到達,發送端重發數據后才收到。

3fe6b1ba-747d-11ed-8abf-dac502259ad0.png

確認應答丟失

每一次傳輸數據時,TCP 都會標明段的起始序列號,以便對方確認。在 TCP 中并不直接確認收到哪些段,而是通知發送方下一次應該發送哪一個段,表示前面的段已經收到。比如:收到的確認應答序列號是 N + 1 時,表示 N 以及 N 之前的數據都收到了。

3ffffd78-747d-11ed-8abf-dac502259ad0.png

序列號和確認應答

由于每一個段都有唯一的編號,這樣的話,當接收端收到重復的段時容易發現,數據段丟失后也容易定位,亂序后也可以重新排列。

>超時重發

超時重發是指在重發數據之前,等待確認應答到來的那個間隔時間。如果超過 RTT(往返時間),仍未收到確認應答,發送端將進行數據重發。

401b61bc-747d-11ed-8abf-dac502259ad0.png

往返時間

數據被重發后,若還收不到確認應答,則再次發送。這時,等待確認應答的時間將會以 2 倍、4 倍的指數函數增長。數據也不會無限地重發,達到一定的重發次數后,還沒收到確認應答,就會認為網絡或對端主機發送異常,強制關閉連接,并通知應用通信異常強行終止。

RTT 時間是一個非常重要的參數。過大的 RTT 會導致 TCP 重傳非常慢,降低傳輸的速度;過小的 RTT 會導致 TCP 頻繁重傳,降低資源的使用效率。在實際情況下,通過實時跟蹤數據往返的時間間隔來動態調整 RTT 的數值。

>連接管理

TCP 提供面向有連接的通信傳輸,面向有連接是指在數據通信前做好通信兩端的準備工作。在數據通信前,發送一個 SYN 包作為建立連接的請求。如果對端發來確認應答,則認為可以開始數據通信。如果對端的確認應答未能到達,就不會進行數據通信。在通信結束時,會使用 FIN 包進行斷開連接的處理。

SYN 包和 FIN 包是通過 TCP 頭部的控制字段來管理 TCP 連接。一個連接的建立與斷開,正常過程至少需要來回發送 7 個包才能完成。建立一個 TCP 連接需要發送 3 個包,這個過程叫作三次握手。斷開一個 TCP 連接需要發送 4 個包,這個過程也稱作四次揮手。創建一個 TCP 連接,會產生一個 32 位隨機序列號,因為每一個新的連接使用一個新的隨機序列號。

40396932-747d-11ed-8abf-dac502259ad0.png

連接管理

>三次握手

主機 A 想向主機 B 發送數據,TCP 模塊通過三次握手建立連接 TCP 會話。

三次握手,是指 TCP 會話建立過程中共交換了 3 個 TCP 控制段,它們分布是 SYN 段、SYN + ACK 段、ACK 段。

詳細過程如下:

發送端主機 A 向接收端主機 B 發出 SYN 段,表示發起建立連接請求,同時把自己的狀態告訴主機 B 。將段的序列號設為 a ,SYN 置位,表示 SYN 管理段。

主機 B 收到連接請求后,回應 SYN + ACK 段,將序列號設為 b ,確認號設為 a + 1 ,同時將 SYN 和 ACK 置位。

主機 A 收到主機 B 的連接確認后,發送 ACK 段再次進行確認,確認會話的建立,將 ACK 置位。主機 A 收到確認號是 a + 1 、序列號是 b 的段后,發送序列號為 a + 1 、確認號為 b + 1 的段進行確認。

主機 B 收到確認報文后,連接建立。雙方可以開始傳輸數據。

4056042a-747d-11ed-8abf-dac502259ad0.png

三次握手

經過 3 次握手后,A 和 B 之間其實是建立了兩個 TCP 會話,一個是從 A 指向 B 的 TCP 會話,另一個是從 B 指向 A 的 TCP 會話。A 發送的 SYN 段,表示 A 請求建立一個 從 A 指向 B 的 TCP 會話,目的是控制數據能夠正常、可靠的從 A 傳輸到 B 。B 在收到 SYN 段后,會發送一個 SYN + ACK 段作為回應。SYN + ACK 的含義是:B 一方面同意了 A 的請求,另一方面也請求建立一個從 B 指向 A 的 TCP 會話,這個會話目的是控制數據能夠正確、可靠的從 B 傳輸到 A 。A 收到 SYN + ACK 段后,回應一個 ACK ,表示同意 B 的請求。

>四次揮手

當 TCP 數據段的傳輸結束時,雙方都需要發送 FIN 段和 ACK 段來終止 TCP 會話。這個方式叫做四次揮手,詳細過程如下:

主機 A 想要終止連接,發送序列號為 p 的段,FIN 置位,表示 FIN 管理段。

主機 B 收到主機 A 發送的 FIN 段后,發送 ACK 段,確認號為 p + 1 ,同時關閉連接。

主機 B 發送序列號為 q的段,FIN 置位,通知連接關閉。

主機 A 收到主機 B 發送的 FIN 段后,發送 ACK 段,確認號為 q + 1 ,同時關閉連接。TCP 連接至此結束。

40778f78-747d-11ed-8abf-dac502259ad0.png

四次揮手

TCP 會話的終止分為兩個部分。首先 A 發送 FIN 控制段,請求終止從 A 到 B 的 TCP 會話。B 回應 ACK 段,表示同意 A 的終止會話請求。A 收到 B 的 ACK 段后,才開始終止這個會話。同理,B 也會向 A 發起請求,終止從 B 到 A 的 TCP 會話。

>單位段

經過傳輸層協議封裝后的數據稱為段。在建立 TCP 連接時,可以確定數據段的大小,也就是最大消息長度( MSS )。TCP 在傳輸大量數據時,是以 MSS 的大小將數據進行分割發送,重發也是以 MSS 為單位。

409783fa-747d-11ed-8abf-dac502259ad0.png

MSS分片

MSS 是在三次握手時,由兩端主機計算出來的。兩端主機在發出建立連接的請求時,會在 TCP 頭部寫入 MSS 值。然后在兩者間選擇較小的值使用。MSS 默認值為 536 字節,理想值是 1460 字節,加上 IP 頭部 20 字節和 TCP 頭部 20字節,剛好在 IP 層不會被分片。

40ae85a0-747d-11ed-8abf-dac502259ad0.png

MSS協商

>窗口控制

TCP 是以 1 個段為單位,每發一個段進行一次確認應答。如果包的往返時間越長,通信性能就越低。

40d1f8b4-747d-11ed-8abf-dac502259ad0.png

按數據包確認應答

為解決這個問題,TCP 引入了窗口的概念。確認應答不再是每個分段,而是以窗口的大小進行確認,轉發時間被大幅度的縮短。窗口大小就是指無需等待確認應答,而可以繼續發送數據的最大值。窗口大小是一個 16 位字段,因此窗口最大是 65535 字節。在 TCP 傳輸過程中,雙方通過交換窗口的大小來表示自己剩余的緩沖區( Buffer )空間,以及下一次能夠接受的最大數據量,避免緩沖區的溢出。

40f4b002-747d-11ed-8abf-dac502259ad0.png

滑動窗口

發送數據中,窗口內的數據即使沒有收到確認應答也可以發送出去。如果窗口中的數據在傳輸中丟失,也需要進行重發。因此,發送端主機在收到確認應答前,必須在緩沖區保留這部分數據。

收到確認應答后,將窗口滑動到確認應答中的序列號位置。這樣可以按順序將多個段同時發送,這種機制也被稱為滑動窗口控制。

41124cf2-747d-11ed-8abf-dac502259ad0.png

滑動窗口控制

>窗口控制和重發控制

在使用窗口控制時,如果出現確認應答未能返回的情況,數據已經到達對端,是不需要再進行重發的。然而,在沒有使用窗口控制時,沒收到確認應答的數據是會重發的。而使用了窗口控制,某些確認應答即使丟失也無需重發。

412e0d8e-747d-11ed-8abf-dac502259ad0.png

窗口控制重發

如果某個報文段丟失,接收主機收到序號不連續的數據時,會為已經收到的數據返回確認應答。即使接收端收到的包序號不是連續的,也不會將數據丟棄,而是暫時保存至緩沖區。出現報文丟失時,同一個序號的確認應答將會被重復發送。如果發送端收到連續 3 次同一個確認應答,就會將對應的數據進行重發。這種機制比超時管理更高效,也被稱為高速重發機制。

416a5f3c-747d-11ed-8abf-dac502259ad0.png

高速重發控制

>流控制

接收端處于高負荷狀態時,可能無法處理接收的數據,并丟棄數據,就會觸發重發機制,導致網絡流量無端浪費。

為了防止這種情況,TCP 提供一種機制可以讓發送端根據接收端的實際接收能力控制發送的數據量,這就是流控制。它的具體操作是,接收端主機通知發送端主機自己可以接收數據的大小,于是發送端會發送不超過這個限度的數據。這個限度的大小就是窗口大小。

TCP 頭部中有一個字段用來通知窗口大小。接收主機將緩沖區大小放入這個字段發送給接收端。當接收端的緩存不足或處理能力有限時,窗口大小的值會降低一半,從而控制數據發送量。也就是說,發送端主機會根據接收端主機的指示,對發送數據的量進行控制,也就形成了一個完整的 TCP 流控制。

若接收端要求窗口大小為 0 ,表示接收端已經接收全部數據,或者接收端應用程序沒有時間讀取數據,要求暫停發送。

418d5fd2-747d-11ed-8abf-dac502259ad0.png

流控制

如果窗口更新的報文丟失,可能會導致無法繼續通信。為避免這個問題,發送端主機會時不時的發送一個叫窗口探測的數據段,此數據段僅含一個字節以獲取最新的窗口大小信息。

>擁塞控制

有了 TCP 的窗口控制,收發主機之間不再以一個數據段為單位發送確認應答,也能夠連續發送大量數據包。在網絡出現擁堵時,如果突然發送一個較大量的數據,有可能會導致整個網絡癱瘓。

為了防止這個問題出現,在通信開始時,就會通過一個叫慢啟動的算法得出的數值,對發送數據量進行控制。

41acf5b8-747d-11ed-8abf-dac502259ad0.png

慢啟動

為了在發送端調節發送數據的量,需要使用擁塞窗口。在慢啟動時,將擁塞窗口的大小設置為 1 MSS 發送數據,之后每收到一次確認應答( ACK ),擁塞窗口的值就加 1 。在發送數據包時,將擁塞窗口的大小與接收端主機通知的窗口大小做比較,選擇它們當中較小的值發送數據。這樣可以有效減少通信開始時連續發包導致網絡擁堵,還可以避免網絡擁塞的發生。

TCP 和 UDP 的對比

41cb7d30-747d-11ed-8abf-dac502259ad0.png

TCP和UDP對比

UDP 格式

UDP 段由 UDP 頭部和 UDP 數據組成。UDP 頭部有源端口號、目的端口號、長度、校驗和組成,UDP 頭部長度為固定的 8 字節。

41e9f56c-747d-11ed-8abf-dac502259ad0.png

UDP報文格式

源端口號:字段長 16 位,表示發送端 UDP 端口號。

目的端口號:字段長 16 位,表示接收端 UDP 端口號

長度:字段長 16 位,表示 UDP 頭部和 UDP 數據的總長度。

校驗和:字段長 16 位,是錯誤檢查的字段,包括 UDP 頭和 UDP 數據的內容計算得出,用于檢查傳輸過程中出現的錯誤。

TCP 格式

TCP 頭部比 UDP 頭部復雜得多,由一個 20 字節的固定長度加上可變長的選項字段組成。

42042644-747d-11ed-8abf-dac502259ad0.png

TCP報文格式

源端口號:字段長 16 位,表示發送端 TCP 端口號。

目的端口號:字段長 16 位,表示接收端 TCP 端口號。

序列號:字段長 32 位,是指 TCP 段數據的位置序號。根據序列號來判斷是否存在重收、漏收、亂序等情況。

確認號:字段長 32 位,是指下一次應該收到的數據的序列號。收到這個確認號,表示這個確認號之前的數據都已經正常收到。

數據偏移:字段長 4 位,表示 TCP 數據從哪一位開始計算,也可以看作 TCP 頭部的長度。

保留:字段長 6 位,保留給以后擴展使用。

控制位:字段長 6 位,每 1 位標志位可以打開一個控制功能,也叫做控制位。從左到右分別是 URG 、ACK 、PSH 、RST 、SYN 、FIN 。

4227731a-747d-11ed-8abf-dac502259ad0.png

控制位

URG:標志位為 1 時,表示有需要緊急處理的數據。

ACK:標志位為 1 時,表示確認應答有效。

PSH:標志位為 1 時,表示將數據立即上傳給應用程序,而不是在緩沖區排隊。

RST:標志位為 1 時,表示 TCP 連接出現異常,必須強制斷開連接。

SYN:標志位為 1 時,表示請求建立連接,并設置序列號的初始值。

FIN:標志位為 1 時,表示數據發送結束,請求斷開 TCP 連接。

窗口:字段長 16 位,標明滑動窗口的大小,表示自己還能接收多少字節的數據。

校驗和:字段長 16 位,是錯誤檢查的字段,包括 TCP 頭和 TCP 數據的內容計算得出,用于檢查傳輸過程中出現的錯誤。

緊急指針:字段長 16 位,表示緊急數據的長度。當 URG 位為 1 時,這個字段才有效。

選項:字段的長度是可變的。通過添加不同的選項,實現 TCP 的一些擴展功能。

填充:如果 TCP 段的頭部不是 4 字節的整數倍,就填充一些 0 ,來保證頭部長度是 4 字節的整數倍。

數據:TCP 段的數據部分,不是 TCP 頭部內容,字段最大是 MSS 。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 網絡
    +關注

    關注

    14

    文章

    7599

    瀏覽量

    89251
  • TCP
    TCP
    +關注

    關注

    8

    文章

    1378

    瀏覽量

    79302
  • UDP
    UDP
    +關注

    關注

    0

    文章

    327

    瀏覽量

    34043
  • 傳輸層
    +關注

    關注

    0

    文章

    30

    瀏覽量

    10934
  • Client
    +關注

    關注

    0

    文章

    10

    瀏覽量

    8828

原文標題:33 張圖詳解 TCP 和 UDP :打通網絡和應用的中間人

文章出處:【微信號:SDNLAB,微信公眾號:SDNLAB】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    基于ARP緩存超時的中間人攻擊檢測方法

    探討ARP協議工作機理,通過對內部網絡通信危害較大的ARP欺騙技術的分析,提出一種交換網絡環境下基于ARP緩存超時機制的中間人攻擊行為檢測方法,研究Windows操作系統中ARP緩存超
    發表于 04-18 09:41 ?17次下載

    基于TCPUDP的多路多數據流融合網絡系統設計

    為節省網絡資源,充分利用TCPUDP兩種網絡傳輸協議各自的優勢,設計了TCPUDP的多路多數
    發表于 11-14 11:05 ?35次下載
    基于<b class='flag-5'>TCP</b>、<b class='flag-5'>UDP</b>的多路多數據流融合<b class='flag-5'>網絡</b>系統設計

    基于ARP欺騙的中間人攻擊的檢測與防范_劉衍斌

    基于ARP欺騙的中間人攻擊的檢測與防范_劉衍斌
    發表于 03-19 11:33 ?0次下載

    tcpudp協議的異同

    UDP 校驗和則是包含 UDP 首部和數據在內的校驗結果。 TCP協議 TCP協議基于網絡層的 IP 協議提供的是有連接、可靠服務,是基于
    的頭像 發表于 11-12 14:45 ?4144次閱讀
    <b class='flag-5'>tcp</b>和<b class='flag-5'>udp</b>協議的異同

    TCPUDP可以同時綁定相同的端口嗎?

    TCPUDP可以同時綁定相同的端口嗎? 解答這個問題之前,我們需要先來了解什么是TCPUDP,什么又是網絡端口。
    的頭像 發表于 02-06 14:31 ?1330次閱讀
    <b class='flag-5'>TCP</b>和<b class='flag-5'>UDP</b>可以同時綁定相同的端口嗎?

    TCPUDP的原理以及區別

    TCP是基于連接的,而UDP是基于非連接的。 **tcp傳輸數據穩定可靠** ,適用于對網絡通訊質量要求較高的場景,需要準確無誤的傳輸給對方,比如,傳輸文件,發送郵件,瀏覽網頁等
    的頭像 發表于 05-18 17:14 ?1023次閱讀
    <b class='flag-5'>TCP</b>和<b class='flag-5'>UDP</b>的原理以及區別

    TCP/UDP網絡編程的基礎知識合集1

    本文主要記錄TCP/UDP網絡編程的基礎知識,采用TCP/UDP實現宿主機和目標機之間的網絡通信
    的頭像 發表于 05-18 17:31 ?748次閱讀

    TCP/UDP網絡編程的基礎知識合集2

    本文主要記錄TCP/UDP網絡編程的基礎知識,采用TCP/UDP實現宿主機和目標機之間的網絡通信
    的頭像 發表于 05-18 17:31 ?681次閱讀

    TCP/UDP網絡編程的基礎知識合集3

    本文主要記錄TCP/UDP網絡編程的基礎知識,采用TCP/UDP實現宿主機和目標機之間的網絡通信
    的頭像 發表于 05-18 17:31 ?845次閱讀
    <b class='flag-5'>TCP</b>/<b class='flag-5'>UDP</b><b class='flag-5'>網絡</b>編程的基礎知識合集3

    TCPUDP可以同時綁定相同的端口嗎?

    TCPUDP可以同時綁定相同的端口嗎?TCPUDP可以同時綁定相同的端口嗎?解答這個問題之前,我們需要先來了解什么是TCP
    的頭像 發表于 02-06 11:16 ?1912次閱讀
    <b class='flag-5'>TCP</b>和<b class='flag-5'>UDP</b>可以同時綁定相同的端口嗎?

    UDP一定比TCP更快嗎?什么情況下用UDP會更慢?

    當談到網絡傳輸時,大多數人可能認為TCP是最好的選擇。因為TCP是一種可靠的協議,它可以確保數據的可靠性和完整性。但是,當考慮到UDP時,一些
    的頭像 發表于 04-03 09:38 ?1671次閱讀
    <b class='flag-5'>UDP</b>一定比<b class='flag-5'>TCP</b>更快嗎?什么情況下用<b class='flag-5'>UDP</b>會更慢?

    TCPUDP的區別

    是可靠傳輸,使用流量控制和擁塞控制;UDP是不可靠傳輸 TCP首部最小20字節,最大60字節;UDP首部僅8字節。 2.ISO七層模型及相關協議 物理層:建立、維護、斷開物理連接。 數據鏈路層:在物理層提供比特流服務的基礎上,建
    的頭像 發表于 11-09 09:35 ?6496次閱讀
    <b class='flag-5'>TCP</b>和<b class='flag-5'>UDP</b>的區別

    TCPUDP的基本區別

    順序,UDP不保證 UDP應用場景: 面向數據報方式 網絡數據大多為短消息 擁有大量Client 對數據安全性無特殊要求 網絡負擔非常重,但對響應速度要求高
    的頭像 發表于 11-13 15:27 ?4702次閱讀
    <b class='flag-5'>TCP</b>與<b class='flag-5'>UDP</b>的基本區別

    udp是什么意思 簡述TCPUDP的區別和聯系

    UDP (User Datagram Protocol) 是一種在計算機網絡中使用的傳輸層協議。它與TCP (Transmission Control Protocol) 一樣,都是在因特網協議套件
    的頭像 發表于 02-02 16:33 ?1425次閱讀

    tcpudp的區別和聯系

    一、引言 在現代網絡通信中,數據傳輸是至關重要的。為了確保數據的可靠傳輸,網絡協議發揮著關鍵作用。傳輸控制協議(TCP)和用戶數據報協議(UDP)是兩種常用的
    的頭像 發表于 08-16 11:06 ?677次閱讀
    大发888代充值存款| 玩百家乐五湖四海娱乐城| 欧凯百家乐官网的玩法技巧和规则 | 沧源| 新澳博百家乐官网现金网| 百家乐官网龙虎| 新濠百家乐官网娱乐城 | 玩百家乐技巧看| 大发888亚洲游戏平台| 境外赌博下| 澳门百家乐官网破解方法| 澳门百家乐官网怎么下载| 百家乐推筒子| 大发888设置| 百家乐官网什么叫缆| 赌百家乐官网到底能赌博赢| 百家乐模拟分析程序| 威尼斯人娱乐场送1688元礼金领取lrm | 凤凰网上娱乐| 百家乐官网闲庄和| 在线百家乐官网策略| 加州百家乐的玩法技巧和规则 | 百家乐官网号破| 362百家乐的玩法技巧和规则| 778棋牌游戏| 赌博百家乐官网游戏| 百家乐庄和闲的赌法| 威尼斯人娱乐城信誉好不好 | 百家乐官网投注网址| 百家乐路单网下载| 威尼斯人娱乐官方网站| 法库县| 龙岩棋牌乐| 网络百家乐官网骗局| 试玩百家乐网| E世博开户| 百家乐官网多少钱| 菲律宾百家乐开户| 大发888 迅雷下载| 百家乐官网庄家怎样赚钱| 澳门百家乐路单|