0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

傳輸控制協(xié)議TCP是怎樣進(jìn)行工作的

冬至配餃子 ? 來源:多蘭多 ? 作者:Toranto ? 2022-08-19 09:17 ? 次閱讀

TCP介紹

傳輸控制協(xié)議(TCP,Transmission Control Protocol)是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議。

TCP是為了在不可靠的互聯(lián)網(wǎng)絡(luò)上提供可靠的端到端字節(jié)流而專門設(shè)計(jì)的一個傳輸協(xié)議。

當(dāng)應(yīng)用層向TCP層發(fā)送用于網(wǎng)間傳輸?shù)?、?位字節(jié)表示的數(shù)據(jù)流,TCP則把數(shù)據(jù)流分割成適當(dāng)長度的報文段,最大傳輸段大小(MSS)通常受該計(jì)算機(jī)連接的網(wǎng)絡(luò)的數(shù)據(jù)鏈路層的最大傳送單元(MTU)限制。之后TCP把數(shù)據(jù)包傳給IP層,由它來通過網(wǎng)絡(luò)將包傳送給接收端實(shí)體的TCP層。

TCP為了保證報文傳輸?shù)目煽?,?/p>

給每個包一個序號

,同時序號也保證了傳送到接收端實(shí)體的包的

按序接收

。然后接收端實(shí)體對已成功收到的字節(jié)發(fā)回一個相應(yīng)的

確認(rèn)(ACK)

;如果發(fā)送端實(shí)體在合理的往返時延(RTT)內(nèi)未收到確認(rèn),那么對應(yīng)的數(shù)據(jù)(假設(shè)丟失了)將會被重傳(超時重傳)。

TCP工作過程

poYBAGL-4p6ATcBxAAC3qa_tyN0088.png

首先,我們可以很明顯從圖中看出,tcp工作需要分兩個主體,一個客戶端,一個服務(wù)器。我用超級大白話來幫助理解:①tcp服務(wù)器

買部手機(jī)

插上電話卡

設(shè)置手機(jī)為正常的接聽狀態(tài)

等待他人來電

②在程序中的

創(chuàng)建socket套接字

綁定本機(jī)地址信息

設(shè)置套接字為被動連接

等待客戶端的連接

收發(fā)數(shù)據(jù)

pYYBAGL-4tmAQ8JzAAEZ6AbARv0604.pngpYYBAGL-4t-AKGQqAACYOyTjKB0120.png

我們先運(yùn)行這個程序,然后打開網(wǎng)絡(luò)調(diào)試助手進(jìn)行連接:

pYYBAGL-4weAP_RsAAE_nvvRYrc561.pngpYYBAGL-4w2AO5XmAABs8HlCsFU573.png

然后我們在服務(wù)器端口發(fā)送消息至客戶端:

poYBAGL-4zKAWfuxAABvTLIZHQM823.pngpoYBAGL-4zeAe-6JAAGzibGlRos066.png

當(dāng)然,我們也可以脫離網(wǎng)絡(luò)調(diào)試助手,我們自己協(xié)議簡易客戶端程序:

pYYBAGL-40qAErJlAACk1VyGk0g617.png

同樣地,手機(jī)要先開機(jī)才能接電話,所以先運(yùn)行服務(wù)器,再運(yùn)行客戶端:

poYBAGL-416AaU3BAAB4OjCTWyY120.png

切換到服務(wù)器:

poYBAGL-43yAdeQeAACeGV1gQBk463.png

回到客戶端:

pYYBAGL-45OAOQN5AACwjcJb8yg514.png

同樣也是非常簡單,客戶端的寫法只需要發(fā)送建立連接即可,也就是通過connect方法撥通電話。

當(dāng)然,你也可以選擇加入循環(huán)語句進(jìn)行循環(huán)收發(fā),但想要達(dá)到聊天軟件那種收發(fā)無規(guī)律的效果,還是需要并發(fā)編程(后面我也會出的)。

TCP工作方式(原理)

poYBAGL-47-ASoraAAC7gAUfL1M514.png

一、三次握手

TCP是因特網(wǎng)中的傳輸層協(xié)議,使用

三次握手協(xié)議

