部分資料來源: 《圖解HTTP》
HTTP是什么
HTTP(Hypertext Transfer Protocol)是一種用于在網(wǎng)絡(luò)上傳輸數(shù)據(jù)的協(xié)議,它是萬維網(wǎng)的基礎(chǔ)。HTTP使用客戶端-服務(wù)器模型,客戶端向服務(wù)器發(fā)送請(qǐng)求,服務(wù)器返回響應(yīng)。HTTP使用TCP作為其傳輸協(xié)議,它默認(rèn)使用端口80。
TCP/IP是什么
TCP/IP是一個(gè)協(xié)議族,包含一系列的協(xié)議,如TCP、IP、UDP、ICMP等等,它們共同構(gòu)成了互聯(lián)網(wǎng)協(xié)議套件(Internet Protocol Suite)。
也有一些說法認(rèn)為TCP/IP是指TCP和IP兩種協(xié)議,本文對(duì)于TCP/IP的釋義取自《圖解Http》,并且這也是認(rèn)可度比較高的解釋。
TCP/IP的分層模式
TCP/IP協(xié)議族采用了分層的設(shè)計(jì)模式,從上到下將協(xié)議劃分為四個(gè)層次,分別是:
-
應(yīng)用層(Application Layer):應(yīng)用層是TCP/IP協(xié)議族中最高層的協(xié)議,它提供了用戶接口和應(yīng)用程序之間的通信服務(wù),如我們最為熟悉的HTTP就是應(yīng)用層中的、還有FTP、SMTP等協(xié)議。應(yīng)用層協(xié)議是與用戶直接交互的協(xié)議,它們處理特定類型的數(shù)據(jù),并將其交給下一層協(xié)議處理。
-
傳輸層(Transport Layer):傳輸層提供了端到端的數(shù)據(jù)傳輸服務(wù),如TCP和UDP協(xié)議。傳輸層協(xié)議負(fù)責(zé)將數(shù)據(jù)從應(yīng)用層傳遞到網(wǎng)絡(luò)層,并保證數(shù)據(jù)傳輸?shù)目煽啃?、流量控制、錯(cuò)誤檢測(cè)等功能。
-
網(wǎng)絡(luò)層(Network Layer):網(wǎng)絡(luò)層主要提供了數(shù)據(jù)包在網(wǎng)絡(luò)中的傳輸服務(wù),如IP協(xié)議。網(wǎng)絡(luò)層協(xié)議負(fù)責(zé)將數(shù)據(jù)包從源主機(jī)傳遞到目標(biāo)主機(jī),通過路由選擇和轉(zhuǎn)發(fā)等技術(shù)實(shí)現(xiàn)數(shù)據(jù)在不同網(wǎng)絡(luò)之間的傳輸。
-
鏈路層(Link Layer):鏈路層是指數(shù)據(jù)在物理層上的傳輸,如Ethernet、Wi-Fi等協(xié)議。鏈路層協(xié)議負(fù)責(zé)將數(shù)據(jù)從網(wǎng)絡(luò)層傳遞到物理層,并通過物理層傳輸?shù)浇邮辗街鳈C(jī)。
TCP/IP 通信數(shù)據(jù)流
利用TCP/IP協(xié)議族進(jìn)行網(wǎng)絡(luò)通信時(shí),會(huì)通過分層順序與對(duì)方進(jìn)行通信。發(fā)送端從應(yīng)用層往下走,接收端則往從應(yīng)用層往上走。
- 我們用HTTP舉例來說明,首先作為發(fā)送端的客戶端在應(yīng)用層(HTTP協(xié)議)發(fā)出一個(gè)想看某個(gè)Web頁面的HTTP請(qǐng)求。
- 接著,為了傳輸方便,在傳輸層(TCP協(xié)議)把從應(yīng)用層處收到的數(shù)據(jù)(HTTP請(qǐng)求報(bào)文)
進(jìn)行分割,并在各個(gè)報(bào)文上打上標(biāo)記序號(hào)及端口號(hào)后轉(zhuǎn)發(fā)給網(wǎng)絡(luò)層。 - 在網(wǎng)絡(luò)層(IP協(xié)議),增加作為通信目的地的MAC地址后轉(zhuǎn)發(fā)給鏈路層。這樣一來,發(fā)往網(wǎng)絡(luò)的通信請(qǐng)求就準(zhǔn)備齊全了。
而在接收端的服務(wù)器在鏈路層接收到數(shù)據(jù)后,按序往上層發(fā)送,一直到應(yīng)用層,這樣,服務(wù)器才算真正接收到客戶端發(fā)送過來的HTTP請(qǐng)求。
而在層與層之間傳輸數(shù)據(jù)時(shí),每經(jīng)過一層必定會(huì)被打上一個(gè)該層所屬的首部信息,反之,接收端每通過一層都會(huì)刪除對(duì)應(yīng)的首部。
TCP協(xié)議是什么
按層次分,TCP屬于傳輸層,是一種面向連接、可靠的、基于字節(jié)流的傳輸控制協(xié)議,用于在網(wǎng)絡(luò)中可靠地傳輸數(shù)據(jù)。
所謂的字節(jié)流服務(wù)是指,為了方便傳輸,將大塊數(shù)據(jù)分割成以報(bào)文段為單位的數(shù)據(jù)表進(jìn)行管理。
基于TCP協(xié)議。能夠把數(shù)據(jù)可靠的傳給對(duì)方。
三次握手策略
為了將數(shù)據(jù)可靠的傳給對(duì)方,TCP協(xié)議采用了三次握手策略。
- 發(fā)送端首先會(huì)發(fā)送一個(gè)帶SYN(synchronize)標(biāo)志的數(shù)據(jù)包給對(duì)方
- 接收端收到后,回傳一個(gè)帶有SYN/ACK(acknowledgement)標(biāo)志的數(shù)據(jù)包以示傳達(dá)確認(rèn)信息
- 最后,發(fā)送端再回傳一個(gè)帶ACK標(biāo)志的數(shù)據(jù)包,代表“握手”結(jié)束
四次揮手策略
四次揮手(Four-way handshake)是TCP連接的關(guān)閉過程。在TCP連接中,當(dāng)雙方完成數(shù)據(jù)傳輸后,需要通過四次揮手的方式正常關(guān)閉連接,以釋放資源并避免數(shù)據(jù)丟失或重傳。
四次揮手的過程如下:文章來源:http://www.zghlxwxcb.cn/news/detail-745866.html
- 主動(dòng)關(guān)閉方發(fā)送一個(gè)FIN報(bào)文段,請(qǐng)求關(guān)閉連接。
- 被動(dòng)關(guān)閉方接收到FIN報(bào)文段后,向主動(dòng)關(guān)閉方發(fā)送一個(gè)ACK報(bào)文段,確認(rèn)收到關(guān)閉請(qǐng)求。
- 被動(dòng)關(guān)閉方發(fā)送一個(gè)FIN報(bào)文段,請(qǐng)求關(guān)閉連接。
- 主動(dòng)關(guān)閉方接收到FIN報(bào)文段后,向被動(dòng)關(guān)閉方發(fā)送一個(gè)ACK報(bào)文段,確認(rèn)收到關(guān)閉請(qǐng)求,連接正式關(guān)閉。
通過四次揮手,雙方確認(rèn)對(duì)方已經(jīng)完成了關(guān)閉請(qǐng)求,釋放了連接資源,從而結(jié)束了TCP連接。文章來源地址http://www.zghlxwxcb.cn/news/detail-745866.html
HTTP協(xié)議、TCP/IP、TCP協(xié)議之間的關(guān)系
- HTTP協(xié)議和TCP協(xié)議都屬于TCP/IP協(xié)議族,HTTP屬于應(yīng)用層,而TCP屬于傳輸層。
- HTTP使用TCP作為其傳輸協(xié)議
關(guān)于各種協(xié)議與HTTP的關(guān)系可以用下圖來表示
到了這里,關(guān)于【HTTP詳解】HTTP協(xié)議、TCP/IP、TCP協(xié)議究竟是什么?的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!