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

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

  1. 將HTTP消息交給協(xié)議棧

    1. 應用程序調用socket庫中的write將發(fā)送的數(shù)據(jù)交給協(xié)議棧
    2. 協(xié)議棧收到數(shù)據(jù)后執(zhí)行發(fā)送操作。
    1. 協(xié)議棧收到數(shù)據(jù)之后并不會馬上發(fā)送去件,影響協(xié)議棧發(fā)送的兩大因素

      1. 數(shù)據(jù)長度:當從應用程序中收到的數(shù)據(jù)長度超過或者接近MSS時發(fā)送

        1. MTU: 一個網(wǎng)絡包的最大長度笨农,以太網(wǎng)中一般為1500字節(jié)
        2. MSS: 出去頭部之后就缆,一個網(wǎng)絡包所能容納的TCP數(shù)據(jù)的最大長度
        3. [圖片上傳失敗...(image-fa024d-1587223590343)]
      2. 時間:協(xié)議棧內部有一個計時器,經(jīng)過一段時間之后谒亦,網(wǎng)絡包就會發(fā)送出去竭宰。

  2. 對較大的數(shù)據(jù)進行拆分

    1. 當發(fā)送緩沖區(qū)的數(shù)據(jù)超過MSS長度時,數(shù)據(jù)會被以沒MSS長度為單位進行拆分放進單獨的網(wǎng)絡包進行發(fā)送诊霹。
    2. [圖片上傳失敗...(image-b5a3da-1587223590344)]
  3. 使用ACK號確認網(wǎng)絡包已收到

    1. TCP具備確認是否成功收到網(wǎng)絡包

      1. 通過序號和ACK號進行數(shù)據(jù)確認
      2. TCP數(shù)據(jù)收發(fā)是雙向的羞延,客戶端和服務端需要各自計算序號渣淳,雙方在連接的過程中相互告知自己計算的序號和初始值脾还。
      1. 序號和ACK號交互的實際過程
      1. [圖片上傳失敗...(image-620e08-1587223590344)]

        1. 客戶端將到服務端方向通信相關的序號初始值,發(fā)送給服務端入愧。
        2. 服務端通過初始值算出ACK號并返回作為確認鄙漏,同時也計算出到客戶端方向的通信的序號初始值嗤谚,發(fā)客戶端給
        3. 客戶端根據(jù)初始值算出ACK返回給服務端
        4. 客戶端向服務端發(fā)送請求,序號和數(shù)據(jù)一起發(fā)送
        5. 服務度收到數(shù)據(jù)并返回ACK號
        6. 同7
        7. 同服務端向客戶端發(fā)送數(shù)據(jù)正好相反
    1. 通過“序號”和“ACK號”可以確認接收方是否收到了網(wǎng)絡包
  4. 根據(jù)網(wǎng)絡包平均返回時間調整ACK號等待時間

    1. TCP采用了動態(tài)調整等待時間的方法

      1. 等待時間是根據(jù)ACK號返回所需要的時間來確定的
  5. 使用窗口有效管理ACK號

    1. 滑動窗口:發(fā)送一個包之后怔蚌,不等待ACK號返回巩步,直接發(fā)送后續(xù)一系列包
    2. [圖片上傳失敗...(image-66c507-1587223590344)]
    1. 接收緩沖區(qū):接收方的TCP收發(fā)數(shù)據(jù)存放的地方
    2. 緩沖區(qū)溢出:數(shù)據(jù)達到速率比處理數(shù)據(jù)并發(fā)給應用程序的速率要快,數(shù)據(jù)越來越大就會造成溢出桦踊。
    1. 滑動窗口的結局思路:接收方告知發(fā)送方最多能處理多少的數(shù)據(jù)椅野,發(fā)送方根據(jù)這個值控制發(fā)送數(shù)據(jù)
  6. ACK和窗口的合并

    1. 確定返回ACK號和更新窗口的時機〖瑁可以提高收發(fā)數(shù)據(jù)的效率竟闪。
    2. 在等待發(fā)送ACK號的時候正好更新窗口,就可以吧ACK和更新窗口放在一個網(wǎng)絡包里一起發(fā)送杖狼。
  7. 接受HTTP響應消息

    1. 協(xié)議棧檢查收到的數(shù)據(jù)塊和TCP頭部的內容炼蛤,判斷是否有數(shù)據(jù)丟失
    2. 如果沒有問題返回ACK號
    3. 協(xié)議棧將數(shù)據(jù)暫存到接受緩沖區(qū)中
    4. 將數(shù)據(jù)連接起來還原出原始數(shù)據(jù)
    5. 將原始數(shù)據(jù)復制到應用程序指定的內存地址中
    6. 最后控制流程交回應用程序
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市蝶涩,隨后出現(xiàn)的幾起案子理朋,更是在濱河造成了極大的恐慌,老刑警劉巖绿聘,帶你破解...
    沈念sama閱讀 216,324評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嗽上,死亡現(xiàn)場離奇詭異,居然都是意外死亡熄攘,警方通過查閱死者的電腦和手機炸裆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鲜屏,“玉大人烹看,你說我怎么就攤上這事÷迨罚” “怎么了惯殊?”我有些...
    開封第一講書人閱讀 162,328評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長也殖。 經(jīng)常有香客問我土思,道長,這世上最難降的妖魔是什么忆嗜? 我笑而不...
    開封第一講書人閱讀 58,147評論 1 292
  • 正文 為了忘掉前任己儒,我火速辦了婚禮,結果婚禮上捆毫,老公的妹妹穿的比我還像新娘闪湾。我一直安慰自己,他們只是感情好绩卤,可當我...
    茶點故事閱讀 67,160評論 6 388
  • 文/花漫 我一把揭開白布途样。 她就那樣靜靜地躺著江醇,像睡著了一般。 火紅的嫁衣襯著肌膚如雪何暇。 梳的紋絲不亂的頭發(fā)上陶夜,一...
    開封第一講書人閱讀 51,115評論 1 296
  • 那天,我揣著相機與錄音裆站,去河邊找鬼条辟。 笑死,一個胖子當著我的面吹牛宏胯,可吹牛的內容都是我干的捂贿。 我是一名探鬼主播,決...
    沈念sama閱讀 40,025評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼胳嘲,長吁一口氣:“原來是場噩夢啊……” “哼厂僧!你這毒婦竟也來了?” 一聲冷哼從身側響起了牛,我...
    開封第一講書人閱讀 38,867評論 0 274
  • 序言:老撾萬榮一對情侶失蹤颜屠,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后鹰祸,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體甫窟,經(jīng)...
    沈念sama閱讀 45,307評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,528評論 2 332
  • 正文 我和宋清朗相戀三年蛙婴,在試婚紗的時候發(fā)現(xiàn)自己被綠了粗井。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,688評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡街图,死狀恐怖浇衬,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情餐济,我是刑警寧澤耘擂,帶...
    沈念sama閱讀 35,409評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站絮姆,受9級特大地震影響醉冤,放射性物質發(fā)生泄漏。R本人自食惡果不足惜篙悯,卻給世界環(huán)境...
    茶點故事閱讀 41,001評論 3 325
  • 文/蒙蒙 一蚁阳、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧鸽照,春花似錦螺捐、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至漏峰,卻和暖如春糠悼,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背浅乔。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評論 1 268
  • 我被黑心中介騙來泰國打工倔喂, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人靖苇。 一個月前我還...
    沈念sama閱讀 47,685評論 2 368
  • 正文 我出身青樓席噩,卻偏偏與公主長得像,于是被迫代替她去往敵國和親贤壁。 傳聞我的和親對象是個殘疾皇子悼枢,可洞房花燭夜當晚...
    茶點故事閱讀 44,573評論 2 353

