精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

請求數據包從發送到接收,都經歷了什么?

網絡 通信技術
這篇文章不會涉及到上面提到的什么各種狀態的變化,包內的標志位是什么,而是會更加關注于底層的東西,也就是上面那些發來發去的數據包是如何發送出去的。

之前講了「從輸入 URL 再到瀏覽器成功看到界面」中的域名是如何變成 IP 地址的,了解了 DNS 相關的東西。這篇文章就聊聊發生在 DNS 解析之后的操作——建立連接。也就是我們常說的三次握手。

看到三次握手你可能會說,這不是面試都被問爛了的題嗎?

三次握手不就是:

  1. 服務器開始為 CLOSE 狀態,然后監聽某個端口,此時服務器會進入 LISTEN 狀態
  2. 客戶端最初也是 CLOSE 狀態,客戶端會向服務器發送一個帶 SYN 標志位的數據包,主動發起連接。此時客戶端會變成 SYN-SENT 狀態
  3. 服務器接收到客戶端的數據包之后,通過標志位判斷出了客戶端想要建立連接。然后返回一個 SYN 和 ACK ,此時服務器的狀態變為了 SYN-RCVD
  4. 客戶端收到了服務器的 ACK 之后,會回一個 ACK 給服務器,回完這個 ACK 之后,服務器的狀態就變為了 ESTABLISH
  5. 服務器收到了客戶端回復的 ACK 之后,服務器的狀態也變成了 ESTABLISH

這不就完了嗎?還有什么好聊的?

這篇文章不會涉及到上面提到的什么各種狀態的變化,包內的標志位是什么,而是會更加關注于底層的東西,也就是上面那些發來發去的數據包是如何發送出去的。

其實不僅僅是建立連接時的三次握手,像瀏覽器中調用的很多 HTTP 接口,都會和服務器進行通信。

那這些個請求到底都是怎么發送給服務器的呢?

這還用問?不就是發個 HTTP 請求就過去了嗎?

當然,這個答案可能是很多不了解網絡的人可能會說出的答案。

其實更具體、更準確的說法是通過協議棧和網卡發送出去的。

其中,協議棧負責對數據進行打包,打包完成之后就由網卡將數據轉換成電信號,通過光纖發送出去了。

網卡自不必說,用來和其他的計算機進行通訊的硬件,我們常說的 MAC(Medium Access Control) 地址,其實就是網卡的編號,從其被生產出來的那一刻就被確定的一個唯一編號。MAC 地址長為 48 個比特,也就是 6 個字節,用十六進制進行表示。

當我們知道了和我們通信的 IP 地址之后,就可以委托操作系統中的協議棧將來來自應用程序的數據,打包成數據包然后發送出去。那協議棧,具體是啥呢?協議棧其實是一系列網絡協議的總和,例如:

  • TCP
  • UDP
  • IP

不同的應用程序在進行數據傳輸的時候,可能會選擇不同的協議。例如我們使用的瀏覽器就是使用的 TCP 協議,而像之前講過的 DNS 解析就用的 UDP 協議。

那數據在協議棧中到底經歷了什么?才變成了一個一個的數據包?

就拿我們向服務器發送一個 HTTP 請求作為例子,我們知道 HTTP 請求中有:

  • 請求行
  • 請求頭
  • 請求體

HTTP 是屬于應用層的協議,而應用層還有很多其他的協議,每個協議所涉及到的數據也都不同,協議棧要怎么去兼容不同協議之間的數據呢?

答案是不做兼容。對于協議棧來說,所有的數據都只不過是一堆二進制序列。

那協議棧收到了這一堆二進制序列之后是不是就直接交給網卡發送了呢?

我都這么問了,那顯然不是了...

其實協議棧在收到數據之后并不會馬上就會就發送出去,而是會先寫入位于內存的 Buffer 中。那為啥不直接發出呢?

其實很簡單,假設你現在正在公交車的起始站,你覺得公交車會來一個人就立馬發車嗎?

顯然不是,它會等一段時間,有更多的乘客上車之后再發車。但是它又不能等太長的時間,不然后續站臺的乘客就會等的很久。

