TCP協議及程式設計流程

2021-10-09 19:16:28 字數 1432 閱讀 4238

面向連線

傳送端傳送次數與接收方接收次數無關;send將資料發入傳送緩衝區(recv同理接收至接收緩衝區);傳輸與接收的資料不會因send次數分開,資料是乙個整體,是乙個位元組流

tcp報頭結構

保證能到達 – 應答確認、超時重傳

保證不亂序

保證不失真

滑動視窗,擁塞控制(待完善,不要做參考)

零視窗零視窗探測報文段

糊塗視窗

報頭四十位元組,視窗空出幾位元組空間就進行小量資料的傳送,浪費資源(但在現實中有些互動場景需要小報文進行傳送這裡不做針對),對小視窗不作回應

nagle演算法,預設開啟

擁塞控制

慢啟動擁塞避免

快速重傳

快速恢復

程式設計流程

tcp網路程式設計是分伺服器端和客戶端的,先說一下服務端的大體程式設計流程

三次握手是在listen之後accept之前

客戶端

socket、bind、send、recv、close和伺服器端同樣方法,下述**僅示例伺服器端

#include

#include

#include

#include

#include

#include

#include

//**

#include

//**

#include

//**

#include

//**

intmain()

while(1

)//迴圈互動

;int n =

recv

(c , buff,

127,0)

;// 如果沒有資料會阻塞

if(n <=0)

//資料小於0互動結束

printf

("%d: %s\n"

,c,buff)

; n =

send

(c,"ok",2

,0);

if(n <=0)

break;}

close

(c);

//關閉連線

}close

(listenfd)

;//關閉監聽

}

TCP協議通訊流程

伺服器呼叫socket bind listen 完成初始化後,呼叫accept 阻塞等待,處於監聽埠的狀態,客戶端呼叫socket 初始化後,呼叫connect 發出syn段並阻塞等待伺服器應答,伺服器應答乙個syn ack段,客戶端收到後從connect 返回,同時應答乙個ack段,伺服器收到後從...

TCP程式設計流程

tcp是傳輸控制協議的簡稱,是tcp ip體系中的面向連線的傳輸層協議,在網路中提供全雙工的 可靠的服務。在上一章節中可知,tcp通訊是通過套接字通訊機制實現的,具體為流式套接字,用來實現乙個面向連線,可靠的資料傳輸服務。目前較為流行的網路程式設計模型是客戶端 伺服器的通訊模式。伺服器和客戶端使用t...

socket程式設計流程(使用TCP協議為例)

先來簡單回憶一下上一次說到的tcp協議 tcp協議 面向連線 可靠的 流式服務 udp協議 無連線的 不可靠的 資料報服務 會發現udp協議和tcp協議恰好相反,但是既然有了可靠的tcp協議,為什麼又要另外乙個不可靠的udp協議呢?因為udp有它自己的優點udp協議是無連線方式的協議,它的效率高,速...