重學TCP協議(11)TFO(Tcp Fast Open)

1. TFO

為了改善web應用相應時延,google發布了通過修改TCP協議利用三次握手時進行數據交換的TFO(TCP fast open,RFC 7413)。

TFO允許在TCP握手期間發送和接收初始SYN分組中的數據。如果客戶端和服務器都支持TFO功能,則可以減少建立到同一服務器的多個TCP連接的延遲。這是通過在初始TCP握手之后在客戶端上存儲TFO cookie來實現的。如果客戶端稍后重新連接,則此TFO cookie將發送到服務器,從而允許連續的TCP握手跳過一個往返延遲,從而減少延遲。

2. TFO原理

image.png

第一次連接:

  1. 客戶端發送SYN數據包,帶有Fast open選項并且里面的cookie值是空的
  2. 客戶端收到SYN,以后生成Cookie,并且放進ACK+SYN包的fast Open選項里面,發回給客戶端
  3. 客戶端收到cookie以后就存起來了、

第一次連接斷開了,開始第二次連接了:

  1. 客戶端發ACK給服務器的時候,把剛剛緩存的cookie也帶上,并且把數據也帶上了

  2. 服務器校驗收到的cookie合法性。如果不合法的話,就把當前的包丟掉,走正常的三次握手。如果合法的話,服務器就給客服端發ACK+SYN并且帶上數據包

  3. 客戶端發ACK確認給服務器

3. TFO的好處

以兩次建立連接和發送請求為例
image.png

第二次請求的時候,TFO可以將請求報文和響應報文,放在前面兩次握手的過程中,因此第二次請求中,可以在一個RTT內就能拿到響應數據了

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/391075.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/391075.shtml
英文地址,請注明出處:http://en.pswp.cn/news/391075.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[網絡安全] 遠程登錄

遠程登錄方式: 1.圖像化遠程登錄 做法: 運行"窗口"輸入 "mstsc " 輸入ip地址 注意: 被遠程計算機,必須打開遠程登錄服務: 信息面板–系統–允許遠程訪問。被遠程計算機,必須存在擁有遠程桌面權限的用戶。 2.命令行遠程登錄 teln…

外星人圖像和外星人太空船_衛星圖像:來自太空的見解

外星人圖像和外星人太空船By Christophe Restif & Avi Hoffman, Senior Software Engineers, Crisis Response危機應對高級軟件工程師Christophe Restif和Avi Hoffman Editor’s note: In 2019, we piloted a new feature in Search SOS Alerts for major California wild…

chrome恐龍游戲_如何玩沒有互聯網的Google Chrome恐龍游戲-在線和離線

chrome恐龍游戲Several years ago, Google added a fun little Easter egg to Chrome: if your internet went down and you tried to visit a web page, youd see the message "Unable to connect to the Internet" or "No internet" with a little pixi…

Hotpatch潛在的安全風險

屎蛋 2016/06/22 10:11author:[email protected]0x00 “Hotpatch”簡介IOS App的開發者們經常會出現這類問題:當一個新版本上線后發現存在一個嚴重的bug,有可能因為一個邏輯問題導致支付接口存在被薅羊毛的風險,這個時候能做的只能是趕快修復…

spring中@Inject和@Autowired的區別?分別在什么條件下使用呢?

問題:spring中Inject和Autowired的區別?分別在什么條件下使用呢? 我在瀏覽SpringSource上的一些博客,在其他一個博客中,那個作者用了Inject,但是我覺得他用Autowired也行 下面是一部分代碼: …

Objective-C語言的動態性

Objective-C具有相當多的動態特性,基本的,也是經常被提到和用到的有動態類型(Dynamic typing),動態綁定(Dynamic binding)和動態加載(Dynamic loading) 一、編譯時和運行…

內存泄漏和內存溢出的區別

原文地址https://www.zhihu.com/question/40560123 簡單來說,操作系統就像資源分配人員,你要使用內存的時候分給你,你用完了還給它。如果你使用了沒有分配給你的內存就是內存溢出,如果你用完了沒有還就是內存泄漏。會引起的問題&a…

怎么注銷筆記本icloud_如何在筆記本電腦或臺式機的Web瀏覽器中在線查看Apple iCloud照片

