国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

JavaEE-輕松了解網(wǎng)絡(luò)原理之TCP協(xié)議

這篇具有很好參考價(jià)值的文章主要介紹了JavaEE-輕松了解網(wǎng)絡(luò)原理之TCP協(xié)議。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

TCP協(xié)議

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

TCP協(xié)議數(shù)據(jù)格式

JavaEE-輕松了解網(wǎng)絡(luò)原理之TCP協(xié)議

  • 16位源端口號(hào)與16位目的端口號(hào)表示數(shù)據(jù)從那個(gè)進(jìn)程來(lái)要到那個(gè)進(jìn)程去.
  • 32位序號(hào)表示一次TCP通信(從TCP連接建立到斷開)過(guò)程中某一個(gè)傳輸方向上的字節(jié)流的每個(gè)字節(jié)的編號(hào)(TCP將每個(gè)字節(jié)的數(shù)據(jù)都進(jìn)行了編號(hào),稱為序列號(hào)).
  • 32為確認(rèn)序號(hào)表示接收方對(duì)發(fā)送的tcp報(bào)文段的響應(yīng)。 其值是收到的TCP報(bào)文段的序號(hào)值加1.
  • 4位TCP報(bào)文長(zhǎng)度表示該TCP頭部有多少個(gè)32位bit(有多少個(gè)4字節(jié)),所以TCP頭部最大長(zhǎng)度是15 * 4 = 60字節(jié).

6位標(biāo)志位:
URG:表示緊急指針是否有效
ACK:確認(rèn)號(hào)是否有效
PSH:提示接收端應(yīng)用程序立刻從TCP緩沖區(qū)把數(shù)據(jù)讀走
RST:表示復(fù)位連接,也就是重新建立連接
SYN:表示同步,把攜帶SYN標(biāo)識(shí)的稱為同步報(bào)文
FIN:通知對(duì)方,本端要關(guān)閉了,我們稱攜帶FIN標(biāo)識(shí)的為結(jié)束報(bào)文段

  • 16位窗口大小:表示接收端TCP 能最大提供65535個(gè)字節(jié)的緩沖.
  • 16位校驗(yàn)和:發(fā)送方通過(guò)以TCP報(bào)頭與報(bào)文數(shù)據(jù)進(jìn)行一定數(shù)學(xué)計(jì)算得到的結(jié)果填充于此,接收方以相同數(shù)學(xué)方法進(jìn)行計(jì)算,如果校驗(yàn)和相同則校驗(yàn)成功.
  • 16位緊急指針:標(biāo)識(shí)哪部分?jǐn)?shù)據(jù)是緊急數(shù)據(jù).

TCP原理

確認(rèn)應(yīng)答

接收到發(fā)送方的數(shù)據(jù)后,會(huì)返回發(fā)送一個(gè)帶有接收數(shù)據(jù)的最后一個(gè)字節(jié)的下一個(gè)字節(jié)序號(hào)的ACK報(bào)文.

比如接收到的最后一個(gè)字節(jié)序號(hào)為1000,則返回的序號(hào)為1001,代表前1000個(gè)字節(jié)數(shù)據(jù)已經(jīng)全部收到.

為解決后發(fā)先至,tcp會(huì)有一個(gè)接收緩沖區(qū)(內(nèi)核中的內(nèi)存空間),每個(gè)socket都有一份自己的接受緩沖區(qū),tcp可在緩沖區(qū)對(duì)收到的消息根據(jù)序列號(hào)進(jìn)行整隊(duì).

超時(shí)重傳

網(wǎng)絡(luò)傳輸可能會(huì)出現(xiàn)丟包的情況:

  1. 發(fā)送的數(shù)據(jù)報(bào)接受方?jīng)]有收到
  2. 接受方收到后,發(fā)回的ack報(bào)文傳輸過(guò)程中丟失.

