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