推薦閱讀更多精彩內容

  • 2.3.1 將HTTP請求消息交給協(xié)議棧 首先,協(xié)議棧不關心應用程序傳來的數(shù)據(jù)是什么內容脾拆,在協(xié)議椔鳎看來,發(fā)送的數(shù)據(jù)...
    ShutLove閱讀 208評論 0 0
  • 前言:網(wǎng)絡知識非常的重要名船,如果你不是做程序的绰上,那么一些網(wǎng)絡常識還是得知道的;而做程序的渠驼,就更不用說了蜈块,不僅需要了解...
    Dwyane_Coding閱讀 585評論 0 9
  • 個人認為,Goodboy1881先生的TCP /IP 協(xié)議詳解學習博客系列博客是一部非常精彩的學習筆記迷扇,這雖然只是...
    貳零壹柒_fc10閱讀 5,054評論 0 8
  • 運輸層協(xié)議概述 從通信和信息處理的角度看百揭,運輸層向它上面的應用層提供通信服務,它屬于面向通信部分的最高層蜓席,同時也是...
    srtianxia閱讀 2,406評論 0 2
  • 1.TCP報頭格式 UDP報頭格式 TCP報頭格式 UDP報頭格式 具體的各部分解釋看 TCP報文格式詳解 - ...
    杰倫哎呦哎呦閱讀 2,454評論 0 5