傳輸層協議介紹
目錄傳輸層協議介紹TCP 協議TCP報文段:TCP三次握手和四次揮手UDP協議TCP 協議
在 TCP/IP 協議棧中,傳輸層有兩個協議: TCP(傳輸控制協議)和 UDP(使用者資料報協議)。TCP 協議傳輸更加穩定可靠,UDP 協議傳輸效率更高。這兩個協議各有特點,在實際應用中,根據實際應用的需要,選擇不同的傳輸層協議。比如:Web、郵箱等對可靠性要求高的服務,都使用 TCP 協議來傳輸; 對於即時通訊、DHCP 等要求快速完成資訊傳遞的服務,就使用 UDP 協議來傳輸。TCP 是面向連線的、可靠的程序到程序通訊的協議。TCP 提供全雙工服務,即資料可在同一時間雙向傳輸,每一個 TCP 都有傳送快取和接收快取,用來臨時儲存資料
TCP報文段:
源埠口號:傳送方程序的埠號。
目標埠號:接收端程序的埠號:接收端程序
序號:傳送端為每個位元組進行編號便於接收段端正確重組
當TCP從程序接送資料位元組是
確認號:對傳送端確認資訊
首部長度:用它可以確認TCP首部資料結構的位元組長度,一般情況下TCP首部是20位元組,但首部長度最大可以擴充套件為60位元組。
保留:這部分保留位供今後擴充套件功能用,現在還沒有使用到。
六個控制位:
URG:緊急位。緊急指標有效位
ACK:確認位。只有當ACK=1時,確認***欄位才有效;當ACK=0時,確認號欄位無效
PSH:急迫位。標誌位為1時,要求接收方儘快將資料段送達應用層。
RST:重置位。當RST值為1時,通知重新建立TCP連線。
SYN:同步(連線)位。同步序號位,TCP需要建立連線時將這個值設為1
FIN:斷開位。當TCP完成資料傳輸需要斷開連線時,提出斷開連線的一方將這個值設為1.資料段的數目。這個值的大小是可變的,
視窗大小:說明本地可接受資料段的數目。這個值的大小是可變的,當網路通常是接送端響應訊息會將這個視窗值變大以加快傳輸速度,當網路不穩定時減小這個值可保證網路資料的可靠傳輸,TCP中的流量控制機制就是依靠變化視窗的大小實現的。
例如下載速度從一開始的KB逐漸提升到幾MB的過程
校驗和:用來做差錯控制。欄位檢驗的範圍包括首部和資料這兩部分。資料段在傳送時和到達目的地時會進行校驗和計算,若這兩次的校驗和一致,則說明
資料基本是正確的,否則將認為該資料已被破壞,接收端將丟棄該資料。
緊急指標:和URG配合使用,當URP=1時有效
選項:在TCP首部可以有多達40位元組的可選資訊。例如,最大報文段長度MSS (Maximum Segment Size)。 MSS告訴對方TCP:“我的快取所能接收的報文段的資料欄位的最大長度是MSS個位元組。
TCP三次握手和四次揮手
TCP的連線的過程為三次握手
就像兩個同學對話,A同學問B同學,你能聽到我說話嗎?A向B傳送一個能不能聽到說話的一個連線請求,B同學收到A同學說的話,這時候就是第一次握手成功,證明A-B這條路是沒問題的,然後B同學會回答A同學,我可以聽到,你能聽到我說話嗎?,這時候相當於B傳送一個確認以及連線請求給A,這是第二次握手,A收到以後再次告訴B,我也可以聽到你說話,這時候是A向B再次傳送一個確認,這就是第三次握手,這時候證明B到A這條路也沒問題,兩條路都是通的,這就是我對三次握手的白話理解。
TCP四次揮手
四次斷開,更好理解一點,A告訴B,我傳給你的東西傳完了,我要跟你斷開了,B收到以後告訴A,那你斷吧,然後B再告訴A,我給你的東西也傳完了,我也斷開了,A收到以後再告訴B,那你斷吧
UDP協議
相比 TCP 協議而言,UDP 是一個無連線、不保證可靠性的傳輸層協議,也就是說傳送端不關心傳送的資料是否到達目標主機、資料是否出錯等,收到資料的主機也不會告訴傳送方是否收到了資料,它的可靠性由上層協議來保障。既然 UDP 有這樣的缺點,那為什麼程序還願意使用它呢?因為 UDP 也有優點, UDP 的首部結構簡單,在資料傳輸時能實現最小的開銷,如果程序想傳送很短的報文而不關心可靠性,就可以使用 UDP。使用 UDP 傳送很短的報文時,在傳送端和接收端之間的互動要比使用 TCP 時少得多。因此,相比 TCP 協議,UDP 傳輸資料速度更快,效率更高。
UDP 首部的格式:
各欄位的含義如下。 源埠號:用來標識資料傳送端的程序,和 TCP 協議的埠號類似。 目的埠號:用來標識資料接收端的程序,和 TCP 協議的埠號類似。 UDP 長度:用來指出 UDP 的總長度,為首部加上資料。 校驗和:用來完成對 UDP 資料的差錯檢驗,它的計算與 TCP 校驗和類似。這是 UDP提供的唯一可靠機制。UDP 在實際工作中的應用範圍很廣。例如,聊天工具 QQ 在處理傳送短訊息時就是使用了 UDP 的方式。不難想象,如果傳送十幾個字的短訊息也使用 TCP 進行一系列的驗證,將導致傳輸率大大下降。有誰願意用一個“反應遲鈍”的軟體進行網路聊天呢?在網路飛速發展的今天,網路技術日新月異,對於常用的簡單資料傳輸來說,UDP 不失為一個很好的選擇