應(yīng)對(duì)策略
發(fā)送方?jīng)]有收到ack應(yīng)答報(bào)文,就會(huì)隔一段時(shí)間進(jìn)行報(bào)文重發(fā),隨著重發(fā)次數(shù)的增加,間隔時(shí)間也會(huì)增長(zhǎng),連續(xù)多次重傳后還是無(wú)法獲取ack報(bào)文,此時(shí)tcp就會(huì)嘗試重置連接,如果重置失敗,則會(huì)釋放連接(TCP為了保證無(wú)論在任何環(huán)境下都能比較高性能的通信,因此會(huì)動(dòng)態(tài)計(jì)算這個(gè)最大超時(shí)時(shí)間).

如果收到重發(fā)數(shù)據(jù),數(shù)據(jù)重復(fù),tcp會(huì)根據(jù)收的數(shù)據(jù)序號(hào)自動(dòng)進(jìn)行去重

問(wèn)tcp如何實(shí)現(xiàn)可靠性的?

  答:確認(rèn)應(yīng)答+超時(shí)重傳

連接管理

三次握手

JavaEE-輕松了解網(wǎng)絡(luò)原理之TCP協(xié)議
上述過(guò)程由內(nèi)核自動(dòng)完成,應(yīng)用程序干預(yù)不了.
握手?的是通信雙方進(jìn)行一次網(wǎng)絡(luò)交互,相當(dāng)于客戶端與服務(wù)器端,通過(guò)三次交互,建立了連接(雙方各自記錄對(duì)方的信息)
三次握手的目的就是為了投石問(wèn)路,驗(yàn)證客戶端和服務(wù)器端,各自的發(fā)送能力與接受能力是否正常!

客戶端向服務(wù)器發(fā)送SYN報(bào)文問(wèn)服務(wù)器你準(zhǔn)備好了沒,服務(wù)器返回SYN+ACK報(bào)文說(shuō)我準(zhǔn)備好了,你呢?客戶端發(fā)送ACK告訴服務(wù)器我準(zhǔn)備好了,到此連接建立成功.

四次揮手

JavaEE-輕松了解網(wǎng)絡(luò)原理之TCP協(xié)議
進(jìn)行斷開連接,斷開連接服務(wù)器與客戶端都有可能先進(jìn)行發(fā)起FIN結(jié)束報(bào)文.
為什么是四次揮手而不是三次揮手呢?
ack與fin有一定概率合并成為一個(gè)的!!但通常情況下不能合并!
ack與fin是不會(huì)同時(shí)觸發(fā)的,因?yàn)閍ck是系統(tǒng)內(nèi)核完成的,而fin而是由應(yīng)用程序來(lái)進(jìn)行控制的,調(diào)用socket的close方法才會(huì)觸發(fā)fin!!!

滑動(dòng)窗口

發(fā)送方一次發(fā)多條數(shù)據(jù)到一定程度停止發(fā)送,發(fā)送方一次等待多個(gè)ack,收到一條ack報(bào)文發(fā)送一條數(shù)據(jù),形似一個(gè)滑動(dòng)的窗口.
JavaEE-輕松了解網(wǎng)絡(luò)原理之TCP協(xié)議

JavaEE-輕松了解網(wǎng)絡(luò)原理之TCP協(xié)議
出現(xiàn)丟包情況:

  1. 數(shù)據(jù)包到達(dá),ACK報(bào)文丟失
    這種情況沒啥影響,只要最后幾個(gè)ack報(bào)文收到,就表明前面的ack也都收到了(確認(rèn)序號(hào)的含義表示的是該序號(hào)之前的所有數(shù)據(jù)都已經(jīng)收到).
  2. 數(shù)據(jù)包未到達(dá)
    JavaEE-輕松了解網(wǎng)絡(luò)原理之TCP協(xié)議

如果是這種情況,應(yīng)答報(bào)文一直顯示已經(jīng)接受到了1001,1001到2000會(huì)超時(shí)重傳,而后面數(shù)據(jù)的接受是不會(huì)受影響的,當(dāng)1001到2000接受到后,會(huì)直接返回已接受數(shù)據(jù)的最后一個(gè)字節(jié)的下一個(gè)字節(jié)的序號(hào).
上述超時(shí)重傳稱為快述重傳.

