網路程式設計 TCP理解

2021-10-05 10:57:57 字數 1274 閱讀 4275

談到tcp就必須知道面向連線和可靠傳輸協議,什麼是面向連線?就要說到3次握手下面這張圖就是tcp的3次握手圖:

**當客戶端想要連線服務端時,會由客戶端的傳輸控制層傳送乙個(sync)包,然後服務端收到後會返回乙個(sync+ack(表示知道))包,最後客戶端會在傳送乙個(ack)確定包,只有雙方都確定自己的輸入輸出都是通的後,兩端才有資源的開闢(也就是代表為對方服務),開闢後才是真正建立連線。這也就是為什麼握手需要3次。

什麼是面向連線呢?

如果有一方把服務資源丟掉了那這個連線也就斷了,只有雙方的資源都開闢著,這個連線才是存在的,面向連線不是物理的,是開闢的資源的對稱。資源的開闢代表為對方服務,完成自己後續的輸出和如果物件有資料發來我有資源接你後續的乙個包**

什麼叫做可靠的傳輸?

比如客戶端傳送的資料報到底到沒到服務端必須要等服務端發乙個(ack)確認過來,這個確認機制是他可靠傳輸的支撐。

總結:3次握手帶來了面向連線,確認機制保證了可靠傳輸

補充:udp就沒有確認的機制,直接發

傳輸控制層裡還有乙個重要的東西就是socket,什麼是socket呢?

(在計算機中socket是可讀可寫的,channel是jdk抽象出來的,客戶端跟服務端建立連線後就會得到乙個socket)

傳輸資料後就要4次分手,具體圖見如下圖所示:

客戶端先傳送乙個fin的資料報表示想斷開,服務端回送乙個基於fin的ack包表示已經知道了,然後檢視是否與客戶端還有事情可做,如果沒有,就傳送乙個fin包表示斷開連線,然後客戶端在傳送乙個確認包。

這張圖就是乙個從3次分手到傳輸資料再到4次分手的展示

總結:七層是層層呼叫的,傳輸控制層後面的網路層就需要計算機網路的知識結合理解。

TCP網路程式設計

基於tcp 通訊模型 由上圖可以得出tcp通訊的步驟如下 服務端 1 建立乙個socket,用函式socket 2 繫結ip位址 埠等資訊到socket上,用函式bind 3 設定允許的最大連線數,用函式listen 4 等待來著客戶端的連線請求,用函式accept 5 收發資料,用函式send 和...

網路程式設計 TCP

客戶端 1.建立客戶端的socket服務,指定目的主機和埠 2.為了傳送資料,應該獲取socket中的輸出流 3.獲取socket中的輸入流來獲取服務端的反饋資料 4.關閉資源 服務端 1.建立服務端的serversocket服務,並監聽乙個埠 2.通過accept方法 等待並獲取連線過來的客戶端s...

網路程式設計 TCP

即有傳送緩衝區 接收緩衝區,傳送次數和接收次數不一定對等。報頭長,成本高,需要搭載更多的資料。1.三次握手 通過對ack的確認,建立可靠連線。有超時重傳機制 2.四次揮手 有可能伺服器處理資料的時間較短,即三次揮手 3.狀態圖 2 保證遲來的資料報能被識別並丟棄 4.tcp狀態轉移過程 5.tcp報...