傳輸層協議介紹
一.TCP協議與UDP協議介紹
二.TCP報文格式
三.TCP三次握手
四.TCP四次揮手
五.總結
一.TCP和UDP協議
TCP:傳輸控制協議
UDP:使用者資料協議
1.TCP與UDP的區別
TCP:面向連線網路協議,是指通訊雙方之間在進行通訊之前要先建立連線。比如打電話,雙方通話前需要先建立連線。等資料傳送結東後,雙方再斷開連線。
UCP:無連線網路協議,是指通訊雙方不需要事先建立一條通訊線路,而是把每個帶有目的地址的包送到網路線路上,由系統自主選定路線進行傳輸。比如Q傳送資訊
TCP是面向連線的、可靠的進到程序通訊的協議。CP提供全雙工服務,即資料可在同一時間雙向傳輸,每一個
UDP協議是無連線、不保證可靠性的傳輸層協議。傳送端不關心傳送的資料是否到達目標主機、資料是否出錯等,收到資料的主機也不會告訴傳送方是否收到了資料,它的可靠性由上層協議來保障。傳輸資料速度更快,效率更高
二.TCP報文格式:
源埠號 |
目標埠號 |
|||||||
序號 |
||||||||
確認號 |
||||||||
首部長度 |
保留 |
URG |
ACK |
PSH |
RST |
SYN |
FIN |
視窗大小 |
校驗和 |
緊急指標 |
|||||||
選項 |
源埠號:傳送方程序的埠號。
目標埠號:接收端程序的埠號。接收端收到資料段後,根據這個埠號來確定把資料送給哪個應用程式的程序。
序號:傳送端為每個位元組進行編號,便於接收端正確重組。
當TCP從程序接收資料位元組時,把它們分片成資料段儲存在傳送快取中,並對每一個位元組進行編號。當資料到達目的地後,接收端會按照這個序號把資料重新排列,保證資料的正確性
確認號:對傳送端的確認資訊
接收端響應訊息時將會用它來告訴傳送端這個序號之前的資料段都已經收到,如確認號是x,就是表示前X-1個數據段都已經收到
首部長度:用它可以確定TCP首部資料結構的位元組長度。一般情況下TCP首部是20位元組,但首部長度最大可以擴充套件為60位元組
控制位:
URG:緊急位。緊急指標有效位
ACK:確認位。只有當ACK=1時,確認序列號欄位才有效
PSH:急迫位。標誌位為1時,要求接收方儘快將資料段送達應用層
RST:重置位。當RST值為1時,通知重新建立TCP連線。
SYN:同步(連線)位。同步序號位,TP需要建立連線時將這個值設為1
FIN:斷開位。當TCP完成資料傳輸需要斷開連線時,提出斷開連線的一方將這個值設為1
視窗大小:說明本地可接收資料段的數目。這個值的大小是可變的,當網路通暢時接收端響應訊息會將這個視窗值變大以加快傳輸速度,當網路不穩定時減小這個值可保證網路資料的可靠傳輸,TCP中的流量控制機制就是依靠變化視窗的大小實現的。
比如下載速度從一開始的幾KB逐提升到幾兒MB的過程。
校驗和:用來做差錯控制。欄位檢驗的範圍包括首部和資料這兩部分。資料段在傳送時和到達目的地時會進行校驗和計算,若這炳次的校驗和一致,則說明資料基本是正確的,否則將認為該資料已被破壞,接收端將丟棄該資料
緊急指標:和URG配合使用,當URG=1時有效。
選項:在CP首部可以有多達40位元組的可選資訊。例如,最大報文段長度Ms( Maximum Segment size)。MS告訴對方TCP:我的快取所能接收的報文段的資料欄位的最大長度是MSS個位元組。
三:TCP三次握
第一次握手:建立連線時,客戶端傳送syn包(syn=j)到伺服器,並進入SYN_SENT狀態,等待伺服器確認;SYN:同步序列編號(Synchronize Sequence Numbers)。
第二次握手:伺服器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也傳送一個SYN包(syn=k),即SYN+ACK包,此時伺服器進入SYN_RECV狀態;
第三次握手:客戶端收到伺服器的SYN+ACK包,向伺服器傳送確認包ACK(ack=k+1),此包傳送完畢,客戶端和伺服器進入ESTABLISHED(TCP連線成功)狀態,完成三次握手。
四.TCP四次揮手
第一次揮手:Client傳送Fin=1,ACK=1 給Server端,表示自己要斷開連線,這個時候Client端已經沒有資料要傳送了。
第二次揮手:Server接收到Client傳送的斷開請求連線,那麼這個時候Server需要傳送一個ACK=1用於確定客戶請求斷開的資訊成功接收了;有時候這個過程也會和第三次握手進行合併,就像上面展示的一樣。
第三次揮手:Server如果所有的資料已經接收完畢,這個時候就會發送一個Fin=1,而ACK=1用於表示Server端已經沒有資料要傳送了,表示確認需要斷開連線。
第四次揮手:Client端需要傳送一個ACK=1表示這個Client接收到了Server的關閉請求資訊,這樣一來雙方的就都關閉了
常用的TCP埠號及其功能
埠 |
協議 |
說明 |
21 |
FTP |
FTP伺服器所開放的控制埠 |
23 |
TELNET |
用於遠端登入,可以遠端控制管理目標計算機 |
25 |
SMTP |
SMTP伺服器開放的埠,用於傳送郵件 |
80 |
HTTP |
超文字傳輸協議 |
110 |
POP3 |
用於郵件的接收 |
五.總結
1.TCP和UDP的使用場景及兩者的區別
2.TCP建立連結的三次握手
3.TCP斷開連結的四次揮手