Http chunk方式傳輸資料

2021-07-26 15:17:14 字數 1363 閱讀 9420

http協議

響應格式:

[headerkey]:[空格][headervalue]\r\n

[headerkey]:[空格][headervalue]\r\n

[headerkey]:[空格][headervalue]\r\n

......這裡省略很多

\r\n

[資料區]

請求格式:

get/post[空格][相對或者絕對路徑][空格]http/1.1\r\n

[headerkey]:[空格][headervalue]\r\n

[headerkey]:[空格][headervalue]\r\n

[headerkey]:[空格][headervalue]\r\n

....

\r\n

[資料區]

資料區的長度由協議頭content-length指定

***當資料區的長度太長時,若還是按照上面這種格式傳輸,則對方會收到不資料,用wareshark抓包時也看不到這條資料(http,用tcp過濾還是看得到的)

這時,就要使用chunk方式傳送啦

先來看一條chunk的示例

"transfer-encoding", "chunked":必需的。

chunk的協議頭里沒有

content-length

資料區里的資料格式有變化:

可以從上圖看出每段的chunk資料是以\r\n結尾的,那每段的開始呢?

圈出來的就是每段chunk資料的開始,這個\39\63\30不難看出,這是此段trunk的長度,不包括表示長度的這幾個位元組,也不包括結尾的\r\n,這段長度的這幾個位元組是個字串,沒有固定長度,佔1個位元組到4個位元組,至於5個以上位元組應該也行,不過沒必要吧,不要直接把長度寫入,要先轉成字串後再寫,這個問題搞了半天。

最後結尾是\30\r\n\r\n

這個\30是什麼意思,不清楚,反正沒有會報錯了

知道了chunk方式傳輸格式,就可以針對地寫**了吧,自己做爬蟲時經常遇到,整得腦殼大

資料傳輸方式

資料傳輸方式 1 並行傳輸與序列傳輸 並行傳輸指的是資料以成組的方式,在多條並行通道上同時進行傳輸。常用的就是將構成一 個字元 的幾位二進位製碼,分別在幾個並行通道上進行傳輸。例如,採用8單位 的字 符 可以用8個通道並行傳輸。一次傳送乙個字元,因此收 發雙方不存在字元的同步問題,不需要另加 起 止...

資料傳輸方式

環境限定 tcp ip下的socket網路傳輸 c c 開發語言,32 64位機。目前有兩種方式對資料進行傳輸 1 字元流形式,即將資料用字串表示 2 結構型方式,即將資料按型別直接傳輸。1 的方式保證所有的資料都是清晰的字串明文,沒有平台不一致問題,但傳輸的資料不定長,復合資料型別 如struct...

資料傳輸方式

本文摘自原文 定義 socket也稱作 套接字 實現伺服器和客戶端之間的物理連線,並進行資料傳輸。協議 主要有udp和tcp兩個協議,處於網路協議的傳輸層。優點 1 傳輸資料為位元組級,傳輸資料可自定義,資料量小 對於手機應用講 費用低 2 傳輸資料時間短,效能高。3 適合於客戶端和伺服器端之間資訊...