向使用者提供可靠的端到端(end-to-end)的服務;
傳輸層向高層遮蔽了下層資料通訊的細節
為軟體提供了很低服務;
構建於tcp協議之上;
遮蔽網路傳輸相關細節;
只有乙個命令get;
沒有header等描述資料資訊;
伺服器傳送完畢關閉tcp請求;
增加了很多命令;
增加了status code和header;
多字符集支援、多部分傳送、許可權、快取等.
持久鏈結,不過成本比較高.
pipeline;同乙個鏈結傳送對個請求.
增加了 host和其他的一些命令.
所有資料以二進位制傳輸;
同乙個鏈結裡面傳送讀個請求不在需要按照順序來;
頭資訊壓縮以及推送等提高效率的功能
如圖:下面試三次握手的示意圖:
過程:
第一次握手:主機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開始傳送資料。
在tcp/ip協議中,tcp協議提供可靠的連線服務,採用三次握手建立乙個連線。
第一次握手:建立連線時,客戶端傳送syn包(syn=j)到伺服器,並進入syn_send狀態,等待伺服器確認;
第二次握手:伺服器收到syn包,必須確認客戶的syn(ack=j+1),同時自己也傳送乙個syn包(syn=k),即syn+ack包,此時伺服器進入syn_recv狀態; 第三次握手:客戶端收到伺服器的syn+ack包,向伺服器傳送確認包ack(ack=k+1),此包傳送完畢,客戶端和伺服器進入established狀態,完成三次握手。 完成三次握手,客戶端與伺服器開始傳送資料.
下圖是通過抓包工具看到的是例項:
第一次握手:192.168.31.25傳送位碼syn=1,seq=x;(一般x=0)到192.97.163.224,192.97.163.224由syn=1知道192.168.31.25要求建立聯機;
第二次握手:192.97.163.224收到請求後要確認聯機資訊,向192.168.31.25傳送ack ,syn=1,ack=1,
第三次握手:192.168.31.25收到後檢查ack number是否正確,即第一次傳送的位碼ack是否為1,若正確,192.97.163.224會再傳送ack ,ack=1,192.168.31.25收到後確認seq=seq+1,ack=1則連線建立成功
uniform resource identifier/統一資源標誌;用來唯一標識網際網路上的資訊資源.
包括url和urn;
uniform resource locator/統一資源定位器;
urn /永久統一資源定位符,資源移動之後依舊能找到;
如圖下面所示:
請求報文:它會向web伺服器請求乙個動作;
請求報文的格式:
起始行:
頭部:
主體:
響應報文:它會將請求的結果返回給客戶端。
響應報文的格式:
起始行:
頭部:
主體:
1、方式(method):客戶端希望伺服器對資源執行的動作,是乙個單獨的詞,比如,get、post或head;
2、請求url(request-url):要直接與伺服器進行對話,只要請求url是資源的絕對路徑就可以了,伺服器可以假定自己是url的主機/埠;
3、版本(version):報文所使用的http版本。其格式:http/《主要版本號》.《次要版本號》;
4、狀態碼(status-code):狀態碼是三位數字,描述了請求過程中所發生的情況。每個狀態碼的第一位數字都用於描述狀態的一般類別(比如,「成功」、「出錯」等等);
5、原因短語(reason-phrase):數字狀態碼的可讀版本,包含行終止序列之前的所有文字。原因短語只對人類有意義,因此,儘管響應行http/1.0 200 not ok和http/1.0 200 ok中原因短語的含義不同,但同樣都會被當作成功指示處理;
6、頭部(header):可以有零個或多個頭部,每個首部都包含乙個名字,後面跟著乙個冒號(:),然後是乙個可選的空格,接著是乙個值,最後是乙個crlf首部是由乙個空行(crlf)結束的,表示了頭部列表的結束和實體主體部分的開始;
7、實體的主體部分(entity-body):實體的主體部分包含乙個由任意資料組成的資料塊,並不是所有的報文都包含實體的主體部分,有時,報文只是以乙個crlf結束。
1.get提交,請求的資料會附在url之後;post提交:把提交的資料放置在是http包的包體<request-body>中,get提交的資料會在位址列中顯示出來,而post提交,位址列不會改變;
2.傳輸資料的大小: get:特定瀏覽器和伺服器對url長度有限制; post:由於不是通過url傳值,理論上資料不受限.
3.安全性:post的安全性要比get的安全性高
http方法:
用來定義資源的操作;
常用的get post等;
定義伺服器對請求的處理結果;
各個區間的code有各自的語義;
狀態碼:http狀態碼被分成了五大類。狀態碼為客戶端提供了一種理解事務處理結果的便捷方式。
1、100~199(資訊性狀態碼):http/1.1向協議中引入了資訊性狀態碼
2、200~299(成功狀態碼):客戶端發起請求時,這些請求通常都是成功的。伺服器有一組用來表示成功的狀態碼,分別對應於不同型別的請求
3、300~399(重定向狀態碼):重定向狀態碼要麼告知客戶端使用替代位置來訪問他們所感興趣的資源,要麼就提供乙個替代的響應而不是資源的內容
4、400~499(客戶端錯誤狀態碼):有時客戶端會傳送一些伺服器無法處理的東西。瀏覽網頁時,我們都看到過臭名昭著的404 not found錯誤碼,這只是伺服器在告訴我們,它對我們請求的資源一無所知
5、500~599(伺服器錯誤狀態碼):有時客戶端傳送了一條有效請求,伺服器自身卻出錯了,這些會返回5xx狀態碼
1:安裝node;在命令列輸入 node-v 檢視當前node版本;
4:通過 node http.js開啟服務;
5:通過在位址輸入localhost:80;開啟訪問;
HTTP雜談 一 HTTP協議理解
一 http協議是什麼?你瀏覽的 每乙個網頁 都是 基於 http 協議 呈現的,http 協議是網際網路應用中,客戶端 瀏覽器 與伺服器 之間進行 資料通訊的一種協議 只要大家都 按照協議規定方式 發起請求和返回響應結果,任何人都可以基於http協議 實現自己的web客戶端 瀏覽器 爬蟲 和web...
Http協議理解
http是hypertext transfer protocal 超文字傳輸協議 的簡寫,它是tcp ip協議集中的乙個應用層協議,用於定義web瀏覽器與web伺服器之間交換資料的過程以及資料本身的格式。http 1.0是早期版本,當前版本是http 1.1,http ng處於試驗階段,是下一代的h...
理解HTTP協議
http協議,超文字傳輸協議hyper text transfer protocol的縮寫,用於從全球資訊網伺服器傳輸超文字到本地瀏覽器的協議。它基於tcp ip通訊協議來傳輸資料 html檔案,查詢結果等 http協議屬於應用層。它允許傳輸任意型別的資料物件,正在傳輸的型別由content typ...