協議棧之所以不立即發出去,其實也是同樣的道理。其實這背后無非基礎兩種考慮:

  1. 數據的長度
  2. 等待的時間

應用層的程序發送過來的數據可能長度都不太一樣,有的可能一個字節一個字節的發, 有的可能一次性就傳入所有的數據。

如果收到數據就發送出去,會導致在網絡中傳輸著很多小包,而這會降低網絡傳輸的效率。

所以,協議棧在收到數據之后會等待一段時間,等數據達到一定量之后,再執行發送操作。

但是,協議棧又不能等的太久是吧?等太久了你讓正在電腦面前操作的用戶情何以堪,這種發送延遲會讓用戶體驗刷刷的往下掉。

但是吧,想做到對這兩者的平衡卻不是一件簡單的事。數據包太短,降低網絡傳輸效率,等待太長時間,又會造成發送延遲。所以協議棧索性就把控制權交給了應用程序。

應用程序可以自己控制到底采取哪種措施,例如我們常用的瀏覽器,因為和用戶實時的在進行交互,用戶對整個頁面的響應速度也相當敏感,所以一般都會采用直接發送數據的方式,即使其數據并沒有達到「一定的量」

這一個「一定的量」到底是啥?

的確,上面都只說一定的量、一定的量,那這個量到底是多少?

要了解這個我們需要知道兩個參數,分別是:

  1. MTU(Maximum Transmission Unit)最大傳輸單元
  2. MSS(Maximum Segment Size)最大分段大小

MTU 其實就代表了上面途中數據包的最大長度,一般來說是 1500 字節。而我們需要知道數據包是由以下部分組成的:

  1. 各種頭部信息
  2. 真實數據

而從 MTU 中減去各種頭部數據的大小,剩下的就是 MSS 了,也就是實際的數據。

知道了數據包的組成和 MTU、MSS 的概念之后,我們就可以繼續接下來的步驟了。某次發送的數據,沒有超過 MSS 還好,就可以直接發送出去了。

那如果超過了 MSS 咋辦?例如我發這篇文章時所發請求的數據長度就可能超過 MSS 。

過長數據包拆分

此時就需要對數據進行拆分,按照 MSS 的長度為單位進行拆分,將拆出來的數據分別裝進不同的數據包中。拆分好之后,就可以發送給目標服務器了。

TCP 會確保通信的服務器能夠收到數據包。傳輸時對每個字節都進行了編號,舉個例子,假設此次傳輸的數據是 1 - 1000 字節,然后服務器回的 ACK 就會是 1001,這就代表沒有丟包。

這些發送過的包都會暫存在 Buffer 中,如果傳輸的過程中出錯,則可以進行重發的補償措施。這也是為什么在數據鏈路層(例如網卡、路由器、集線器)等等都沒有補償機制,它們一旦檢測到錯誤會直接將包丟棄。然后由傳輸層重發就好。

那要是網絡很擁堵,服務器一直沒有返回怎么辦?

在服務器端,我們去和其他第三發進行交互時,是不是都會設定一個超時的時間?如果不設置超時時間那難道一直在這等下去嗎?

TCP 也同理。客戶端在等待服務器響應時,會有一個時間叫 ACK 等待時間,其實也是超時時間。

當網絡發生擁堵時,其實你完全也可以把網絡擁堵理解成路上堵車。此時,ACK 的返回就會變慢。如果返回時間長到了讓客戶端認為服務器沒有收到,就有可能會重發。

并且有可能剛剛重發完,ACK 就到了。雖然服務器端可以通過序號來對包進行判重,不會造成錯誤,但是這種沒有意義的重復包,在本身網絡負擔已經很重的情況下,你還往里懟重復的無用的數據包,這不是扯淡嗎?這明顯不行的。

那怎么避免上面的這個情況呢?答案很簡單,稍微延長一點 ACK等待時間,這樣一來就能一定程度上避免上述的問題。但是用屁股想想應該也知道,這個時間肯定不是越長越好,再長用戶那又該等爆炸了。