流量控制

本質(zhì)就是讓接收方來(lái)限制一下發(fā)送方的速度-根據(jù)接收端的處理能力,來(lái)決定發(fā)送端的發(fā)送速度.
當(dāng)ACK報(bào)文頭部的ack位為1時(shí),報(bào)頭的窗口大小字段就會(huì)生效,返回一個(gè)窗口大小來(lái)決定發(fā)送方發(fā)送的速度.
當(dāng)發(fā)送方,發(fā)現(xiàn)對(duì)方接收緩沖區(qū)滿了之后,就會(huì)暫停發(fā)送,但仍然會(huì)每隔一段時(shí)間觸發(fā)一個(gè)"窗口探測(cè)"報(bào)文,如果探測(cè)一會(huì)發(fā)現(xiàn)窗口大小不為0,則繼續(xù)發(fā)送.

擁塞控制

TCP引入 慢啟動(dòng) 機(jī)制,先發(fā)少量的數(shù)據(jù),探探路,摸清當(dāng)前的網(wǎng)絡(luò)擁堵狀態(tài),再?zèng)Q定按照多大的速度傳輸數(shù)據(jù).
衡量了傳輸路徑的處理能力–木桶效應(yīng)(傳輸路勁上某一個(gè)路由器可用傳輸速率很小,那么這個(gè)路由器的傳輸能力即為傳輸路徑上的最大傳輸能力)
通過(guò)實(shí)驗(yàn)的方式,找到一個(gè)合適的發(fā)射速率–先開始以一個(gè)較小的速率發(fā)送,不丟包的情況下提高速率,如果丟包,立即調(diào)小速率. 達(dá)到一個(gè)動(dòng)態(tài)平衡.

    實(shí)際發(fā)送的窗口大小=將擁塞窗口和接收端主機(jī)反饋的窗口大小(流量控制窗口)做比較,取較小的值作為

實(shí)際發(fā)送的窗口
JavaEE-輕松了解網(wǎng)絡(luò)原理之TCP協(xié)議
此圖描述: 擁塞窗口先以一個(gè)較小值進(jìn)行傳輸,無(wú)丟包情況下速率開始以指數(shù)形式增長(zhǎng),達(dá)到一定閾值后以線性進(jìn)行增長(zhǎng)(避免一下子超過(guò)上限很多),當(dāng)開始出現(xiàn)丟包情況時(shí)認(rèn)為當(dāng)前窗口已達(dá)路徑上限,且窗口回到一個(gè)較小值,閾值更新為為上限的一半;

延遲應(yīng)答

延時(shí)應(yīng)答的核心在于讓ACK應(yīng)答報(bào)文稍微延時(shí)一會(huì)兒應(yīng)答,那么此時(shí)應(yīng)答報(bào)文中的接受方緩沖區(qū)大小大概率比立即返回大一點(diǎn)(應(yīng)用程序一直從接收緩沖區(qū)讀取數(shù)據(jù)),此時(shí)發(fā)送方可發(fā)送的數(shù)據(jù)就會(huì)多一點(diǎn).
窗口越大,網(wǎng)絡(luò)吞吐量就越大,傳輸效率就越高,在保證網(wǎng)絡(luò)不擁塞的情況下盡量提高傳輸效率
數(shù)量限制:每隔N個(gè)包就應(yīng)答一次;
時(shí)間限制:超過(guò)最大延遲時(shí)間就應(yīng)答一次;

捎帶應(yīng)答

接收方的應(yīng)答報(bào)文ack稍等一會(huì)接收方的響應(yīng)報(bào)文 二者合并為一個(gè)數(shù)據(jù)報(bào)進(jìn)行發(fā)送可提高效率.
捎帶應(yīng)答的效果----四次揮手有可呢三次揮完.

面向字節(jié)流