建立連接。當(dāng)主動方發(fā)出SYN連接請求后,等待對方回答SYN+ACK,并最終對對方的 SYN 執(zhí)行 ACK 確認(rèn)。這種建立連接的方法可以防止產(chǎn)生錯誤的連接。

術(shù)語:

SYN:同步位,SYN=1,表示進(jìn)行一個連接請求;

ACK:確認(rèn)位,ACK=1,確認(rèn)有效,ACK=0,確認(rèn)無效;

seq:序號;

FIN:斷開連接并且會停止發(fā)送數(shù)據(jù)。

poYBAGL-49aABD0VAACXJCTY9vM439.png

TCP三次握手的過程如下:

1. 客戶端發(fā)送SYN(SEQ=x)報文給服務(wù)器端,進(jìn)入SYN_SEND狀態(tài)。

2. 服務(wù)器端收到SYN報文,回應(yīng)一個SYN (SEQ=y)ACK(ACK=x+1)報文,進(jìn)入SYN_RECV狀態(tài)。

3. 客戶端收到服務(wù)器端的SYN報文,回應(yīng)一個ACK(ACK=y+1)報文,進(jìn)入Established狀態(tài)。

三次握手完成,TCP客戶端和服務(wù)器端成功地建立連接,可以開始傳輸數(shù)據(jù)了。

形象點(diǎn)就是:

客戶端說:服務(wù)器我要連接你了,你同意嗎?

服務(wù)器說:我同意??蛻舳?,我要連接你了,你同意嗎?

客戶端說:我也同意。

TCP三次握手的原因:

防止已失效的連接請求又傳送到服務(wù)器端,因而產(chǎn)生錯誤。三次握手的過程即是通信雙方相互告知序列號起始值, 并確認(rèn)對方已經(jīng)收到了序列號起始值的必經(jīng)步驟。如果只是兩次握手, 至多只有連接發(fā)起方的起始序列號能被確認(rèn), 另一方選擇的序列號則得不到確認(rèn)。

二、四次揮手

poYBAGL-4-yASUQUAACo5ywKfb4151.png

形象點(diǎn)就是:

客戶端說:服務(wù)器,我要斷開你了!

服務(wù)器說:好的!讓我傳完數(shù)據(jù)!

數(shù)據(jù)傳輸結(jié)束后

服務(wù)器說:客戶端,我要斷開你了!

客戶端說:好的!

這就表現(xiàn)出了四次揮手,和三次握手不同的是,結(jié)束的時候,可能仍然有數(shù)據(jù)在進(jìn)行傳輸,tcp為了保證數(shù)據(jù)傳輸?shù)耐暾?,斷開連接會在數(shù)據(jù)傳輸結(jié)束之后再進(jìn)行,因此這里也體現(xiàn)出一次揮手。

TCP簡易聊天器(局域網(wǎng))

poYBAGL-5A6ABRLhAADSh34PCso757.pngpYYBAGL-5BOAYwQ7AACneQErvLE782.png

仍然是先服務(wù)端再客戶端。



審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    8701

    瀏覽量

    84546
  • TCP
    TCP
    +關(guān)注

    關(guān)注

    8

    文章

    1324

    瀏覽量

    78756
  • 傳輸協(xié)議
    +關(guān)注

    關(guān)注

    0

    文章

    70

    瀏覽量

    11388
  • RTT
    RTT
    +關(guān)注

    關(guān)注

    0

    文章

    64

    瀏覽量

    16988
