tcp 三次握手
tcp 連線是通過三次握手進行初始化的。三次握手的目的是同步連線雙方的序列號和確認號並交換 tcp 視窗大小資訊。以下步驟概述了通常情況下客戶端計算機聯絡伺服器計算機的過程:
在tcp/ip協議中,tcp協議提供可靠的連線服務,採用三次握手建立乙個連線。
第一次握手:建立連線時,客戶端傳送syn包(syn=j)到伺服器,並進入syn_send狀態,等待伺服器確認;
第二次握手:伺服器收到syn包,必須確認客戶的syn(ack=j+1),同時自己也傳送乙個syn包(syn=k),即syn+ack包,此時伺服器進入syn_recv狀態;
第三次握手:客戶端收到伺服器的syn+ack包,向伺服器傳送確認包ack(ack=k+1),此包傳送完畢,客戶端和伺服器進入established狀態,完成三次握手。
tcp client
flags
tcp server
1 send syn (seq=x)
----syn--->
syn received
2 syn/ack received
send syn (seq=y), ack (x+1)
3 send ack (y+1)
----ack--->
ack received,
connection
established
w: isn (initial sequence number) of
theclient
x: isn of the server
tcp報文主要有序號、確認序號、urg、ack、rsh、rst、syn、fin、檢驗和、緊急資料指標等構成。連線過程中,ack、rsh、rst、syn、fin這些標誌位起到決定作用。
syn:該標誌位用來建立連線,讓連線雙方同步序列號,如果syn=1,ack=0,表示該資料報為連線請求;若syn=1,ack=1,則表示接受連線。
fin:表示傳送端沒有資料傳輸了,要求釋放連線。
rst:復位乙個連線。
urg:緊急資料標誌,若為1,表示包中含有緊急資料,此時緊急資料指標有效。
ack:確認標誌位,若為1,表示包中的確認號是有效的,否則包中的確認號無效。
psh:如果置位,接收端應盡快把資料傳送給應用層。
連線撤銷過程中,有如下過程:
1.host1上的應用程式關閉己方的連線導致tcp傳送乙個fin訊息給host2。
2.host2傳送乙個確認訊息給host1,並且host2把fin作為eof遞交給host2上的應用程式。
3.一段時間過後,host2上的應用程式關閉它那邊的連線,引發乙個fin訊息給host1。
4.host1給host2傳送乙個確認訊息,然後host2關閉連線並釋放資源,然而,host1卻沒有關閉連線,而是進入了time_wait狀態,並為兩個最大段生存時間(2msl)保留在此狀態.
為什麼需要time_wait?
1.因為在第四步的時候,host1傳送的ack可能丟失並導致host2重新傳送fin訊息,time_wait維護連線狀態.
如果執行主動關閉的一方host1 不進入到time_wait狀態就關閉連線那會發生什麼呢?當重傳的fin訊息到達時,因為tcp已經不再有連線的資訊了,所以就用rst(重新啟動)訊息應答,導致host2進入錯誤的狀態而不是有序終止狀態,如果傳送最後ack訊息的一方處於time_wait狀態並仍然記錄著連線的資訊,它就可以正確的響應對等方host2的fin訊息了.
2.time_wait為連線中」離群的段」提供從網路中消失的時間.
考慮一下,如果延遲或者重傳段在連線關閉後到達時會發生什麼呢?通常情況下,因為tcp僅僅丟棄該資料並響應rst訊息,所以這不會造成任何問題。當rst訊息到達發出延時段的主機時,因為該主機也沒有記錄連線的任何資訊,所以它也丟棄該段。然而,如果兩個相同主機之間又建立了乙個具有相同埠號的新連線,那麼離群的段就可能被看成是新連線的,如果離群的段中資料的任何序列號恰恰在新連線的當前接收視窗中,資料就會被重新接收,其結果就是破壞新連線。
tcp 三次握手連線,四次握手斷開
tcp握手協議 在tcp ip協議中,tcp協議提供可靠的連線服務,採用三次握手建立乙個連線.第一次握手 建立連線時,客戶端傳送syn包 syn j 到伺服器,並進入syn send狀態,等待伺服器確認 syn 同步序列編號 synchronize sequence numbers 第二次握手 伺服...
TCP連線 三次握手和四次斷開
1.面向連線 tcp是乙個面向連線的協議,面向連線是指任何一方向對方傳送資料前必須先建立通道,比如像打 一樣 必須要等到對方的手機響鈴,並且對方接聽 時,才能與對方通訊。而udp 則不是面向連線的協議,基於udp 協議的通訊雙方不需要事先與對方協商建立連線,也不管對方的ip 位址與埠號是否存在,就傳...
TCP的三次握手和四次斷開
tcp transmission control protocol 傳輸控制協議,是乙個面向連線的服務,每一次完整的資料傳輸都必須經過建立連線,資料傳輸和終止連線3個過程。tcp建立連線的過程稱為三次握手,端開連線的過程稱為四次斷開。三次握手 1.主機a通過向主機b 傳送乙個含有同步序列號 syn ...