粘包問(wèn)題
A連續(xù)給B發(fā)送了多個(gè)應(yīng)用層數(shù)據(jù)報(bào),這些數(shù)據(jù)就會(huì)堆積在B的接收緩沖區(qū),此時(shí)B的應(yīng)用程序再去讀這些數(shù)據(jù)報(bào)就會(huì)很難分清楚那個(gè)是一個(gè)完整的數(shù)據(jù)報(bào),很容易讀半個(gè)(在TCP的協(xié)議頭中,沒有如同UDP一樣的 “報(bào)文長(zhǎng)度” 這樣的字段,站在應(yīng)用層的角度,看到的只是一串連續(xù)的字節(jié)數(shù)據(jù),不知道從哪個(gè)部分開始到哪個(gè)部分,是一個(gè)完整的應(yīng)用層數(shù)據(jù)包).
解決方法:

  1. 約定分割符.
  2. 約定長(zhǎng)度(例如約定數(shù)據(jù)的前四個(gè)字節(jié),用來(lái)表示數(shù)據(jù)報(bào)的長(zhǎng)度).

異常問(wèn)題

  1. 進(jìn)程關(guān)閉/進(jìn)程崩潰
    進(jìn)程沒有了,socket是文件,隨之關(guān)閉,雖然進(jìn)程沒有了,但是連接還在,可進(jìn)行正常四次揮手.
  2. 主機(jī)關(guān)機(jī)
    所有用戶進(jìn)程被關(guān)閉,觸發(fā)四次揮手,如果沒有揮完,比如服務(wù)器端發(fā)來(lái)fin ,客戶端沒來(lái)及ack就關(guān)機(jī)了.
    此時(shí)對(duì)端就會(huì)重轉(zhuǎn)fin…重傳幾次后發(fā)現(xiàn)沒有ack后嘗試重置連接,沒有成功后就釋放連接.
  3. 斷電/斷網(wǎng)
    1. 如果對(duì)方是發(fā)送方
      對(duì)方就會(huì)收不到ack=>超時(shí)重傳->重置連接->釋放連接
    2. 如果對(duì)方是接受端
      對(duì)方是無(wú)法立即知道,你這邊是沒來(lái)得及發(fā)數(shù)據(jù)還是直接沒了
      這使tcp的心眺包 ?;顧C(jī)制就體現(xiàn)作用了

接收方定期給發(fā)送方發(fā)送一個(gè)心跳包如果有響應(yīng)就說(shuō)明對(duì)端還存活,如果沒有響應(yīng)而說(shuō)明對(duì)端已經(jīng)掛了(心跳包時(shí)周期性的并沒有那么及時(shí),并且判斷也沒有那么嚴(yán)格).文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-429604.html