收藏 人收藏

    評論

    相關(guān)推薦

    TCP傳輸控制協(xié)議知識科普拓展

    傳輸控制協(xié)議TCP,Transmission Control Protocol)是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信
    的頭像 發(fā)表于 11-27 17:46 ?840次閱讀
    <b class='flag-5'>TCP</b><b class='flag-5'>傳輸</b><b class='flag-5'>控制</b><b class='flag-5'>協(xié)議</b>知識科普拓展

    請問在stm32板上寫tcp協(xié)議通過wifi傳輸怎樣設(shè)計(jì)

    在stm32板上寫tcp協(xié)議通過wifi傳輸,該怎樣設(shè)計(jì),有沒有一種無內(nèi)置tcp協(xié)議的wifi模
    發(fā)表于 03-04 06:35

    TCP/IP協(xié)議棧的工作流程是怎樣

    協(xié)議棧是什么?BLE協(xié)議棧有哪些應(yīng)用?TCP/IP協(xié)議棧的工作流程是怎樣的?
    發(fā)表于 11-03 07:33

    TCP和UDP協(xié)議簡析

    。二、TCP編程模型傳輸控制協(xié)議TCP (Transmission Control Protocol)是一種面向連接、可靠的
    發(fā)表于 12-15 08:13

    TCP/IP傳輸協(xié)議概攬

    TCP/IP 傳輸協(xié)議概攬 傳輸控制協(xié)議 TCP
    發(fā)表于 06-09 21:51 ?778次閱讀
    <b class='flag-5'>TCP</b>/IP<b class='flag-5'>傳輸</b>層<b class='flag-5'>協(xié)議</b>概攬

    TCP/IP傳輸協(xié)議概覽

    TCP/IP傳輸協(xié)議概攬 傳輸控制協(xié)議 TCP
    發(fā)表于 06-09 21:52 ?905次閱讀
    <b class='flag-5'>TCP</b>/IP<b class='flag-5'>傳輸</b>層<b class='flag-5'>協(xié)議</b>概覽

    TCP/IP協(xié)議簡介

    TCP/IP協(xié)議簡介 TCP/IP傳輸協(xié)議概攬 傳輸
    發(fā)表于 06-09 23:07 ?1350次閱讀
    <b class='flag-5'>TCP</b>/IP<b class='flag-5'>協(xié)議</b>簡介

    傳輸控制協(xié)議(TCP)/網(wǎng)絡(luò)層協(xié)議是什么意思

    傳輸控制協(xié)議(TCP)/網(wǎng)絡(luò)層協(xié)議是什么意思 傳輸控制
    發(fā)表于 04-06 16:44 ?2739次閱讀

    TCP傳輸控制協(xié)議

    TCP-IP詳解卷2 TCP傳輸控制協(xié)議,學(xué)習(xí)TCP很好的資料。歡迎下載。
    發(fā)表于 05-09 14:33 ?0次下載

    一文詳解TCP傳輸控制協(xié)議

    TCP(Transmission Control Protocol 傳輸控制協(xié)議)是一種面向連接(連接導(dǎo)向)的、可靠的、 基于IP的傳輸
    發(fā)表于 05-25 15:38 ?1519次閱讀
    一文詳解<b class='flag-5'>TCP</b><b class='flag-5'>傳輸</b><b class='flag-5'>控制</b><b class='flag-5'>協(xié)議</b>

    TCP/IP協(xié)議

    TCP/IP傳輸協(xié)議,即傳輸控制/網(wǎng)絡(luò)協(xié)議,也叫作網(wǎng)絡(luò)通訊協(xié)
    的頭像 發(fā)表于 11-09 13:31 ?1934次閱讀

    什么是TCP協(xié)議

    TCP(Transmission Control Protocol,傳輸控制協(xié)議),它是最常用傳輸協(xié)議
    的頭像 發(fā)表于 02-14 10:26 ?2817次閱讀

    TCP/IP協(xié)議的組成

    TCP/IP傳輸協(xié)議,即傳輸控制/網(wǎng)絡(luò)協(xié)議,也叫作網(wǎng)絡(luò)通訊協(xié)
    發(fā)表于 05-06 15:05 ?2337次閱讀

    傳統(tǒng)TCP設(shè)計(jì)的可靠傳輸協(xié)議詳解

    傳統(tǒng)TCP設(shè)計(jì)的可靠傳輸協(xié)議是一種基于TCP協(xié)議實(shí)現(xiàn)的可靠傳輸方法。下面是傳統(tǒng)
    的頭像 發(fā)表于 07-21 16:51 ?585次閱讀

    一文了解TCP/IP協(xié)議

    TCP/IP協(xié)議是現(xiàn)代計(jì)算機(jī)網(wǎng)絡(luò)通信的基礎(chǔ),是互聯(lián)網(wǎng)及局域網(wǎng)廣泛使用的一套協(xié)議。TCP/IP協(xié)議集包括許多
    的頭像 發(fā)表于 08-07 15:38 ?367次閱讀
    一文了解<b class='flag-5'>TCP</b>/IP<b class='flag-5'>協(xié)議</b>