1.序列號和確認號的簡介及作用
tcp協議工作在osi的傳輸層,是一種可靠的面向連線的資料流協議,tcp之所以可靠,是因為它保證了傳送資料報的順序。順序是用乙個序列號來保證的。 響應包內也包括乙個序列號,表示接收方準備好這個序列號的包。在tcp傳送乙個資料報時,它會把這個資料報放入重發佇列中,同時啟動計時器,如果收到了關於這個包的確認資訊,便將此資料報從佇列中刪除,如果在計時器超時的時候仍然沒有收到確認資訊,則需要重新傳送該資料報。另外,tcp通過資料分段中的序 列號來保證所有傳輸的資料可以按照正常的順序進行重組,從而保障資料傳輸的完整。
2.tcp的通訊過程
在tcp通訊中主要有連線的建立、資料的傳輸、連線的關閉三個過程!每個過程完成不同的工作,而且序列號和確認號在每個過程中的變化都是不同的。
2.1 tcp建立連線
tcp建立連線,也就是我們常說的三次握手,它需要三步完成。在tcp的三次握手中,傳送第乙個syn的一端執行的是主動開啟。而接收這個syn並發回下乙個syn的另一端執行的是被動開啟。
這裡以客戶端向伺服器發起連線來說明。
1) 第1步:客戶端向伺服器傳送乙個同步資料報請求建立連線,該資料報中,初始序列號(isn)是客戶端隨機產生的乙個值,確認號是0;
2) 第2步:伺服器收到這個同步請求資料報後,會對客戶端進行乙個同步確認。這個資料報中,序列號(isn)是伺服器隨機產生的乙個值,確認號是客戶端的初始序列號+1;
先把tcp協議的序列號搞清楚:至此三次握手建立,此後雙方的序列號變化為:1、開始c端隨機生成初始sequence(c),發到s,flag為syn (eg.seq(c)=0)
2、s端回應c端,也隨機生成初始sequence(s) eg. seq(s)=0,ack=sequence(c)+1,表示收到c端的連線請求,flag為syn+ack(eg. seq(s)=0, ack=1)
3 、c端回應s端,ack=sequence(s)+1,表示收到s端的連線回應,flag為ack (eg. ack=1)
剛開始任一方(不分c或s)的sequence=sequence(握手時)+1回家後再完成這篇文章至於next sequence是wireshark自己加上去的,其值為 n_sequence=此次傳送包的sequence+tcp層以上負載的資料長度.也就是下次發包時該方將會使用的sequence值
5、同理任一方的ack=收到的對方的sequence+其tcp層以上負載的資料長度,也就是期待對方下一次發包所使用的sequence值
參考資料:
TCP序列號和確認號詳解
1.序列號和確認號的簡介及作用 tcp協議工作在osi的傳輸層,是一種可靠的面向連線的資料流協議,tcp之所以可靠,是因為它保證了傳送資料報的順序。順序是用乙個序列號來保證的。響應包內也包括乙個序列號,表示接收方準備好這個序列號的包。在tcp傳送乙個資料報時,它會把這個資料報放入重發佇列中,同時啟動...
TCP序列號和確認號詳解
簡介與作用 tcp協議工作在osi的傳輸層,是一種可靠的面向連線的資料流協議,tcp之所以可靠,是因為它保證了傳送資料報的順序。順序是用乙個序列號來保證的。響應包內也包括乙個序列號,表示接收方準備好這個序列號的包。在tcp傳送乙個資料報時,它會把這個資料報放入重發佇列中,同時啟動計時器,如果收到了關...
TCP三次握手的過程,以及序列號和確認號的作用
tcp握手協議 在tcp ip協議中,tcp協議提供可靠的連線服務,採用三次握手建立乙個連線。1 第一次握手 建立連線時,客戶端傳送syn包 syn j 到伺服器,並進入syn send狀態,等待伺服器確認 syn 同步序列編號 synchronize sequence numbers 2 第二次握...