除了網絡波動會影響到 ACK 的返回時間,通信的物理距離也是一個影響的因素。說白了就是這玩意兒不可能設置一個固定的時間。所以,實際上,這個等待時間是動態調整的,這次稍微返回慢了點,那我下次就稍微延長一點等待時間。返回 ACK 的速度如果很給力,那么就會相應的減少等待。

上面的概念也有一個大家很熟悉的名字,叫——超時重傳。

我們來設想一個更加極端的情況,假設你們通信的網線被挖斷了,甚至機房起火了,這個時候無論你重發多少次都沒用。那 TCP 不就一直無限循環的把請求發下去了?

當然 TCP 設計時也考慮到了這種情況,其在重傳幾次無效之后,就會強制中斷通信,并拋出錯誤給應用程序。

問題又來了,客戶端在向服務器發送數據包之后,等待 ACK 的過程中,真的就只是等 ACK,其他的什么也不做嗎?

當然不是,這樣極其的浪費資源,降低通信效率。發送完一個數據包之后,不用等待 ACK 的返回,會直接繼續發送下一個包,這就是滑動窗口。

但是這樣會有一個問題,應用程序發送包發送的過于頻繁,導致服務器接收不過來了。

因為剛剛說過,應用程序發送的時候,會將發送過的數據存儲在 buffer 中。而對于接收方也是一樣的,接收方收到消息之后,會將數據存儲在 Buffer 中,然后在 Buffer 中對收到的數據進行重組,還原成最初的應用程序發送的數據。

但是如果發送的數據太快,超過了重組的速度,緩沖區就會被填滿。而緩沖區一旦被填滿,后續的數據就無法再接收了,然后丟包就出現了。

那 TCP 是如何解決這個問題的呢?答案是 流量控制。為了防止傳輸方發送的過快直接造成丟包,繼而觸發上面的超時重傳機制,根據接收方的接受能力,來決定發送方的傳輸速度,這個機制就是流量控制。

該機制作用于接受方。在TCP報文頭部中會用一個16位的字段來表示窗口大小,非常重要的調優參數。這個數字越大,則說明接收方的緩沖區越大,能夠接收更多的數據。接收方會在確認應答的時候,將自己的剩余窗口大小寫入,隨ACK一起發送給發送方。

TCP流量控制

如果發送方接收到的大小為0,那么此時就會停止發送數據。這樣會有一個問題,如果下一個應答(也就是窗口大小不為0)在過程中丟了,那么發送方就會進入死鎖,相互等待。所以發送方會定期的向接收方發送窗口探測的數據段。

好了,關于數據包的發送就介紹到這里。之后有機會再聊聊 TCP 的擁塞控制相關的東西。

 

責任編輯:姜華 來源: SH的全棧筆記
相關推薦

2023-09-06 07:51:19

KubernetesOperator

2017-11-14 16:38:05

智慧新城

2010-05-31 15:34:34

MySQL數據庫

2021-02-18 07:46:07

日志框架

2010-05-27 15:56:56

MySQL數據庫

2015-03-09 17:49:40

SDN

2010-06-30 12:37:04

SNMP服務器

2022-04-10 23:43:11

代碼發送郵件后端

2017-03-28 13:25:14

Linux網絡數據包

2016-11-29 09:23:17

Spark集群部署

2017-04-07 09:30:49

Linux網絡數據包

2020-07-24 09:56:12

React開發數據

2021-05-17 05:07:41

Linux掃描儀Samba共享

2018-12-29 15:09:08

新零售無人超市智慧社區

2009-02-24 09:43:00

IP電話原理

2025-02-26 07:59:47

2017-02-24 08:30:50

網絡設備技術

2023-07-24 07:57:23

C++標準功能

2021-04-12 05:55:29

緩存數據Axios

2021-04-30 10:25:13

微軟Edge瀏覽器
點贊
收藏

51CTO技術棧公眾號