怎么注銷筆記本icloudPicture this: you just returned from a beautiful vacation and want to show all those gorgeous photos to your family. But your phone just died. And since youre at a family dinner your laptop is nowhere to be found.想象一下:您剛…

棒棒糖 宏_棒棒糖圖表

棒棒糖 宏AKA: lollipop plot又名:棒棒糖情節 WHY: a lollipop chart (LC) is a handy variation of a bar chart where the bar is replaced with a line and a dot at the end. Just like bar graphs, lollipop plots are used to make comparisons between diff…

ubuntu上如何安裝tomcat

1. 在官網下載linux里面的tomcat 2. 放到DownLoads下面--把tomcat的壓縮包放到DownLoads3. sudo mkdir /usr/local/tomcat/ -在usr/local/路徑下新建一個tomcat的文件夾4 sudo tar zxvf tomcat。。。。tar.gz -C /usr/local/tomcat/---把解壓后的tomcat放到usr/local/下的tomca…

leetcode 1734. 解碼異或后的排列(位運算)

給你一個整數數組 perm ,它是前 n 個正整數的排列,且 n 是個 奇數 。 它被加密成另一個長度為 n - 1 的整數數組 encoded ,滿足 encoded[i] perm[i] XOR perm[i 1] 。比方說,如果 perm [1,3,2] ,那么 encoded [2,…

ZooKeeper3.4.5-最基本API開發

2019獨角獸企業重金招聘Python工程師標準>>> package cn.itcast.bigdata.zk;import java.io.IOException; import java.util.List;import org.apache.zookeeper.CreateMode; import org.apache.zookeeper.KeeperException; import org.apache.zookeeper.WatchedEven…

字符串轉換整數python_將Python字符串轉換為Int:如何在Python中將字符串轉換為整數

字符串轉換整數pythonUnlike many other programming languages out there, Python does not implicitly typecast integers (or floats) to strings when you concatenate them to strings.與現有的許多其他編程語言不同,Python在將整數連接到字符串時不會隱式地將…

理解Java里面的必檢異常和非必檢異常

問題:理解Java里面的必檢異常和非必檢異常 Joshua Bloch在"Effective Java"里面說過 在可恢復的條件下和編程錯誤導致的運行時錯誤時,使用必檢異常(第二版的第52頁) 讓我們來看一下我對這個的正確理解吧 下面是我對…

使用vim打開文件的16進制形式,編輯和全文替換

1、先用vim打開文件的二進制形式,如果不以二進制可能會產生轉換錯誤。 vim -b file-to-open.dat 2、用xxd把文件轉換成十六進制格式 :%!xxd 現在就可以對待普通文本一樣查看和編輯二進制文件了。 3、vim 單文件替換方法 :%s/old/new/gc 全文執行替換,詢問是…

nlp自然語言處理_不要被NLP Research淹沒

nlp自然語言處理自然語言處理 (Natural Language Processing) 到底是怎么回事? (What is going on?) NLP is the new Computer VisionNLP是新的計算機視覺 With enormous amount go textual datasets available; giants like Google, Microsoft, Facebook etc have…

opencv 隨筆

裝環境好累,python3.6,opencv3.4 好不容易裝好了,結果 addweight的時候總是報錯 The operation is neither array op array (where arrays have the same size and the same number of channels), nor array op scalar, nor scalar op array …

js打開飛行模式_什么是飛行模式? 它有什么作用?什么時候應該打開它?

js打開飛行模式If youve flown on an airplane in the last decade and you have a smart phone, youve likely had to put that phone in airplane mode before the plane takes off.如果您在過去的十年中乘坐過飛機,并且擁有一部智能手機,那么您可能必…

在Java 里面怎么比較字符串

問題:在Java 里面怎么比較字符串 到目前為止,我使用 操作符去比較字符串在我的程序里面。然而,卻產生了一個bug,將這個改為了.equals()以后,就把bug修復了 是不是太辣雞了?它什么時候應該被使用或者說是不…

中小型研發團隊架構實踐三要點(轉自原攜程架構師張輝清)

如果你正好處在中小型研發團隊…… 中小型研發團隊很多,而社區在中小型研發團隊架構實踐方面的探討卻很少。中小型研發團隊特別是 50 至 200 人的研發團隊,在早期的業務探索階段,更多關注業務邏輯,快速迭代以驗證商業模式&#xf…