Http之鏈結管理 第一課

2021-06-23 07:10:10 字數 2294 閱讀 5774

主要介紹tcp鏈結,tcp效能考慮,tcp的三次握手。

http鏈結實際上就是tcp鏈結及其使用規則。要弄懂http,必須弄懂tcp。

1.tcp/ip的七層架構

我們先複習一下tcp/ip的七層架構。

2.tcp的三次握手

tcp(transmission control protocol) 傳輸控制協議

tcp是主機對主機層的傳輸控制協議,提供可靠的連線服務,採用三次握手確認建立乙個連線:

位碼即tcp標誌位,有6種標示:syn(synchronous建立聯機) ack(acknowledgement 確認) psh(push傳送) fin(finish結束) rst(reset重置) urg(urgent緊急)

sequence number(順序號碼) acknowledge number(確認號碼)

第一次握手:主機a傳送位碼為syn=1,隨機產生seq number=1234567的資料報到伺服器,主機b由syn=1知道,a要求建立聯機;

第二次握手:主機b收到請求後要確認聯機資訊,向a傳送ack number=(主機a的seq+1),syn=1,ack=1,隨機產生seq=7654321的包

第三次握手:主機a收到後檢查ack number是否正確,即第一次傳送的seq number+1,以及位碼ack是否為1,若正確,主機a會再傳送ack number=(主機b的seq+1),ack=1,主機b收到後確認seq值與ack=1則連線建立成功。

完成三次握手,主機a與主機b開始傳送資料。

3.tcp效能考慮

http事務延遲

http事務的時延有幾個原因。

1.uri轉成ip,http客戶端都有乙個小的dns快取。

2.每條鏈結會有鏈結建立的時延。

3.請求處理

3.回送http相應

tcp的相關延遲

1.tcp鏈結建立握手

2.tcp慢啟動擁塞

3.資料聚集的nagle演算法

4.用於攜帶確認的tcp延遲確認演算法

5.time_wait時延和埠耗盡

1.tcp鏈結建立握手

但你花費這些時間建立鏈結,傳輸資料少,不靠譜。小的http事務會花費50%的時間進行tcp鏈結,http會有重用現存鏈結,減少tcp建立鏈結造成的影響。也就是持久鏈結關鍵字keep-alive。

兩種:http/1.0+ "keep-alive"    已經不再使用。伺服器不一定同意keep-alive會話。

keep-alive:max=5,timeout=120 最多為5個事務服務,保持鏈結空閒120秒。

keep-alive鏈結的限制和規則

1.要有content-length

2.不應該與無法確定是否支援connection首部的呆梨伺服器建立keep-alive鏈結。

伺服器支援會回送乙個connection:keep-alive 如:

盲中繼,就是**不會處理同一條鏈結的其他請求,建立不了長鏈結。

作為**是不能**connection首部的。

http/1.1 persistent鏈結。

2.tcp

慢啟動擁塞

防止網際網路得突然過載,每成功接受到乙個分組,傳送端就有路傳送另外兩個分組得許可權。

3.資料聚集的nagle演算法

nagle演算法的基本定義是任意時刻,最多只能有乙個未被確認的小段。 所謂「小段」,指的是小於mss尺寸的資料塊,所謂「未被確認」,是指乙個資料塊傳送出去後,沒有收到對方傳送的ack確認該資料已收到。

nagle演算法的規則(可參考tcp_output.c檔案裡tcp_nagle_check函式注釋):

(1)如果包長度達到mss,則允許傳送;

(2)如果該包含有fin,則允許傳送;

(3)設定了tcp_nodelay選項,則允許傳送;

(4)未設定tcp_cork選項時,若所有發出去的小資料報(包長度小於mss)均被確認,則允許傳送;

(5)上述條件都未滿足,但發生了超時(一般為200ms),則立即傳送。

4time_wait時延和埠耗盡

當某個tcp斷電關閉tcp鏈結時,會在記憶體中維護乙個小的控制快,用來記錄最近所關閉鏈結的ip位址和埠號。快取小於兩分鐘。

第一課《專案組合管理》

專案組合管理 課後感想 從事軟體專案管理已經2年多了,我也深深喜歡上這個極具挑戰性的工作,雖然有過挫折,也有過失敗,但是總的來說收穫還是頗豐的。一直以來,靠著領導的指點和自己經驗進行專案管理工作。一些中小專案,無論是時間,成本,質量,還是風險管理,流程控制都很順利,但面對大型複雜專案就需要一套完整專...

開學第一課

因為是開學第一課,而且這是我的第一篇個人部落格,更何況還是技術部落格,所以我會認真對待,不過畢竟第一次,所以難免各方面會有不足,所以有任何的意見或建議都可以提出來以供本人提高。下面廢話少說,進入正題。使用quartus,新建乙個專案,建立乙個bdf檔案,雙擊bdf空白處,新增元件符號。找到 7413...

鋼琴第一課

哇 昨天去上了第一節鋼琴課,好開心好開心 核心要義 感覺自己像個小公主 儀態儀容 屁股只能坐一半 身體保持正直 手非常溫柔非常輕鬆地搭到琴鍵上 胳膊肘整個過程保持不動 兩手手腕微微向內旋轉,盡量讓手背與琴鍵平行,中空狀。落下時,呈自由落體狀,每個手指放到該放的琴鍵上。一首曲目彈奏完畢,手,輕輕地溫柔...