面向連線的傳輸TCP(一)

2022-03-23 13:28:24 字數 1918 閱讀 2404

這篇部落格主要是對計算機網路自頂向上做的閱讀筆記,深入地了解tcp

a.tcp是面向連線的,因為乙個程序在向另乙個程序進行資料傳輸之前必須先要握手,即要互相傳送報文,以確認資訊傳輸的引數。並且連線時雙方都要初始化一些引數和狀態變數

b.tcp協議只能在端系統中執行,中間路由器對tcp完全視而不見

c.tcp是全雙工服務。如果a到b存在tcp連線,那麼資料可以從a流向b,也可以從b流向a

d.點對點,也就是說他不能像udp那樣多播,不能從乙個傳送方送給多個接收方

當乙個主機上的程序想要與另乙個主機的程序建立起連線。則發起請求的一方稱為客戶端,另乙個就是服務端。

發起請求(python):  clientserver.connect((servername,serverport))//servername標識了伺服器名稱,serverport標識埠

然後客戶端向伺服器傳送tcp報文段,伺服器用另一段報文段來響應,最後客戶再用三個特殊的報文段來響應。前兩個報文段不承載有效資料,第三個報文段可以承載有效資料。由於傳送了三個報文段,tcp連線這種過程被稱為三次握手。(tcp報文段就是tco的資料加上首部資訊形成的)

建立起連線之後就可以互相傳送資料了,當資料到達tcp的傳送門之後,tcp會把資料放到它的傳送快取中,就由tcp控制它什麼時候把資訊取出來。tcp從傳送快取取出資料大小受限於mss(報文段裡應用層最大資料)。mss通常為1460位元組(首部佔40位元組)

tcp報文段在ip中傳輸,會封裝到ip的資料報中,然後被傳送到網路中,當tcp在另一端收到這個報文段。報文段的資料就會進入tcp快取

可以看出tcp報文段是由首部和資料組成的,應用資料受限於mss,tcp傳送檔案,會把資料劃分為幾個mss(最後乙個通常小於mss),而首部看起來資訊就很多了,比起udp來說欄位就多了很多,了解報文段字段的作用,我們就能夠進一步深入了解tcp能夠給傳輸層帶來什麼。

和udp一樣tcp也提供了多路分解和多路復用。

我們都知道傳輸層就是通過套接字來傳遞資料的,套接字是由ip+埠組成的。

多路分解就是將運輸層的資料傳輸給正確的套接字:在源主機上從不同的套接字收集資訊。

多路復用就是將資訊加上首部打包好生成報文段之後傳遞到網路層的過程。所以tcp包含源和目的埠,這樣才能保證多路分解和多路復用。

這個同udp一樣包括檢驗和字段。用來提供差錯檢測

3.序號欄位和確認號字段

這兩個欄位是tcp報文中最重要的兩個字段,使tcp能提供了可靠資料傳輸

序號字段:就是把資料分段,然後標序號

假如a要從b傳送資料流,包含500000位元組,mss長度為1000位元組,那麼tcp要為這個資料構建500個報文段,並分配序號,第乙個序號0,第二個序號1000,第三個序號2000。

既然序號和確認號這麼重要,那我們來看乙個簡單的案例吧。

假設客戶傳送了字元c,並喝起了咖啡,那麼客戶端和服務端之間會發生什麼呢,假設初始化客戶端和服務端序號42和79.

第一次握手:使用者序號42(也就是該報文段資料的首位元組),確認號79(也就是希望伺服器應答的序號是79),資料段中包含『c』(這是一種捎帶)

第二次握手:伺服器傳送報文段,它有兩個目的,確認他收到的資料,第二個目的回顯字元'c',所以它在確認號填入43,,序號79(這是起始的序號),資料端裡填入的是字元c

第三次握手:確認號80(因為79及以前的位元組流已經收到),序號43,它的唯一目的就是確認已經收到伺服器的資料,此時資料段沒有資料

用於流量控制,指示接收方願意接收到的位元組

由於tcp長度可變,該欄位由於指示tcp報文段長度

指示傳送方和接收方協商的mss

ack用於指示確認欄位是有效的,rst、syn\fin用於連線建立和拆除。psh被設定時,指示接收方應立即將資料交給上層,urg指示報文段中有緊急資料

TCP實現連線傳輸案例

介紹 a.網路通訊協議 基於tcp協議的通訊 c.埠號 計算機上軟體的標識 埠號一共有 0 65535這個多個,我們寫的軟體建議使用1024以上的,因為1024一下的被牛逼知名軟體服務占用的 使用的類 serversocket 伺服器端 構造方法 serversocket 埠號 接收端使用 方法 a...

10 3 6 TCP傳輸連線建立

tcp 是乙個面向連線的傳輸層協議,所以無論 哪一方向另一方傳送資料之前,都必須先在雙方之間建立一條傳輸連線。本節將詳細討論乙個 tcp傳輸連線是如何建立的。1.單方主動連線的 tcp連線建立過程 在 tcp ip 協議體系結構中的 tcp協議也是使用三次握手 three way handshake...

10 3 6 TCP傳輸連線建立

tcp 是乙個面向連線的傳輸層協議,所以無論 哪一方向另一方傳送資料之前,都必須先在雙方之間建立一條傳輸連線。本節將詳細討論乙個 tcp傳輸連線是如何建立的。1.單方主動連線的 tcp連線建立過程 在 tcp ip 協議體系share結構中的 tcp協議也是使用三次握手www.huihui.cn t...