亚洲av综合一区二区| 欧美人与动牲交xxxxbbbb| 中文字幕高清在线免费播放| 91综合视频| 精品久久久久久久一区二区蜜臀| 欧美三级在线观看视频| jizz在线观看中文| 国产成人精品亚洲777人妖| 青青久久av北条麻妃黑人| 小早川怜子一区二区的演员表| 超碰成人免费| 欧美视频一区在线| 人体内射精一区二区三区| 在线播放日本| 99国产精品国产精品久久| 日韩av手机在线观看| 青娱乐免费在线视频| 国产va免费精品观看精品视频 | 一级黄色片在线| 在线观看一区| 美女福利精品视频| 国产极品视频在线观看| 精品三级在线观看视频| 91.麻豆视频| 亚洲人成色77777| 美女日批视频在线观看| 中文字幕中文字幕一区二区 | 人妻无码中文字幕| 六月丁香综合在线视频| 日韩av电影手机在线| 99免费在线观看| 女人色偷偷aa久久天堂| 日日骚久久av| 国产精品久久久久久久av| 免费成人三级| 91精品蜜臀在线一区尤物| 黄色片一级视频| 成人免费网站观看| 夜夜爽夜夜爽精品视频| 成年人视频大全| 日本精品一区二区三区在线播放| 久久九九影视网| 蜜桃麻豆91| 四虎电影院在线观看| 不卡一区二区在线| 国产精品v欧美精品v日韩精品| 国产免费黄色片| 激情欧美一区二区三区在线观看| 国产精品丝袜久久久久久高清 | 美女主播视频一区| 天堂在线观看免费视频| 成人在线视频首页| 波多野结衣久草一区| 国产人妖在线播放| 国产一区在线不卡| 亚洲已满18点击进入在线看片 | 国产亚洲一区二区手机在线观看 | 人妻内射一区二区在线视频| 鲁鲁在线中文| 欧美性猛交xxxx免费看漫画| 国产日产欧美视频| 偷拍视频一区二区三区| 色欧美片视频在线观看| 97公开免费视频| 88xx成人网| 7777精品久久久大香线蕉| 欧美一级视频在线| 国产精品免费精品自在线观看| 欧美一区二区三区四区五区| 亚洲一区二区三区四区精品| 欧美视频二区欧美影视| 亚洲大尺度美女在线| 免费的av网站| 欧美女王vk| 中文字幕精品—区二区| 免费成人深夜蜜桃视频| 亚洲激情中文| 91av视频在线| 日韩黄色一级视频| 久久9热精品视频| 成人蜜桃视频| 欧美高清电影在线| 国产精品狼人久久影院观看方式| 三上悠亚免费在线观看| 麻豆av在线免费观看| 欧美色播在线播放| 亚欧激情乱码久久久久久久久| 国产一区二区高清在线| 日韩av在线不卡| 国产18无套直看片| 午夜亚洲福利| 青草热久免费精品视频| 中文字幕一区二区三区四区视频| 国内一区二区在线| 国产精品久久国产精品| 成人在线免费视频| 亚洲综合久久久| aaa毛片在线观看| 欧美日韩破处视频| 亚洲国产精品va在线看黑人| 国产亚洲精品精品精品| 好看的亚洲午夜视频在线| 国产成人精品一区二区| 精品黑人一区二区三区国语馆| 久久久久国产精品厨房| 黄色录像特级片| av在线日韩| 欧美精品一区二区在线播放| 网站永久看片免费| 男女av一区三区二区色多| 成人写真视频福利网| 日本人妖在线| 亚洲一区二区三区四区五区中文| 亚洲一区二区蜜桃| 极品束缚调教一区二区网站| 精品国内自产拍在线观看| 国产原创视频在线| 成人永久免费视频| 制服丝袜综合日韩欧美| 日本免费久久| 亚洲国产精品久久91精品| 国产一区在线观看免费| 久久亚洲欧洲| 国外成人免费视频| 91小视频xxxx网站在线| 欧美日韩精品是欧美日韩精品| 国产伦精品一区二区免费| 在线中文字幕亚洲| 国产精品嫩草影院一区二区| 色视频在线观看福利| 亚洲国产美女搞黄色| www.污网站| 色婷婷综合网| 国产精品永久免费视频| 国产视频网站在线| 色悠悠久久综合| 真人bbbbbbbbb毛片| 国内自拍一区| av成人综合网| 爆操欧美美女| 日韩一区二区三区四区五区六区| 香蕉成人在线视频| 麻豆91小视频| 色呦呦网站入口| 天堂久久一区| 久久精品国产一区二区电影| 在线观看中文字幕av| 国产日韩欧美不卡在线| 久久精品网站视频| 欧美欧美黄在线二区| 国产精品白嫩美女在线观看| 男人的天堂在线视频| 色婷婷一区二区| 人妻视频一区二区| 日本亚洲三级在线| 亚洲国产一区二区三区在线播 | 亚洲精品影视| 精品无人区一区二区三区| 三级在线观看视频| 日韩精品极品视频免费观看| 999这里只有精品| 久久综合色综合88| 国产视频一区二区视频| 欧美肥老太太性生活| 成人字幕网zmw| 亚洲wwwww| 亚洲成人黄色网址| 日韩免费视频一区二区视频在线观看| 91香蕉视频mp4| 一本久道中文无码字幕av| 精品国产一区二区三区小蝌蚪 | 蜜桃在线一区二区| 天天综合色天天| 特级西西www444人体聚色| 久久av资源站| 亚洲中文字幕无码av永久| 亚洲人成网77777色在线播放| 国产精品福利在线| 国产黄色在线免费观看| 亚洲成人免费在线视频| 天堂中文字幕在线观看| 国产精品乱码一区二三区小蝌蚪| 红桃视频一区二区三区免费| 中文字幕日韩欧美在线| 国产免费黄视频| 亚洲动漫精品| 国产日韩在线看片| 欧美女同一区| 亚洲欧美日韩爽爽影院| 国产又粗又猛又黄又爽无遮挡| 亚洲精品v日韩精品| 黄色污在线观看| 免费视频最近日韩| 久久视频免费在线| 日韩mv欧美mv国产网站| 91精品免费看| 亚洲妇女成熟| 久久97精品久久久久久久不卡| 全色精品综合影院| 91精品啪在线观看国产60岁| 国产成人综合欧美精品久久| 亚洲欧美视频一区| 波多野吉衣中文字幕| 国产一区中文字幕| 日本成人中文字幕在线| 欧美色图麻豆| 色香蕉在线观看| 日韩av三区| 亚洲最大的成人网| 网友自拍亚洲| 国内精品久久久久影院 日本资源 国内精品久久久久伊人av | 99在线精品免费| 国产日韩欧美久久| 国产欧美高清| 99热这里只有精品免费| 色婷婷亚洲mv天堂mv在影片| 老牛影视免费一区二区| 66精品视频在线观看| 国产拍精品一二三| 欧美日韩五码| 欧美伊久线香蕉线新在线| 调教一区二区| www.欧美免费| a中文在线播放| 亚洲欧美综合图区| 四虎在线视频免费观看| 欧美成人官网二区| 国产精品无码久久av| 欧美视频在线不卡| 国产情侣小视频| 欧美色另类天堂2015| 日本va欧美va国产激情| 亚洲一区二区三区中文字幕| 在线看的片片片免费| 国产精品女主播av| 欧美福利第一页| 国产亚洲综合av| 日韩乱码人妻无码中文字幕久久 | 国产精品无码无卡无需播放器| 95精品视频在线| 国产精品久久AV无码| 成人性视频网站| 欧美在线免费视屏| 国产主播av在线| 中文字幕精品—区二区四季| av黄色免费网站| 国产婷婷色一区二区三区在线| 三级网站在线免费观看| 91免费在线视频观看| 欧美做受喷浆在线观看| 99精品视频在线免费观看| 国产精品成人99一区无码| jlzzjlzz亚洲日本少妇| 极品白嫩丰满美女无套| 91麻豆国产自产在线观看| 久久久久久久久免费看无码| 99国产一区二区三精品乱码| 丰满少妇一区二区三区| 久久美女艺术照精彩视频福利播放| 国产精品300页| 久久中文字幕电影| 免费看裸体网站| 国产精品夫妻自拍| 极品久久久久久| 亚洲午夜视频在线观看| 亚洲男人的天堂在线视频| 一本一道波多野结衣一区二区| 波多野结衣啪啪| 7777精品伊人久久久大香线蕉超级流畅 | 久久国产精品第一页| 欧美一级小视频| 成人午夜激情片| 欧洲女同同性吃奶| 中文一区一区三区高中清不卡| 四虎精品免费视频| 精品女同一区二区三区在线播放| 精品视频一二三区| 日韩一区二区三区免费看 | 男人女人黄一级| 激情丁香综合五月| 欧美做受高潮中文字幕| 久久免费美女视频| 国产性xxxx| 欧美性猛交99久久久久99按摩| 亚洲天堂aaa| 亚洲成人久久久| 天堂аⅴ在线地址8| 欧美黑人性生活视频| 制服诱惑亚洲| 国产69精品久久久久9999apgf| 国产一区二区电影在线观看| 视色,视色影院,视色影库,视色网| 亚洲乱亚洲高清| www.久久91| av不卡免费电影| 日韩视频中文字幕在线观看| 亚洲444eee在线观看| 中文字幕 视频一区| 精品国产网站在线观看| 日本不卡不卡| 奇米4444一区二区三区| 国产精品成人**免费视频| 欧美另类一区| 激情久久中文字幕| 中文字幕国产免费| 久久久久9999亚洲精品| 国产性生活网站| 欧美老女人第四色| 蝌蚪视频在线播放| 欧美精品福利视频| 国产精品久一| 亚洲欧洲日本国产| 美女日韩在线中文字幕| 精品国产乱码久久久久夜深人妻| 国产精品欧美一区喷水| 亚洲欧美日韩激情| 日韩av在线精品| 成年人视频免费在线播放| 成人精品一区二区三区电影黑人| 九九亚洲精品| 日韩五码在线观看| 国产麻豆精品在线观看| 992在线观看| 欧美性极品少妇| 国产在线日本| 欧美最近摘花xxxx摘花| 国产亚洲精品美女久久| 久久福利一区二区| 久久 天天综合| 老司机精品免费视频| 色94色欧美sute亚洲线路二| 外国精品视频在线观看 | 日韩中文在线中文网在线观看| 欧美电影h版| 另类小说综合网| 免费视频一区| 亚洲激情视频小说| 色婷婷亚洲综合| 国产69久久| 国产精品久久久久久婷婷天堂| 国产欧美日韩影院| 免费在线观看的毛片| 久久久久久9999| 青青国产在线视频| 在线日韩中文字幕| av成人亚洲| 中文字幕乱码一区二区三区| 麻豆91在线播放免费| 搜索黄色一级片| 欧美一区二区精品久久911| 国产一二区在线观看| 91精品婷婷国产综合久久蝌蚪| 中文字幕一区二区三三| 秋霞午夜鲁丝一区二区| 亚洲视频在线观看三级| 国产免费无遮挡| 欧美黑人狂野猛交老妇| 日韩黄色网络| 亚欧在线免费观看| 成人欧美一区二区三区黑人麻豆| www.97av| 国外成人在线直播| 美女久久久久| 91热这里只有精品| 亚洲视频在线一区二区| 男人天堂av网| 国产精品7m视频| 亚洲精品中文字幕乱码| 中国特级黄色大片| 色综合久久久久久久久| 9i精品一二三区| 91免费版网站在线观看| 中日韩男男gay无套| 一级片视频免费看| 欧美日韩免费视频| 污污网站在线观看| 麻豆久久久9性大片| 麻豆精品一二三| 久久久久久久9999| 亚洲精品一区av在线播放| 福利一区在线| 青草青青在线视频| 中文字幕欧美国产| 亚洲经典一区二区三区| 日本老师69xxx| 中文精品久久| 久久国产精品无码一级毛片| 欧美日韩国产一级片| 蜜桃麻豆av在线| 在线码字幕一区| 91蝌蚪国产九色| aaa一区二区| 人人澡人人澡人人看欧美| 天天射综合网视频| 久久久久亚洲av无码专区桃色| 91精品国产全国免费观看| 忘忧草在线日韩www影院| 综合国产精品久久久| 久久亚洲春色中文字幕久久久| 国产富婆一级全黄大片|