到了這里,關(guān)于JavaEE-輕松了解網(wǎng)絡(luò)原理之TCP協(xié)議的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • JAVAEE初階相關(guān)內(nèi)容第十七彈--網(wǎng)絡(luò)原理之TCP_IP

    JAVAEE初階相關(guān)內(nèi)容第十七彈--網(wǎng)絡(luò)原理之TCP_IP

    目錄 1. TCP-IP五層模型 2. UDP協(xié)議 2.1 特點(diǎn) 2.2 UDP協(xié)議端格式 2.3 校驗(yàn)和 3. TCP協(xié)議 3.1 特點(diǎn) 3.2 TCP協(xié)議段格式 3.2.1 首部長(zhǎng)度 3.2.2 選項(xiàng) 3.2.3 保留6位 3.3 TCP內(nèi)部的工作機(jī)制 3.3.1 確認(rèn)應(yīng)答 (1)應(yīng)答報(bào)文ack (2)小結(jié) 3.3.2 超時(shí)重傳 3.3.3 連接管理 3.3.4 滑動(dòng)窗口 窗口大小 3.3.5流量控制 3

    2024年01月18日
    瀏覽(25)
  • JAVAEE初階相關(guān)內(nèi)容第十九彈--網(wǎng)絡(luò)原理之TCP_IP【續(xù)集2】

    JAVAEE初階相關(guān)內(nèi)容第十九彈--網(wǎng)絡(luò)原理之TCP_IP【續(xù)集2】

    上一篇博客主要介紹的是關(guān)于網(wǎng)絡(luò)層協(xié)議-IP協(xié)議的重點(diǎn)介紹。需要掌握關(guān)于IP協(xié)議的協(xié)議頭格式,關(guān)于IPV4分配不夠的解決辦法。地址管理與路由選擇。 點(diǎn)擊跳轉(zhuǎn)上一篇博客 本篇博客將繼續(xù)學(xué)習(xí)關(guān)于計(jì)網(wǎng)中協(xié)議的內(nèi)容。 本篇博客主要介紹關(guān)于數(shù)據(jù)鏈路層的重點(diǎn)協(xié)議-以太網(wǎng)。

    2024年02月03日
    瀏覽(29)
  • 網(wǎng)絡(luò)原理——TCP協(xié)議

    網(wǎng)絡(luò)原理——TCP協(xié)議

    目錄 一.TCP概念及其特性? ? ?? 二.TCP原理 1.確認(rèn)應(yīng)答機(jī)制 2.超時(shí)重傳機(jī)制 3.連接管理機(jī)制 三次握手的過(guò)程 四次揮手?jǐn)嚅_連接過(guò)程 四次揮手?jǐn)嚅_連接變形情況: 為什么連接階段時(shí)三次握手,斷開連接是四次揮手?? 服務(wù)器上面出現(xiàn)大量的CLOSE_WAIT狀態(tài)的TCP連接,請(qǐng)問(wèn)這種現(xiàn)象

    2024年02月06日
    瀏覽(19)
  • 網(wǎng)絡(luò)原理TCP協(xié)議

    網(wǎng)絡(luò)原理TCP協(xié)議

    hi,我們又見面了,今天為大家?guī)?lái)TCP協(xié)議,一共為大家介紹TCP協(xié)議的十個(gè)核心特性 TCP協(xié)議位于傳輸層,我們知道TCP有一個(gè)特點(diǎn)是可靠性,也就是我們知道傳輸過(guò)去的數(shù)據(jù)是否傳到了對(duì)端程序,也會(huì)盡可能傳過(guò)去,不論是否傳過(guò)去,都會(huì)有結(jié)果 是咋樣保證可靠性的呢? 確認(rèn)應(yīng)答+超時(shí)重傳

    2023年04月23日
    瀏覽(13)
  • 【網(wǎng)絡(luò)原理】TCP/IP協(xié)議

    【網(wǎng)絡(luò)原理】TCP/IP協(xié)議

    目錄 1.應(yīng)用層 2.傳輸層(核心問(wèn)題) 2.1 UDP協(xié)議 2.1.2 UDP的特點(diǎn) 2.1.3?基于UDP的應(yīng)用層協(xié)議 2.2 TCP協(xié)議(重點(diǎn)內(nèi)容) 2.2.1 TCP/IP 協(xié)議含義 2.2.2?TCP協(xié)議端格式: 2.2.3 TCP的特點(diǎn) 2.3?TCP原理 2.4?確認(rèn)應(yīng)答機(jī)制(安全機(jī)制) 2.5?超時(shí)重傳機(jī)制(安全機(jī)制) 2.5.1?數(shù)據(jù)直接丟了,接收方?jīng)]

    2023年04月13日
    瀏覽(38)
  • 【網(wǎng)絡(luò)原理】TCP/IP協(xié)議(續(xù))

    【網(wǎng)絡(luò)原理】TCP/IP協(xié)議(續(xù))

    目錄 ??網(wǎng)絡(luò)層重點(diǎn)協(xié)議(IP 協(xié)議) 一、地址管理 1.如何解決上述地址不夠用問(wèn)題? 2.NAT 機(jī)制 2.1?NAPT 2.2?在 NAT 背景下如何通信? 3.IPv6 4.IP地址 4.1?ABCDE類 4.2 子網(wǎng)掩碼 4.3 特殊的 IP 地址 二、路由選擇 1.路由器 1.1 網(wǎng)關(guān) 1.2 路由 ??數(shù)據(jù)鏈路層重點(diǎn)協(xié)議 1.以太網(wǎng) 1.1 認(rèn)識(shí)以太網(wǎng)

    2023年04月19日
    瀏覽(45)
  • 網(wǎng)絡(luò)原理(四):傳輸層協(xié)議 TCP/UDP

    網(wǎng)絡(luò)原理(四):傳輸層協(xié)議 TCP/UDP

    目錄 應(yīng)用層 傳輸層 udp 協(xié)議? 端口號(hào) 報(bào)文長(zhǎng)度(udp 長(zhǎng)度) 校驗(yàn)和 TCP 協(xié)議 確認(rèn)應(yīng)答 超時(shí)重傳 鏈接管理 滑動(dòng)窗口 流量控制 擁塞控制 延時(shí)應(yīng)答 捎帶應(yīng)答 總結(jié) 我們第一章讓我們對(duì)網(wǎng)絡(luò)有了一個(gè)初步認(rèn)識(shí),第二章和第三章我們通過(guò)代碼感受了網(wǎng)絡(luò)通信程序。 而本章的 通信原

    2023年04月27日
    瀏覽(23)
  • 【網(wǎng)絡(luò)原理】TCP/IP協(xié)議五層模型

    【網(wǎng)絡(luò)原理】TCP/IP協(xié)議五層模型

    ??作者:一只愛打拳的程序猿,Java領(lǐng)域新星創(chuàng)作者,CSDN、阿里云社區(qū)優(yōu)質(zhì)創(chuàng)作者。 ??專欄收錄于:計(jì)算機(jī)網(wǎng)絡(luò)原理 本期講解協(xié)議、OSI七層模型、TCP/IP五層模型、網(wǎng)絡(luò)設(shè)備所在的分層、數(shù)據(jù)的封裝和分傭。 目錄 1. 什么要有協(xié)議? 2. 協(xié)議的分層 2.1 協(xié)議分層的好處 3. OSI七層

    2024年02月08日
    瀏覽(23)
  • 2.4 - 網(wǎng)絡(luò)協(xié)議 - TCP協(xié)議工作原理,報(bào)文格式,抓包實(shí)戰(zhàn),UDP報(bào)文,UDP檢錯(cuò)原理

    「作者主頁(yè)」: 士別三日wyx 「作者簡(jiǎn)介」: CSDN top100、阿里云博客專家、華為云享專家、網(wǎng)絡(luò)安全領(lǐng)域優(yōu)質(zhì)創(chuàng)作者 「推薦專欄」: 對(duì)網(wǎng)絡(luò)安全感興趣的小伙伴可以關(guān)注專欄《網(wǎng)絡(luò)安全入門到精通》 TCP

    2024年02月05日
    瀏覽(92)
  • 【網(wǎng)絡(luò)原理】TCP/IP四層模型中的重點(diǎn)網(wǎng)絡(luò)協(xié)議

    【網(wǎng)絡(luò)原理】TCP/IP四層模型中的重點(diǎn)網(wǎng)絡(luò)協(xié)議

    目錄 ??一、應(yīng)用層協(xié)議 ??1、XML協(xié)議? ???2、JSON ???3、其他協(xié)議 ??二、傳輸層協(xié)議(UDP與TCP重點(diǎn)) ??1、UDP協(xié)議格式 ???2、TCP協(xié)議格式 ??TCP的10條機(jī)制(必會(huì)) 1、確認(rèn)應(yīng)答機(jī)制(可靠機(jī)制) 2、超時(shí)重傳機(jī)制(可靠機(jī)制) 3、連接管理機(jī)制(三次握手,四次揮手)(

    2024年02月04日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包