為什麼三次握手seq號不能從0開始?

2021-10-04 19:18:16 字數 427 閱讀 1866

摘自知乎:

關於isn的初始化。isn是不能hard code的,不然會出問題的——比如:如果連線建好後始終用1來做isn,如果client發了30個segment過去,但是網路斷了,於是 client重連,又用了1做isn,但是之前連線的那些包到了,於是就被當成了新連線的包,此時,client的sequence number 可能是3,而server端認為client端的這個號是30了。全亂了。rfc793中說,isn會和乙個假的時鐘綁在一起,這個時鐘會在每4微秒對isn做加一操作,直到超過2^32,又從0開始。這樣,乙個isn的週期大約是4.55個小時。因為,我們假設我們的tcp segment在網路上的存活時間不會超過maximum segment lifetime(msl),所以,只要msl的值小於4.55小時,那麼,我們就不會重用到isn。

為什麼要三次握手

tcp 連線是通過三次握手進行初始化的。三次握手的目的是同步連線雙方的序列號和確認號並交換 tcp 視窗大小資訊。以下步驟概述了通常情況下客戶端計算機聯絡伺服器計算機的過程 1.客戶端向伺服器傳送乙個syn置位的tcp報文,其中包含連線的初始序列號x和乙個視窗大小 表示客戶端上用來儲存從伺服器傳送來...

TCP為什麼三次握手

tcp 連線是通過三次握手進行初始化的。三次握手的目的是同步連線雙方的序列號和確認號並交換 tcp 視窗大小資訊。以下步驟概述了通常情況下客戶端計算機聯絡伺服器計算機的過程 1.客戶端向伺服器傳送乙個 syn置位的 tcp報文,其中包含連線的初始序列號 x和乙個視窗大小 表示客戶端上用來儲存從伺服器...

TCP為什麼三次握手

1 第一次握手 客戶端向伺服器端傳送tcp報文請求建立連線,其中 標記位為syn 1 序號為seq x 2 第二次握手 服務端收到資訊後知道自己與客戶端是可以連線成功的,但此時客戶端並不知道服務端是否已經接收到了它的請求,所以服務端接收到訊息後進行應答,這就是第二次握手,其中 標記位為syn 1,a...