成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

每個開發人員都應該掌握的TCP知識

網絡 網絡管理
通過TCP(例如HTTP)發送數據時,常見的誤解是帶寬與延遲無關。 但是,對于TCP,帶寬是延遲和時間的函數。 讓我們看看如何。

為什么需要將服務器在地理位置上靠近用戶? 原因之一是獲得較低的延遲。 當您發送應盡快傳送的短數據突發時,這很有意義。 但是,大文件(例如視頻)呢? 接收第一個字節肯定會帶來延遲損失,但是在那之后難道不是一帆風順嗎?

通過TCP(例如HTTP)發送數據時,常見的誤解是帶寬與延遲無關。 但是,對于TCP,帶寬是延遲和時間的函數。 讓我們看看如何。

[[346048]]

握手

在客戶端可以開始向服務器發送數據之前,它需要為TCP執行一次握手,為TLS執行一次握手。

TCP使用三向握手來創建新連接。

  • 發送方選擇一個隨機生成的序列號" x",并將SYN數據包發送給接收方。
  • 接收器遞增" x",選擇一個隨機生成的序列號" y",然后發回SYN / ACK數據包。
  • 發送方增加序列號,并用ACK數據包和應用程序數據的第一個字節進行回復。

TCP使用序列號來確保按順序傳送數據且沒有空洞。

握手會引入完整的往返,這取決于基礎網絡的延遲。 TLS握手也最多需要兩次往返。 在TLS連接打開之前,無法發送任何應用程序數據,這意味著在此之前您的帶寬出于所有目的和目的均為零。 往返時間越短,建立連接的速度就越快。

流量控制

流控制是一種退避機制,旨在防止發送方壓倒接收方。

接收器將等待應用程序處理的傳入TCP數據包存儲到接收緩沖區中。

每當接收方確認數據包時,接收方還將其大小發送回發送方。 如果發件人遵守協議,則應避免發送更多可能容納在收件人緩沖區中的數據。

此機制與應用程序級別的速率限制不太相似。 但是,TCP不是在API密鑰或IP地址上進行速率限制,而是在連接級別上進行速率限制。

發送方和接收方之間的往返時間(RTT)越短,發送方將其出站帶寬調整到接收方容量的速度就越快。

擁塞控制

TCP不僅可以防止接收器不堪重負,還可以防止淹沒底層網絡。

發送者如何找出底層網絡的可用帶寬是多少? 估計它的唯一方法是根據經驗進行測量。

這個想法是發送者維護一個所謂的"擁塞窗口"。 該窗口表示無需等待對方的確認就可以發送的未完成數據包的總數。 接收器窗口的大小限制了擁塞窗口的最大大小。 擁塞窗口越小,在任何給定時間可以傳輸的字節越少,并且占用的帶寬越少。

建立新連接后,擁塞窗口的大小將設置為系統默認值。 然后,對于每個確認的數據包,該窗口的大小都會成倍增加。 這意味著建立連接后,我們無法立即使用網絡的全部容量。 同樣,往返時間越短,發件人就可以越快地開始利用基礎網絡的帶寬。

如果丟包怎么辦? 當發件人通過超時檢測到錯過的確認時,就會啟動一種稱為"避免擁塞"的機制,從而減小擁塞窗口的大小。 從那時起,時間將窗口大小增加了一定數量,而超時又將窗口大小減少了一些。

如前所述,擁塞窗口的大小定義了無需等待確認即可發送的最大位數。 發件人需要等待完整的往返行程才能獲得確認。 因此,通過將擁塞窗口的大小除以往返時間,可以得到最大的理論帶寬:

這個簡單的方程式表明帶寬是等待時間的函數。 TCP會盡力優化窗口大小,因為它無法解決往返時間。 但是,這并不總是能產生最佳配置。

總之,擁塞控制是一種自適應機制,用于推斷網絡的基礎帶寬和擁塞。 類似的模式也可以應用于應用程序級別。 想一想當您在Netflix上觀看電影時會發生什么。 開始模糊; 然后,它會穩定到合理的水平,直到出現打ic為止,然后質量再次變差。 應用于視頻流的這種機制稱為自適應比特率流。

記住這一點

如果您使用的是HTTP,那么您將受基礎協議的約束。 如果您不知道香腸的制作方法,就無法獲得最佳性能。

突發請求受到冷啟動懲罰。 可能需要多次往返,才能發送帶有TCP和TLS握手的第一個字節。 而且由于擁塞控制的工作方式,往返時間越短,底層網絡的帶寬利用就越好。

關于此主題的所有書籍都已經寫好了,您可以做很多事情來壓縮每一盎司的帶寬。 但是,如果您必須記住關于TCP的一件事,那就這樣:

您發送數據的速度不能超過光速,但是您可以做的是使服務器離客戶端更近,并重新使用連接以避免冷啟動的代價。

 

責任編輯:趙寧寧 來源: 今日頭條
相關推薦

2013-01-28 10:25:46

開發人員設計技巧

2024-01-24 08:00:00

2023-03-08 15:13:32

Git工具開發

2023-07-11 16:45:32

VS Code開發技巧

2024-06-04 14:31:16

2022-09-08 08:07:21

編程語言程序員

2024-06-03 10:35:41

2024-10-21 13:15:03

2024-05-28 11:38:32

2020-09-22 12:19:25

JavaGithub倉庫

2022-09-07 07:06:11

編程語言開發人員

2021-02-05 12:58:18

開發人員CICD

2020-01-27 16:28:57

開發命令遠程服務器

2022-10-13 15:19:33

JavaScript開發編程語言

2023-02-08 08:32:58

2022-04-27 08:01:44

JavaThreadRunnable

2016-02-02 09:43:26

開發人員架構師

2022-08-28 16:10:37

軟件開發AI工具

2019-11-25 14:09:34

控制臺命令開發

2022-02-21 00:11:24

Java工具開發
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品99久久久久久动医院 | 久久久久久影院 | 亚洲一区二区三区四区五区午夜 | 天天躁日日躁aaaa视频 | 综合国产| 国产精品揄拍一区二区 | 天天操一操 | 日韩a在线观看 | 国产色婷婷精品综合在线手机播放 | 欧美激情综合五月色丁香小说 | 精品亚洲一区二区三区 | 成人精品一区二区三区中文字幕 | m豆传媒在线链接观看 | 午夜成人在线视频 | 亚洲国产精品久久人人爱 | 中文字幕免费视频 | 色天堂视频 | 激情在线视频 | 华人黄网站大全 | 日韩一级电影免费观看 | 性大毛片视频 | a级毛片毛片免费观看久潮喷 | 亚洲免费精品 | 久在线视频播放免费视频 | 日韩国产欧美在线观看 | 亚洲欧美激情精品一区二区 | 高清成人免费视频 | 久久中文字幕视频 | 亚洲美女视频 | 欧美黄色绿像 | 日韩靠逼| 精品视频久久久久久 | 久热久草| av网站免费在线观看 | 欧美日一区二区 | 97国产精品视频 | 国产黑丝av | 国产精品久久久亚洲 | 亚洲国产片 | 激情网站在线观看 | 国产精品精品 |