最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

C++基礎(chǔ)語法梳理:計算機網(wǎng)絡(luò)丨傳輸層(TCP&UDP)

2021-10-19 18:35 作者:C語言編程__Plus  | 我要投稿

運輸層

協(xié)議:

TCP(Transmission Control Protocol,傳輸控制協(xié)議)

UDP(User Datagram Protocol,用戶數(shù)據(jù)報協(xié)議)

端口:


TCP

TCP(Transmission Control Protocol,傳輸控制協(xié)議)是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議,其傳輸?shù)膯挝皇菆笪亩巍?/p>

特征:

①面向連接

②只能點對點(一對一)通信

③可靠交互

④全雙工通信

⑤面向字節(jié)流


TCP 如何保證可靠傳輸:

①確認和超時重傳

②數(shù)據(jù)合理分片和排序

③流量控制

④擁塞控制

⑤數(shù)據(jù)校驗

TCP 報文結(jié)構(gòu)


TCP 首部


TCP:狀態(tài)控制碼(Code,Control Flag),占 6 比特,含義如下:

URG:緊急比特(urgent),當?URG=1?時,表明緊急指針字段有效,代表該封包為緊急封包。它告訴系統(tǒng)此報文段中有緊急數(shù)據(jù),應(yīng)盡快傳送(相當于高優(yōu)先級的數(shù)據(jù)), 且上圖中的 Urgent Pointer 字段也會被啟用。

ACK:確認比特(Acknowledge)。只有當?ACK=1?時確認號字段才有效,代表這個封包為確認封包。當?ACK=0?時,確認號無效。

PSH:(Push function)若為 1 時,代表要求對方立即傳送緩沖區(qū)內(nèi)的其他對應(yīng)封包,而無需等緩沖滿了才送。

RST:復(fù)位比特(Reset),當?RST=1?時,表明 TCP 連接中出現(xiàn)嚴重差錯(如由于主機崩潰或其他原因),必須釋放連接,然后再重新建立運輸連接。

SYN:同步比特(Synchronous),SYN 置為 1,就表示這是一個連接請求或連接接受報文,通常帶有 SYN 標志的封包表示『主動』要連接到對方的意思。

FIN:終止比特(Final),用來釋放一個連接。當?FIN=1?時,表明此報文段的發(fā)送端的數(shù)據(jù)已發(fā)送完畢,并要求釋放運輸連接。

UDP

UDP(User Datagram Protocol,用戶數(shù)據(jù)報協(xié)議)是 OSI(Open System Interconnection 開放式系統(tǒng)互聯(lián)) 參考模型中一種無連接的傳輸層協(xié)議,提供面向事務(wù)的簡單不可靠信息傳送服務(wù),其傳輸?shù)膯挝皇怯脩魯?shù)據(jù)報。

特征:

①無連接

②盡最大努力交付

③面向報文

④沒有擁塞控制

⑤支持一對一、一對多、多對一、多對多的交互通信

⑥首部開銷小

UDP 報文結(jié)構(gòu)


UDP 首部


TCP 與 UDP 的區(qū)別

TCP 面向連接,UDP 是無連接的;

TCP 提供可靠的服務(wù),也就是說,通過 TCP 連接傳送的數(shù)據(jù),無差錯,不丟失,不重復(fù),且按序到達;UDP 盡最大努力交付,即不保證可靠交付

TCP 的邏輯通信信道是全雙工的可靠信道;UDP 則是不可靠信道

每一條 TCP 連接只能是點到點的;UDP 支持一對一,一對多,多對一和多對多的交互通信

TCP 面向字節(jié)流(可能出現(xiàn)黏包問題),實際上是 TCP 把數(shù)據(jù)看成一連串無結(jié)構(gòu)的字節(jié)流;UDP 是面向報文的(不會出現(xiàn)黏包問題)

UDP 沒有擁塞控制,因此網(wǎng)絡(luò)出現(xiàn)擁塞不會使源主機的發(fā)送速率降低(對實時應(yīng)用很有用,如 IP 電話,實時視頻會議等)

TCP 首部開銷20字節(jié);UDP 的首部開銷小,只有 8 個字節(jié)

TCP 黏包問題

原因

TCP 是一個基于字節(jié)流的傳輸服務(wù)(UDP 基于報文的),“流” 意味著 TCP 所傳輸?shù)臄?shù)據(jù)是沒有邊界的。所以可能會出現(xiàn)兩個數(shù)據(jù)包黏在一起的情況。

解決

發(fā)送定長包。如果每個消息的大小都是一樣的,那么在接收對等方只要累計接收數(shù)據(jù),直到數(shù)據(jù)等于一個定長的數(shù)值就將它作為一個消息。

包頭加上包體長度。包頭是定長的 4 個字節(jié),說明了包體的長度。接收對等方先接收包頭長度,依據(jù)包頭長度來接收包體。

在數(shù)據(jù)包之間設(shè)置邊界,如添加特殊符號?\r\n?標記。FTP 協(xié)議正是這么做的。但問題在于如果數(shù)據(jù)正文中也含有?\r\n,則會誤判為消息的邊界。

使用更加復(fù)雜的應(yīng)用層協(xié)議。

TCP 流量控制

概念

流量控制(flow control)就是讓發(fā)送方的發(fā)送速率不要太快,要讓接收方來得及接收。

方法

利用可變窗口進行流量控制


TCP 擁塞控制

概念

擁塞控制就是防止過多的數(shù)據(jù)注入到網(wǎng)絡(luò)中,這樣可以使網(wǎng)絡(luò)中的路由器或鏈路不致過載。

方法

慢開始( slow-start )

擁塞避免( congestion avoidance )

快重傳( fast retransmit )

快恢復(fù)( fast recovery )

TCP的擁塞控制圖



今天的分享就到這里了,下期為大家分享TCP連接管理,大家要好好學C++喲~

寫在最后:對于準備學習C/C++編程的小伙伴,如果你想更好的提升你的編程核心能力(內(nèi)功)不妨從現(xiàn)在開始!

微信公眾號:C語言編程學習基地

C語言零基礎(chǔ)入門教程(83集全)

歡迎轉(zhuǎn)行和學習編程的伙伴,利用更多的資料學習成長比自己琢磨更快哦!



C++基礎(chǔ)語法梳理:計算機網(wǎng)絡(luò)丨傳輸層(TCP&UDP)的評論 (共 條)

分享到微博請遵守國家法律
平罗县| 喜德县| 马鞍山市| 英德市| 肥东县| 峨边| 石林| 福海县| 静宁县| 梁平县| 长葛市| 海盐县| 改则县| 张家界市| 太湖县| 元谋县| 辉县市| 安新县| 蒲城县| 平南县| 铁岭县| 甘孜| 贵阳市| 枝江市| 鲜城| 沂水县| 伊宁市| 永定县| 德安县| 兰考县| 黑山县| 琼海市| 台东市| 博爱县| 菏泽市| 白朗县| 张家港市| 舒兰市| 阿克陶县| 怀宁县| 仙桃市|