【筆記整理】http協議淺析(一)

作者:楊志曉

一、相關協議類概念:

a.TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)協議屬於傳輸層協議。 其中TCP提供IP環境下的數據可靠傳輸,它提供的服務包括數據流傳送、可靠性、有效流控、全雙工操作和多路複用。 通過面向連接、端到端和可靠的數據包發送。
b.SPDY協議是Google提出的基於傳輸控制協議(TCP)的應用層協議,通過壓縮、多路複用和優先級來縮短加載時間。 該協議是一種更加快速的內容傳輸協議。
c.QUIC(Quick UDP Internet Connections)基於UDP的傳輸層協議,提供像TCP一樣的可靠性。在提高web應用性能上,可以選擇在應用層使用HTTP2.0實現多路傳輸,在物理層使用CDN解決網絡擁塞和最後一公里問題。在傳輸層,目前主要使用TCP,但由於TCP本身的問題(一個充滿補丁的醜陋的協議),成爲了限制web應用性能的一個瓶頸。

二、wireshark抓包解析報文:

a.mac網卡(多路訪問控制協議(multiple access control protocol)

1_1.png
clipboard.png

b.Ip報文解析
1_2.png
clipboard.png

ip報頭長度計算:
1_3.png
clipboard.png

5*4 =20

c.tcp報文解析
1_4.png
clipboard.png

三、http1.0基本原理

a.通過一個普通html分析:
1_5.png
clipboard.png

1_6.png
clipboard.png

b.如上圖分析:
綠色爲:Waiting (TTFB):TTFB (Time To First Byte),是最初的網絡請求被髮起到從服務器接收到第一個字節這段時間,它包含了 TCP連接時間,發送HTTP請求時間和獲得響應消息第一個字節的時間。
藍色爲:Content Download

c.等待時間影響因素:從發送請求到收到響應之間的空隙,會受到線路、服務器距離等因素的影響。

d.瀏覽器同域名發出6個請求,建立幾個tcp?1 or 6?

帶着上面的疑問我們對demo進行抓包
抓包分析:

1_7.png
clipboard.png

分析後發現:三張圖片+html總共四個請求
index.html+section4new.png端口是55653
section01.png+section2.jpg端口是55654

爲什麼是這樣呢:
查看tcp抓包:

1_8.png
clipboard.png

通過抓包看到 :
第一個http請求 index.html請求端口是:55653
第二個http請求 section4new.png請求端口是:55653
第三個http請求 section01.png請求端口是:55654
第四個http請求section2.jpg請求端口是:55654

同時也看到tcp開始建立時同時發出了兩條請求

1_9.png
clipboard.png

默認谷歌瀏覽器發起了兩條tcp請求(瀏覽器不同,可能是請求個數少)

同樣抓包中看到了tcp的三次握手

1_10.png
clipboard.png

http2.0 :

a.瀏覽器加載如下:
1_11.png
clipboard.png

b.討論點:http1.1請求會是按照如下圖1還是圖2?
1_12.png
clipboard.png

討論結論:
http1.1 without pipelining: 通過tcp連接上一個請求相應完後,下一個請求才能發出
http1.1 with pipelining: 通過tcp連接,上一個請求發出,下一個請求不需要等待,但是返回是同一順序。
http2.0在TCP連接上傳輸的是幀,客戶端會將要傳輸的數據拆分爲不同的幀,並標記對應的數據流ID,異步發出,服務端接收到幀集合根據數據流ID拼湊起來即爲客戶端發送來的數據。同理,服務端也是將數據拆分爲不同幀返回。

附瀏覽器同域名請求的最大併發限制:

1_13.png
clipboard.png

附課堂板書:

1_14
clipboard.png..]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章