udp
協議
udp 協議用於網路協議傳輸層互動,不同於tcp
,udp
沒有重傳、重複包的處理,不保證傳輸可靠性,其下層為ip
協議。訊息結構
占用16
位元,為可選擇域,如果不使用可以全寫為0
,指示是傳送的埠,但缺乏其它有效資訊時,也作為回應的目的埠;destination port
占用16
位元,指示目標埠號;length
為udp
包的位元組長度,包含header
部分,最小值為header
長度8個位元組。
checksum
為校驗位,計算時需要加上udp
虛擬頭部、真實頭部、資料部分及末尾補0
部分一起計算。需要補齊整個資料長度為兩個位元組的倍數,計算時以16-bit
資料為最小單位進行求和,如果存在進製,則將進製1
加到低16
位數字上去,計算完成後取反的結果即為checksum
。如果沒有checksum
時,此域需要全部填值為0 。
tcp
協議
tcp 提供可靠的傳輸模式,tcp
和udp
同樣是傳輸層協議,其主要差別在於tcp
保證可靠性,因而不同於udp
,tcp
工作是面向連線的。
訊息結構
為源和目的埠號,各占有16
位元;sequence number
占用32
位元,指示資料報中第乙個位元組的sn
,如果存在攜帶初始sn
為isn
的syn
時,第乙個資料位元組的sn
為isn+1
;acknowledgement number
指示期望收到的下乙個連續的sn
號;data offset
占用4位元,指示tcp
頭部總的32
位元word
長度,可計算開始資料開始位置;reserved
占用6位元,留後續使用;urg
占用1位元,用來指示urgent pointer
是否存在;ack
占用1位元,用來指示acknowledgment
域是否存在意義;psh
占用1位元,用於指示push
功能;rst
占用1位元,用於重置連線;syn
占用1位元位,同步sn
號;fin
占用1占用16
位元,指示從acknowledgment
域開始資料視窗長度;checksum
計算校驗和,包括頭和內容,不足16
位元部分補零對齊,計算時需要增加ip
的虛擬頭部;urgent pointer
占用16
位元,和urg
標誌配合使用,指示正常資料起始位置,在此位置之前為帶外資料(
緊急資料);options
為位元組的倍數,存在兩類option
,一種是只帶型別option-kind
,另一種帶有option-kind + option length + option data
,option length
包括kind
和length
本身的共兩個位元組的長度; padding
用於補齊tcp
頭部長度,滿足32
位元word
對齊。options
在tcp
模式下,攜帶的option
都需要被執行。
傳輸可靠性
tcp 不同於udp
,提供了資料的可靠傳輸,這種可靠性依賴於停止-
等待協議機制,主要體現在sn
的ack
機制上。首先需要將tcp
連線的兩端sn
進行同步,也就是syn
標誌位帶有的功能,當syn
為1 是帶有的sn
號即為isn(
初始sn
號) ,常常聽到的三/
四次握手就是實現此功能,相當於初始建立鏈路過程,發起端需要首先傳送syn
給對端,對端需要對syn
包返回ack
,同樣需要對端傳送相應syn
來確認接收的起始sn
號,並對相應tcp
包返回對應ack
,因此此流程有四個過程互動;而對端返回ack
時可以同時攜帶syn
標誌,可以簡化為三條訊息。相對於建立流程,鏈路同樣可以使用類似方式釋放,通過標誌fin
來控制。在傳輸過程中需要維護資料的sn
及其ack
狀態,加以不同的timer
進行丟包重傳控制;window
域用來表示接收到ack
的資料到最多允許傳送的資料報的視窗大小,也就是說超出視窗的資料不能,視窗的大小影響實際情況下的速率。tcp
基於sn
次序進行有次序的傳輸,緊急(
帶外)資料可以採用urgent
模式傳輸。push
標誌影響傳送、接收的處理時間,在接收端收到標誌位將不等待快取狀態,直接將資料遞交上層梳理。tcp
採用的是面向連線的分組交換機制,當狀態出錯時,可以用rest
機制來重新恢復鏈路鏈路,同時存在平靜時間的定時器來確保分組機制網路中的殘留的資料報能夠處理完成,減少狀態和資料型別衝突的概率。
參考文件
rfc768 user datagram protocol
rfc793 transmission control protocol
傳輸層協議 UDP協議 TCP協議
udp協議段格式 udp的特點 udp的緩衝區 udp的socket既能讀,也能寫,這個概念叫做全雙工。下圖是基於tcp協議的客戶端 伺服器程式的一般流程。建立連線 通常稱為三次握手。不能出現兩次握手 伺服器認為連線建立好了,客戶端認為美好,重新傳送連線 伺服器端會出現閒置連線,主動一方會進行第三次...
傳輸層TCP協議和UDP協議
傳輸層是osi中最重要,最關鍵的一層,是唯一負責總體的資料傳輸和資料控制的一層。傳輸層提供端到端的交換資料的機制,檢查分組編號與次序。傳輸層對其上三層如會話層等,提供可靠的傳輸服務,對網路層提供可靠的目的地站點資訊。傳輸層協議有 tcp 傳輸控制協議 udp 使用者資料報協議 tls 安全運輸協議 ...
傳輸層協議TCP和UDP
tcp tcp允許乙個主機同時執行多個應用程序。每台主機可以擁有多個應用 埠,每對埠號 源和目標ip位址的組合唯一地標識了乙個會話。端 口分為知名埠和動態埠。有些網路服務會使用固定的埠,這類端 口稱為知名埠,埠號範圍為0 1023。如ftp http telnet snmp服務均使用知名埠。動態埠號...