TCP建立連線

2021-10-23 01:52:49 字數 2071 閱讀 1143

3 月,跳不動了?>>>

對tcp "面向連線" 特性的學習研究。什麼是面向連線? tcp為什麼要進行面向連線的通訊? tcp 連線建立的過程是怎樣的?

建立連線的通訊過程 : 打**是面向連線的通訊 , a 呼叫 b , b 接受並且此時 a 還沒有結束通話,連線建立成功, a 、b 雙方正常通訊。如果 b 不接受呼叫,連線無法建立 , 整個通訊過程就不會成立。

無連線的通訊 : 發簡訊是無連線的通訊 , a 向 b 發簡訊 , a 並不知道 b 的通訊狀態是否一切正常(比如,手機有電、有訊號、手機沒丟) , 此時 a 可以不受 b 的通訊狀態的限制自由的傳送簡訊給 b 。整個通訊過程不需要建立連線就可以實現。

優點 : 可靠性高

缺點 : 為了對可靠性做出保障,整個過程十分複雜 (魚和熊掌不可兼得,最重要的是找到平衡)

s指代伺服器,c指代客戶端,s&c表示兩者,s/c表示兩者之一 。

listen - s: 伺服器等待從任意遠端tcp埠的連線請求。偵聽狀態。

syn-sent - c: 客戶端在傳送連線請求後等待匹配的連線請求。客戶端向伺服器發出乙個同步(sync)訊號後進入此狀態。

syn-received - s: 伺服器已經收到客戶端的同步(sync)訊號,並傳送同步(sync)訊號之後等待客戶端確認(ack)請求。

established - s&c: 服務端與客戶端的連線已經開啟,服務端收到的資料可以發給應用層。資料傳輸步驟的正常情況。此時連線兩端是平等的。這稱作全連線。

fin-wait-1 - s&c: (服務端或客戶端)主動關閉發出fin請求包,表示本方的資料傳送全部結束,等待tcp連線另一端的ack確認包或fin&ack請求包。

fin-wait-2 - s&c: 主動關閉端在fin-wait-1狀態下收到ack確認包,進入等待遠端tcp的連線終止請求的半關閉狀態。這時可以接收資料,但不再傳送資料。

close-wait - s&c: 被動關閉端接到fin後,就發出ack以回應fin請求,並進入等待本地使用者的連線終止請求的半關閉狀態。這時可以傳送資料,但不再接收資料。

closing - s&c: 在發出fin後,又收到對方發來的fin後,進入等待對方對己方的連線終止(fin)的確認(ack)的狀態。少見。

last-ack - s&c: 被動關閉端全部資料傳送完成之後,向主動關閉端傳送fin,進入等待確認包的狀態。

time-wait -  s/c: 主動關閉端接收到fin後,就傳送ack包,等待足夠時間以確保被動關閉端收到了終止請求的確認包。

closed - s&c: 完全沒有連線。

連線建立的過程總共需要進過三次通訊,三次通訊都成功之後連線建立成功。三次通訊是為了確認通訊雙方的狀態都正常才會建立連線。就像是打**的過程。

連線建立過程抓包分析:

客戶端發起連線 , syn = 1 

服務端接收到連線請求傳送應答資料報 , syn = 1 , ack = 1 

客戶端收到服務端應答包後傳送應答包 , ack = 1

TCP協議 建立連線

上面第四步的ack報文不占用序列號 為了防止已失效的連線請求報文段突然又傳送到了服務端,因而產生錯誤 謝希仁版 計算機網路 中的例子是這樣的,已失效的連線請求報文段 的產生在這樣一種情況下 client發出的第乙個連線請求報文段並沒有丟失,而是在某個網路結點長時間的滯留了,以致延誤到連線釋放以後的某...

TCP連線建立過程

瀏覽器訪問 通過網域名稱解析找到ip位址後會與伺服器端建立連線。其中tcp transmission control protocol,傳輸控制協議 是一種面向連線的 可靠的 基於位元組流的通訊協議,它的特點是資料在傳輸前要建立連線,傳輸完畢後還要斷開連線,且每次客戶端與伺服器端的通訊都都需要進行應...

TCP建立連線與釋放連線

tcp建立連線與釋放連線 tcp建立連線與釋放連線 最近複習準備 計算機網路 考試,感覺tcp協議建立連線與釋放連線這兩個過程比較重要,所以把自己理解的部分寫下來。1.建立連線 三次握手 1 客戶端傳送乙個syn包給伺服器,然後等待應答。2 伺服器端回應給客戶端乙個ack 1 syn 1的tcp資料...