為什麼TCP的初始序列號是隨機的

2022-01-11 15:48:23 字數 542 閱讀 2365

tcp在開始傳輸資料前,客戶端和伺服器需要隨機生成自己的初始序列號(initial sequence number-isn),然後通過三次握手進行交換確認。

考慮場景,b是伺服器,a是乙個合法的客戶端,c假冒a(比如模擬ip等)和b進行通訊。

由於isn是隨機的,最終c無法傳遞資料到b。

c假冒a,b接受後把ack會直接發給a

由於a沒有傳送過seq=isn _c的請求,當a收到isn_c的ack後直接傳送reset 給b,最終關閉了鏈結。

加入初始序列號不是隨機的,而是可以推測的,那麼c就可以拿到isn_b,然後模擬乙個ack過去,b最終會建立鏈結,

c開始傳遞資料,這就會產生非常嚴重的安全問題,所以isn隨機是必須的。

TCP初始化序列號ISN

tcp初始化序列號isn tcp初始化序列號不能設定為乙個固定值,因為這樣容易被攻擊者猜出後續序列號,從而遭到攻擊。rfc1948 中提出了乙個較好的初始化序列號isn隨機生成演算法。isn m f localhost,localport,remotehost,remoteport m是乙個計時器,...

TCP為什麼是面向連線的,為什麼是面向資料流的

tcp的核心是它要提供乙個可靠的傳輸協議。第乙個問題 tcp如果想要提供乙個可靠的傳輸協議,一定需要每次都建立連線嗎?三 次招手的意義在於讓通訊兩端確定,資訊剛才是可以從任意一端傳到另 一端的。如果傳送資料前我們沒有三次招手。那麼,由於tcp是乙個可靠 的傳輸協議,所以一定會提供超時重試的機制,而且...

為什麼TCP的序號是隨機的,而不是從0開始?

主要有兩個問題 假設客戶端a發給服務端b的乙個包在網路裡面停留太久 最後本次連線已經結束了,後面又重新建立了一次連線 恰巧這次連線的四元組和上次相同,其實就是源埠剛好相同 四元組 源ip位址 源埠號 目標ip位址 目標埠號 這時序號又是從0開始,而卡了很久的包在這時送到了服務端 因為連線時的序號都是...