第六章 TCP與UDP
阿新 • • 發佈:2018-12-01
TCP與UDP
- TCP(Transmission Control Protocol):面向有連線的、可靠的流協議
- UDP(User Datagram Protocol):不具有可靠性的資料報協議
- 傳輸協議TCP、UDP通過接收資料中的目標埠號識別目標處理程式(80埠:httpd守護程序)
套接字(Socket)
- 應用程式利用套接字(API),可以設定對端的IP地址、埠號,並實現資料的傳送和接收。
埠號
- MAC地址:識別統一鏈路中不同的計算機
- IP地址:識別TCP/IP網路中互聯的主機和路由器
- 埠號:同一臺計算機中進行通訊的不同應用程式
通訊識別
- TCP/IP或UDP/IP通訊中通常採用5個資訊來識別一個通訊
- 源IP地址
- 目標IP地址
- 協議號
- 源埠號
- 目標埠號
UDP
特點
- 不提供複雜的控制機制,利用IP提供面向無連線的通訊服務。
- 即使出現網路擁堵的情況下,UDP也無法進行流量控制等避免網路堵塞的行為。
- 傳輸中即使丟包,UDP也不負責重發。
用途
- 包總量較少的通訊(DNS、SNMP等)
- 視訊、音訊等多媒體通訊(即時通訊)
- 限定於LAN等特定網路中的應用通訊
- 廣播通訊(廣播、多播)
TCP
特點
- 充分地實現了資料傳輸時各種控制功能,在IP這種無連線的網路上也能夠實現高可靠性的通訊
- 可以進行丟包時的重發控制
- 可以對順序亂掉的分包進行順序控制
- 是一種面向有連線的協議,只有在確認通訊對端存在時才會傳送資料,從而可以控制通訊流量的浪費
可靠性
- 確認應答 : 在TCP中,當傳送端的資料到達接收主機時,接收端主機會返回一個已收到訊息的通知。這個訊息叫做確認應答(ACK)
- 重發控制 : 在一定時間內傳送端沒有收到確認應答,傳送端就可以認為資料已經丟失,並進行重發。由此,即使產生了丟包,仍然能夠保證資料能夠到達對端,實現可靠傳輸。
- 重複控制 : 在目標主機已經收到資料的情況下,源主機如果重發相同的資料(ACK丟失),這時候目標主機需要識別是否已經接收資料,並對重複的資料進行丟棄處理。
- 序列號 :按順序給傳送資料的每一個位元組都標上號碼的編號,通過序列號(位元組和位元組之間的分隔)實現確認應答,重發控制和重複控制
三次握手,四次揮手
- 三次握手建立連線 : 傳送SYN包作為建立連線的請求,計算MSS值(為收發雙方所能接收的較小值),MTU-IP首部長度-TCP首部長度(MTU-40位元組)
- 四次揮手斷開連線 : 傳送FIN包作為斷開連線的請求
滑動視窗控制
- 視窗大小 : 無需等待確認應答而可以繼續傳送資料的最大值
- 實現 : 使用緩衝區(計算機記憶體開闢出來的一段空間),快取視窗大小的資料(比如4個段的資料),在收到接收端的ACK後,根據序列號刪除序列號之前的段資料,新增之後要傳送的資料。
- 重發控制 : 傳送端主機如果連續3次收到同一個確認應答,就會將其所對應的資料進行重發。
其他傳輸層協議
- UDP-Lite : (Lightweight User Datagram Protocol, 輕量級使用者資料報協議),擴充套件UDP機能的一種傳輸層協議,提供與UDP幾乎相同的功能,不過計算校驗和的範圍可以由應用自行決定。
- SCTP : (Stream Control Transmission Protocol, 流控制傳輸協議),與TCP一樣,都是對一種提供資料到達與否相關可靠性的檢查的傳輸層協議。在SCTP的情況下,可以管理多個IP地址使其同時進行通訊,因此即使出現通訊過程當中乙太網與無線LAN之間的切換,也能夠保持通訊不中斷。
- DCCP : (Datagram Congestion Control Protocol, 資料報擁塞控制協議),輔助UDP的傳輸層協議彌補UDP沒有擁塞控制機制的不足。
術語
- ACK(Positive Acknowledgement): 意指已經接受到
- NACK(Nactive Acknowledgement): 否定確認應答
- MSS(Maximum Segment Size): 最大訊息長度