精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

久草中文在线| 国产精品永久久久久久久久久| 香蕉久久夜色精品国产使用方法 | 欧美一区二区三区电影在线观看 | 午夜影院在线观看国产主播| 国产视频一区二区在线观看| 成人午夜两性视频| 波多野结衣国产| 日韩精品dvd| 欧美成人乱码一区二区三区| 国产成人精品无码播放| 18videosex性欧美麻豆| 久久综合九色综合欧美就去吻| 国产精品视频一区二区三区四| jizz亚洲少妇| 岳的好大精品一区二区三区| 69p69国产精品| 日批视频在线免费看| 成人午夜在线影视| 久久久久久久免费视频了| 96国产粉嫩美女| 天天爽夜夜爽人人爽| 欧美黄色一区| 中文字幕在线国产精品| 朝桐光av一区二区三区| 国产日韩在线观看视频 | 国产免费福利视频| 丝袜美腿亚洲色图| 91国内精品久久| 少妇被躁爽到高潮无码文| 亚洲肉体裸体xxxx137| 欧美变态tickling挠脚心| 蜜臀av免费观看| 日韩欧美看国产| 午夜精品久久久久久| 裸体大乳女做爰69| 尤物在线视频| 国产欧美日韩在线| 日本一区二区三不卡| 香蕉视频免费看| 国产99久久久精品| 91在线视频成人| 一级特黄aaa大片在线观看| 久久久久久9| 97在线观看免费高清| 久久精品视频久久| 欧美日韩专区| 精品自在线视频| 侵犯稚嫩小箩莉h文系列小说| 日韩免费高清| 色久欧美在线视频观看| 黄色av片三级三级三级免费看| 伊人成综合网yiren22| 日韩av在线免费观看一区| 亚洲天堂2024| 欧美日韩一本| 精品无码久久久久久国产| 国产美女视频免费观看下载软件| 91九色鹿精品国产综合久久香蕉| 日韩视频永久免费| 亚洲午夜久久久久久久久| 国语一区二区三区| 亚洲国产精品久久久久久| 99久久免费看精品国产一区| 免费看久久久| 亚洲男人的天堂在线播放| 日韩人妻无码精品综合区| 成人影院天天5g天天爽无毒影院| 在线观看国产精品91| 午夜激情福利电影| 国产精品mv在线观看| 久久久久久国产精品| 91午夜视频在线观看| 久久资源在线| 亚洲va男人天堂| 肥臀熟女一区二区三区| 99麻豆久久久国产精品免费优播| 欧美日韩天天操| 幼a在线观看| 亚洲一线二线三线久久久| 国产精品久久..4399| 向日葵视频成人app网址| 欧美日韩二区三区| 免费黄色a级片| 九九热爱视频精品视频| 日韩在线观看av| 国产一级特黄毛片| 老司机精品导航| 成人午夜在线观看| 色视频在线观看| 国产精品卡一卡二| 成人毛片一区二区| 日本午夜免费一区二区| 精品国产乱子伦一区| 中文字字幕码一二三区| 亚洲国产精品成人| 456国产精品| 亚洲永久精品视频| bt欧美亚洲午夜电影天堂| 日韩精品成人一区二区在线观看| 菠萝菠萝蜜在线视频免费观看| 亚洲va欧美va人人爽午夜| 麻豆三级在线观看| 噜噜噜天天躁狠狠躁夜夜精品 | 久久久久久久久久久久久久一区 | 亚洲黄色在线播放| 久久久久久久久久久电影| 艳母动漫在线观看| 欧美日韩五码| 亚洲国产欧美自拍| 欧美三级黄色大片| 日韩激情中文字幕| 国产伦精品一区二区三区照片| 99riav在线| 精品国产福利在线| 两女双腿交缠激烈磨豆腐| 精品产国自在拍| 亚洲91av视频| 亚洲h视频在线观看| 国产精品国产馆在线真实露脸| 国产二区视频在线播放| 4438全国亚洲精品观看视频| 中文欧美日本在线资源| 可以免费在线观看的av| 国产高清不卡一区| 制服丝袜综合日韩欧美| 色香欲www7777综合网| 亚洲精品大尺度| 青娱乐国产在线视频| 久久福利视频一区二区| 视频一区二区三| 日韩国产激情| 亚洲欧美一区二区三区情侣bbw| 国产一级一片免费播放| 国产一区二区电影| 亚洲自拍三区| 国产毛片精品久久| 深夜精品寂寞黄网站在线观看| av大全在线观看| 91在线一区二区| 国产精品333| 黄色网一区二区| 久久久久久久久久久国产| 精品国产一级片| 一区二区在线电影| 99国产精品免费视频| 一本一道久久a久久精品蜜桃 | 中文一区二区完整视频在线观看| 97超碰青青草| 校花撩起jk露出白色内裤国产精品| 国内伊人久久久久久网站视频| 高清乱码毛片入口| 亚洲大片在线观看| 国产一级二级视频| 亚洲二区视频| 精品国产电影| 桃花岛成人影院| 在线亚洲欧美视频| 中文字幕免费在线看| 《视频一区视频二区| www.污网站| 欧美日韩a区| 国产一区二区三区黄| 在线人成日本视频| 国产午夜一区二区| 亚洲怡红院av| 亚洲精品高清在线观看| 久久久高清视频| 免费国产自线拍一欧美视频| 日韩福利一区二区三区| 日韩午夜视频在线| 欧美激情在线一区| 蜜桃免费在线| 欧美久久一二三四区| 在线观看黄网址| 成人性生交大合| 成人在线观看a| 久久久久久久久国产一区| 国产精品久久久久久久天堂第1集 国产精品久久久久久久免费大片 国产精品久久久久久久久婷婷 | 黑人性生活视频| 在线综合亚洲| 亚洲精品中字| av成人app永久免费| 日本精品久久久久久久| 久久黄色美女电影| 精品成人私密视频| 91麻豆精品在线| 一区二区三区在线观看视频 | 精品乱子伦一区二区| 天涯成人国产亚洲精品一区av| 一级片视频免费看| 国产成人自拍在线| 四虎永久在线精品无码视频| 五月天激情综合网| 国产在线欧美日韩| 欧美一级做一级爱a做片性| 久久久亚洲精选| 最新电影电视剧在线观看免费观看 | 欧美色图色综合| 99久久婷婷| 久久亚洲免费| 奇米一区二区| 国产精品自拍网| 345成人影院| 欧美日韩成人在线播放| 成年人视频在线看| 亚洲黄色av女优在线观看| 在线免费看91| 欧美日韩一区二区在线 | 亚洲专区欧美专区| 91视频成人免费| 精品久久久久久久久久久下田| 成人国产一区二区| 四虎精品永久免费| 国产成人avxxxxx在线看| a级片在线免费| 久久不射热爱视频精品| 午夜激情视频在线观看| 亚洲精品一区在线观看香蕉| 亚洲精品一区二区三区不卡| 欧美日韩视频在线一区二区| 亚洲熟女综合色一区二区三区| 亚洲影视在线播放| 91久久国产综合| 国产精品盗摄一区二区三区| 久久亚洲无码视频| 91免费版在线| 自拍视频一区二区| 国产成人av电影在线| 五月天国产视频| 蜜桃精品视频在线观看| 欧美性猛交xxx乱久交| 国产精品入口66mio| 久久精品无码中文字幕| 综合一区av| 久久久无码中文字幕久...| 天天射成人网| 亚洲最大免费| 91成人超碰| 一道本在线观看视频| 99久久影视| 四虎免费在线观看视频| 亚洲乱码电影| mm131午夜| 自产国语精品视频| 91精品一区二区三区四区| 性欧美69xoxoxoxo| 在线视频一二三区| 欧美不卡在线| 青青在线免费观看| 99视频+国产日韩欧美| 国产日产欧美视频| 模特精品在线| 男人搞女人网站| 九色综合国产一区二区三区| 中文字幕成人免费视频| 国产一区二区三区四区在线观看| 999热精品视频| 成熟亚洲日本毛茸茸凸凹| 成人区人妻精品一区二 | 日本一级特级毛片视频| 亚洲精品视频在线| 日韩免费一二三区| 狠狠躁夜夜躁人人爽天天天天97 | 久久成人免费日本黄色| 欧美性猛交xxxx乱大交91| 粉嫩av一区二区三区在线播放 | 一区二区三区在线视频观看58| a级片在线观看免费| 亚洲国产va精品久久久不卡综合| 国产精品视频久久久久久久| 色久综合一二码| 一级片在线观看视频| 精品少妇一区二区三区免费观看| 天天舔天天干天天操| 怡红院精品视频| xvideos国产在线视频| 97婷婷涩涩精品一区| 欧美xnxx| 不卡的av一区| 国产成人黄色| 日韩视频一二三| 久久狠狠婷婷| 色男人天堂av| 久久日韩精品一区二区五区| 992在线观看| 亚洲成a人v欧美综合天堂| 最近中文字幕在线观看视频| 日韩一区二区在线看片| 欧美一区二区三区少妇| 久久躁狠狠躁夜夜爽| 亚洲精品88| 99久久99久久| 大胆日韩av| 美女日批免费视频| 精品综合久久久久久8888| 国产精品久久不卡| 亚洲欧美色一区| 亚洲av无码不卡| 精品久久免费看| 欧美精品hd| 青青久久av北条麻妃海外网| 欧美成人一级| 日韩一区免费观看| 亚洲免费播放| 潘金莲一级淫片aaaaa| 亚洲国产精品精华液2区45| 亚洲一区欧美在线| 日韩一级高清毛片| av大片在线观看| 日本欧美一级片| 六月丁香久久丫| 欧美激情亚洲天堂| 极品少妇xxxx精品少妇偷拍| 91网站免费视频| 五月天激情小说综合| 午夜精品久久久久久久爽 | 精品国产乱码久久久久久牛牛 | 国产成人美女视频| 久久久国产精华| 日韩精品1区2区| 亚洲成人精品视频| 亚洲综合图区| 91色p视频在线| 日韩精品一卡| 爱情岛论坛成人| 久久丝袜美腿综合| 日韩色图在线观看| 日韩av在线看| 涩涩在线视频| 国产在线精品日韩| 亚洲天堂黄色| 伦理片一区二区| 亚洲国产日韩在线一区模特| www.久久综合| 欧美老女人在线视频| 久久久久久亚洲精品美女| 在线综合视频网站| 久久成人免费日本黄色| 黑人狂躁日本娇小| 欧美猛男男办公室激情| 网友自拍视频在线| 国产精品视频26uuu| av一区二区高清| 天天爱天天操天天干| 亚洲国产高清在线| 一级特黄aaa| 久久亚洲精品毛片| 日韩精品亚洲专区在线观看| www.-级毛片线天内射视视| 国产一区二区三区免费播放| 日本在线一级片| 日韩精品一区二区三区视频在线观看 | 久久不见久久见免费视频7| 日日碰狠狠躁久久躁婷婷| 国产视频一区二区三区在线观看| 国产偷人爽久久久久久老妇app| 丝袜美腿精品国产二区| 天堂久久一区| av在线免费观看国产| 暴力调教一区二区三区| 亚洲伊人成人网| 中文字幕日韩精品在线观看| 国产精品亚洲四区在线观看| 久久人妻无码一区二区| www.亚洲精品| 天天射天天干天天| www亚洲精品| 澳门久久精品| 欧美成人精品欧美一级乱| 国产精品久久久一区麻豆最新章节| 国产精品视频在线观看免费| 久久久免费精品| 精品国产乱码久久久| www.污网站| 欧美日韩国产一区在线| 久久精品国产亚洲a∨麻豆| 国产欧美日韩中文| 一区久久精品| 免费看的黄色网| 日韩美女视频一区二区在线观看| 国产免费拔擦拔擦8x高清在线人 | 天堂中文8资源在线8| av在线亚洲男人的天堂| 先锋影音久久| 国产美女福利视频| 亚洲国产精品久久久久久| 欧美久久久网站| 欧美日韩一道本| 亚洲视频小说图片| 免费在线观看一级毛片| 92看片淫黄大片看国产片| 午夜一区不卡| 国产精品白嫩白嫩大学美女| 亚洲欧洲av一区二区| 日韩欧美激情电影| 嫩草影院国产精品| 欧美激情一区三区| 国产人妻精品一区二区三| 日韩暖暖在线视频|