HTTP协议理解——计算机网络
http
- 一、概念
- 傳輸流程
- HTTP請(qǐng)求/應(yīng)答應(yīng)的步驟如下:
- 二、特點(diǎn)
- 三、工作原理
- 四、URL
- 4.1定義
- 4.2語(yǔ)法
- 五、狀態(tài)碼
- 5.1http常見(jiàn)狀態(tài)碼
- 5.2狀態(tài)碼分類
- 5.3常用端口號(hào)
一、概念
1.http(超文本傳輸協(xié)議)是一種用于從WWW服務(wù)器傳輸超文本到本地瀏覽器的傳輸協(xié)議。
2.涉及兩個(gè)對(duì)象:服務(wù)端和客戶端。
3.采用請(qǐng)求/應(yīng)答方式:客戶端請(qǐng)求服務(wù),服務(wù)端為客戶端提供服務(wù),服務(wù)端隨時(shí)準(zhǔn)備被客戶端請(qǐng)求。
傳輸流程
1、地址解析
如用客戶端瀏覽器請(qǐng)求這個(gè)頁(yè)面:http://localhost.com:8080/index.html從中分解出協(xié)議名、主機(jī)名、端口、對(duì)象路徑等部分,對(duì)于我們的這個(gè)地址,解析得到的結(jié)果如下:
協(xié)議名:http
主機(jī)名:localhost.com
端口:8080
對(duì)象路徑:/index.html
在這一步,需要域名系統(tǒng)DNS解析域名localhost.com得主機(jī)的ip地址。
2、封裝HTTP請(qǐng)求數(shù)據(jù)包
把以上部分結(jié)合本機(jī)自己的信息,封裝成一個(gè)HTTP請(qǐng)求數(shù)據(jù)包
3、封裝成TCP包并建立連接
封裝成TCP包,建立TCP連接(TCP的三次握手)
4、客戶機(jī)發(fā)送請(qǐng)求命令
客戶機(jī)發(fā)送請(qǐng)求命令:建立連接后,客戶機(jī)發(fā)送一個(gè)請(qǐng)求給服務(wù)器,請(qǐng)求方式的格式為:統(tǒng)一資源標(biāo)識(shí)符(URL)、協(xié)議版本號(hào)、后邊是MIME信息包括請(qǐng)求修飾符、客戶機(jī)信息和內(nèi)容。
5、服務(wù)器響應(yīng)
服務(wù)器接到請(qǐng)求后,給予響應(yīng)的響應(yīng)信息,其格式為一個(gè)狀態(tài)行,包括信息的協(xié)議版本號(hào)、一個(gè)成功或錯(cuò)誤的代碼,后邊是MIME信息包括服務(wù)器信息、實(shí)體信息和可能的內(nèi)容。
6、服務(wù)器關(guān)閉TCP連接
服務(wù)器關(guān)閉TCP連接:一般情況下,一旦Web服務(wù)器向?yàn)g覽器發(fā)送了請(qǐng)求數(shù)據(jù),它就要關(guān)閉TCP連接,然后如果瀏覽器或者服務(wù)器在其頭信息加入了這行代碼Connection:keep-alive,TCP連接在發(fā)送后將仍然保持打開(kāi)狀態(tài),于是,瀏覽器可以繼續(xù)通過(guò)相同的連接發(fā)送請(qǐng)求。保持連接節(jié)省了為每個(gè)請(qǐng)求建立新連接所需的時(shí)間,還節(jié)約了網(wǎng)絡(luò)帶寬。
HTTP請(qǐng)求/應(yīng)答應(yīng)的步驟如下:
1、客戶端連接到Web服務(wù)器
一個(gè)HTTP客戶端,通常是瀏覽器,與Web服務(wù)器的HTTP端口(默認(rèn)為80)建立一個(gè)TCP套接字連接。例如:http://www.baidu.com
2、發(fā)送HTTP請(qǐng)求
通過(guò)TCP套接字,客戶端向Web服務(wù)器發(fā)送一個(gè)文本的請(qǐng)求報(bào)文,一個(gè)請(qǐng)求報(bào)文由請(qǐng)求行、請(qǐng)求頭部、空行和請(qǐng)求數(shù)據(jù)4部分組成。
3、服務(wù)器接受請(qǐng)求并返回HTTP響應(yīng)
Web服務(wù)器解析請(qǐng)求,定位請(qǐng)求資源。服務(wù)器將資源副本寫到TCP套接字,由客戶端讀取。一個(gè)響應(yīng)由狀態(tài)行、響應(yīng)頭部、空行和響應(yīng)數(shù)據(jù)4部分組成。
4、釋放TCP連接
若connection模式為close,則服務(wù)器主動(dòng)關(guān)閉TCP連接,客戶端被動(dòng)關(guān)閉,釋放TCP連接;若connection模式為keepalive,則該連接會(huì)保持一段時(shí)間,在該時(shí)間內(nèi)可以繼續(xù)接收請(qǐng)求;
5、客戶端瀏覽器解析HTML內(nèi)容
客戶端瀏覽器首先解析狀態(tài)行,查看表明請(qǐng)求是否成功的狀態(tài)碼。然后解析每一個(gè)響應(yīng)頭,響應(yīng)頭告知以下為若干字節(jié)的HTML文檔和文檔的字符集。客戶端瀏覽器讀取響應(yīng)數(shù)據(jù)HTML,根據(jù)HTML的語(yǔ)法對(duì)其進(jìn)行格式化,并在瀏覽器窗口中進(jìn)行顯示。
舉例:
在瀏覽器地址欄鍵入U(xiǎn)RL,按下回車之后會(huì)經(jīng)歷以下流程:
1、瀏覽器向DNS服務(wù)器請(qǐng)求解析該URL中的域名以及所對(duì)應(yīng)的IP地址;
2、解析出IP地址后,根據(jù)該IP地址和默認(rèn)端口80,和服務(wù)器建立TCP連接;
3、瀏覽器發(fā)出讀取文件(URL中域名后面部分對(duì)應(yīng)的文件)的HTTP請(qǐng)求,該請(qǐng)求報(bào)文作為TCP三次握手的第三個(gè)報(bào)文的數(shù)據(jù)發(fā)送給服務(wù)器;
4、服務(wù)器對(duì)瀏覽器請(qǐng)求作出響應(yīng),并把對(duì)應(yīng)的HTML文本發(fā)送給瀏覽器;
5、釋放TCP連接;
6、瀏覽器將該HTML文本解析并顯示內(nèi)容。
二、特點(diǎn)
1.支持客戶/服務(wù)器模式。
2.簡(jiǎn)單快速:客戶向服務(wù)器請(qǐng)求服務(wù)時(shí),只需傳送請(qǐng)求方法和路徑。請(qǐng)求方法常用的有GET、POST、HEAD。每種方法規(guī)定了客戶與服務(wù)器聯(lián)系的類型不同。
由于HTTP協(xié)議簡(jiǎn)單,使得HTTP服務(wù)器的程序規(guī)模小,因而通信速度很快。
3.靈活:HTTP允許傳輸任意類型的數(shù)據(jù)對(duì)象。正在傳輸?shù)念愋陀蒀ontent-Type加以標(biāo)記。
4.無(wú)連接:無(wú)連接的含義是限制每次連接只處理一個(gè)請(qǐng)求。一次請(qǐng)求,對(duì)應(yīng)一次響應(yīng)。服務(wù)器處理完客戶的請(qǐng)求,并收到客戶的應(yīng)答后,即斷開(kāi)連接。采用這種方式可以節(jié)省傳輸時(shí)間。
5.無(wú)狀態(tài):HTTP協(xié)議是無(wú)狀態(tài)協(xié)議。無(wú)狀態(tài)是指協(xié)議對(duì)于事務(wù)處理沒(méi)有記憶能力。缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息,則它必須重傳,這樣可能導(dǎo)致每次連接傳送的數(shù)據(jù)量增大。另一方面,在服務(wù)器不需要先前信息時(shí)它的應(yīng)答就較快。
注:參考百度
https://blog.csdn.net/hanhanwanghaha寶藏女孩 歡迎您的關(guān)注!
歡迎關(guān)注微信公眾號(hào):寶藏女孩的成長(zhǎng)日記
讓這個(gè)可愛(ài)的寶藏女孩在努力的道路上與你一起同行!
如有轉(zhuǎn)載,請(qǐng)注明出處(如不注明,盜者必究)
三、工作原理
HTTP協(xié)議工作于客戶端-服務(wù)端架構(gòu)為上。瀏覽器作為HTTP客戶端通過(guò)URL向HTTP服務(wù)端即WEB服務(wù)器發(fā)送所有請(qǐng)求。
HTTP默認(rèn)端口號(hào)為80,但是你也可以改為8080或者其他端口
客戶端請(qǐng)求消息:請(qǐng)求行、請(qǐng)求頭部、空行和請(qǐng)求數(shù)據(jù)。
服務(wù)器響應(yīng)消息:狀態(tài)行、消息報(bào)頭、空行和響應(yīng)正文。
四、URL
4.1定義
URL(統(tǒng)一資源定位符)是 Internet 上標(biāo)準(zhǔn)資源的地址, 互聯(lián)網(wǎng)上的每個(gè)文件都有一個(gè)唯一的URL,它包含的信息指出文件的位置以及瀏覽器應(yīng)該怎么處理它。瀏覽器的地址框中輸入一個(gè)URL或是單擊一個(gè)超級(jí)鏈接時(shí),URL就確定了要瀏覽的地址。
4.2語(yǔ)法
協(xié)議://用戶:密碼@子域名.域名.頂級(jí)域:端口號(hào)/目錄/文件名.后綴?參數(shù)=值#標(biāo)志
五、狀態(tài)碼
5.1http常見(jiàn)狀態(tài)碼
200:請(qǐng)求成功
301:資源(網(wǎng)頁(yè)等)被永久轉(zhuǎn)移到其它URL
404:請(qǐng)求的資源(網(wǎng)頁(yè)等)不存在
500:內(nèi)部服務(wù)器錯(cuò)誤
5.2狀態(tài)碼分類
1xx 服務(wù)器收到請(qǐng)求,請(qǐng)求者需繼續(xù)執(zhí)行操作
2xx (成功)請(qǐng)求被正常處理
3xx (重定向)瀏覽器需要執(zhí)行某些特殊的處理以正確處理請(qǐng)求
4xx 客戶端錯(cuò)誤
5xx 服務(wù)器錯(cuò)誤
5.3常用端口號(hào)
| mysql | 3306 |
| tomcat | 8080 |
| sqlserver | 1433 |
| http | 80 |
| ftp | 21 |
| ssh | 22 |
| oracle | 1521 |
相關(guān)鏈接:
HTTP和HTTPS的主要區(qū)別(面試???#xff09;——計(jì)算機(jī)網(wǎng)絡(luò)
https://blog.csdn.net/hanhanwanghaha寶藏女孩 歡迎您的關(guān)注!
歡迎關(guān)注微信公眾號(hào):寶藏女孩的成長(zhǎng)日記
讓這個(gè)可愛(ài)的寶藏女孩在努力的道路上與你一起同行!
如有轉(zhuǎn)載,請(qǐng)注明出處(如不注明,盜者必究)
總結(jié)
以上是生活随笔為你收集整理的HTTP协议理解——计算机网络的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ORA-01102
- 下一篇: msyql的FORMAT()函数设置小数