首先http的含義是超文本傳輸協(xié)議帝嗡,他是基于tcp/ip協(xié)議的,通常使用的網(wǎng)絡(luò)是在tcp/ip協(xié)議族的基礎(chǔ)上運(yùn)作的璃氢,而http屬于他內(nèi)部的一個(gè)子集哟玷。
1.1TCP/IP
TCP/IP是互聯(lián)網(wǎng)相關(guān)的各類協(xié)議族的總稱,在tcp/ip協(xié)議族里重要的一點(diǎn)就是分層拔莱,它按層次分別分為以下四層:應(yīng)用層碗降、傳輸層隘竭、網(wǎng)絡(luò)層和數(shù)據(jù)鏈路層塘秦。
1.1.1 下面簡述一下每一層的作用:
應(yīng)用層:
應(yīng)用層決定了向用戶提供應(yīng)用服務(wù)時(shí)通信的活動(dòng)。
TCP/IP協(xié)議族內(nèi)預(yù)存了各類通用的應(yīng)用服務(wù)动看,比如尊剔,F(xiàn)TP(文件傳輸協(xié)議)和DNS(domain name system域名服務(wù))服務(wù)就是其中的兩類,http協(xié)議與處于該層菱皆。
傳輸層:
傳輸層對(duì)上層應(yīng)用層须误,提供處于網(wǎng)絡(luò)連接中的兩臺(tái)計(jì)算機(jī)之間的數(shù)據(jù)傳輸。
在傳輸層有兩個(gè)性質(zhì)不同的協(xié)議:TCP(傳輸控制協(xié)議)仇轻,UDP(用戶 數(shù)據(jù)報(bào) 協(xié)議)
網(wǎng)絡(luò)層:
網(wǎng)絡(luò)層用來處理在網(wǎng)絡(luò)上流動(dòng)的數(shù)據(jù)包京痢,數(shù)據(jù)包是網(wǎng)絡(luò)傳輸?shù)淖钚?shù)據(jù)單位,該層規(guī)定了通過怎樣的路徑到達(dá)對(duì)方的計(jì)算機(jī)篷店,并把數(shù)據(jù)包傳送給對(duì)方祭椰。
與對(duì)方計(jì)算機(jī)之間通過多臺(tái)計(jì)算機(jī)或網(wǎng)絡(luò)設(shè)備進(jìn)行傳輸時(shí),網(wǎng)絡(luò)層所起的作用就是在眾多的選項(xiàng)內(nèi)選擇一條傳輸路線疲陕。
鏈路層:
用來處理鏈接網(wǎng)絡(luò)的硬件部分方淤,包括控制操作系統(tǒng)、硬件的設(shè)備驅(qū)動(dòng)蹄殃、NIC(網(wǎng)卡)及光纖等物理課件的部分(還包括連接器等一切傳輸媒介)携茂。硬件上的范疇均在鏈路層的作用范圍之內(nèi)。
1.1.2TCP/IP通信傳輸流
利用tcp/ip協(xié)議族進(jìn)行網(wǎng)絡(luò)通信時(shí)诅岩,會(huì)通過分層順序與對(duì)方進(jìn)行通信讳苦,發(fā)送端從應(yīng)用層往下走带膜,接收端則從鏈路層往應(yīng)用層走。
我們用http舉例來說明鸳谜,首先作為發(fā)送端的客戶在應(yīng)用層發(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)用層穗慕。當(dāng)傳輸?shù)綉?yīng)用層饿敲,才能算真正接受到由客戶端發(fā)送過來的HTTP請(qǐng)求。
發(fā)送端在曾與層之間傳輸數(shù)據(jù)時(shí)逛绵,每經(jīng)過一層時(shí)必定會(huì)被打上一個(gè)該層所屬的首部信息怀各,反之接受層在曾與層傳輸數(shù)據(jù)時(shí),沒經(jīng)過一層時(shí)會(huì)把對(duì)應(yīng)的首部消去术浪。
這種把數(shù)據(jù)信息包裝起來的做法成為封裝瓢对。
1.2與http關(guān)系密切的協(xié)議:IP、TCP和DNS
1.2.1 負(fù)責(zé)傳輸?shù)腎P協(xié)議
按層次分,IP網(wǎng)際協(xié)議位于網(wǎng)絡(luò)層。Internet Protocol這個(gè)名稱可能聽起來有點(diǎn)夸張秕豫,但事實(shí)正是如此,因?yàn)閹缀跛惺褂镁W(wǎng)絡(luò)的系統(tǒng)都會(huì)用到IP協(xié)議法焰,ICP/IP協(xié)議族中的IP指的就是網(wǎng)際協(xié)議,協(xié)議名稱都會(huì)用到IP協(xié)議倔毙。TCP/IP協(xié)議族中的IP指的就是網(wǎng)際協(xié)議埃仪,協(xié)議名稱中占據(jù)一半的位置,可見其重要陕赃。
IP協(xié)議的作用是把各種數(shù)據(jù)包傳送給對(duì)方卵蛉,而要保證確實(shí)傳送到對(duì)方那里,則需要滿足各類條件凯正。其中兩個(gè)重要的條件是IP和MAC地址
IP地址指明了節(jié)點(diǎn)被分配到的地址毙玻,MAC地址是指網(wǎng)卡所屬的固定地址,IP地址和MAC地址進(jìn)行配對(duì)廊散。IP地址是可以變換桑滩,但是MAC地址基本上不會(huì)更改。
使用ARP協(xié)議憑借MAC地址進(jìn)行通信,ARP是一種用以解析地址的協(xié)議运准,根據(jù)通信方的IP地址就可以反查出對(duì)應(yīng)的Mac地址幌氮。
1.2.2 確保可靠行的TCP協(xié)議
按層次分胁澳,TCP屬于傳輸層该互,提供可靠的字節(jié)流服務(wù),即為了方便傳輸韭畸,將大塊數(shù)據(jù)分割以報(bào)文段為單位的數(shù)據(jù)包進(jìn)行管理宇智,而可靠的傳輸服務(wù)是指,能夠把數(shù)據(jù)準(zhǔn)確可靠地傳給對(duì)方胰丁,一言以蔽之随橘,TCP協(xié)議為了更容易傳送大數(shù)據(jù)才把數(shù)據(jù)分割,而且TCP協(xié)議能夠確認(rèn)數(shù)據(jù)最終是否送達(dá)到對(duì)方锦庸。
確保數(shù)據(jù)能送到到對(duì)方机蔗,TCP采用三次握手策略,TCP協(xié)議把數(shù)據(jù)包發(fā)送出去后甘萧,還會(huì)向?qū)Ψ酱_認(rèn)是否送到成功萝嘁。
握手過程中使用了TCP的標(biāo)志(flag)--syn和ack。發(fā)送端首先發(fā)送一個(gè)帶SYN標(biāo)志的數(shù)據(jù)包給對(duì)方扬卷。接收端收到后牙言,回傳一個(gè)帶有SYN/ACK標(biāo)志的數(shù)據(jù)包以示傳達(dá)確認(rèn)信息,最后邀泉,發(fā)送端再回傳一個(gè)帶ACK標(biāo)志的數(shù)據(jù)包嬉挡,代表握手結(jié)束。
若在握手過程中某個(gè)階段莫名終端汇恤,TCP協(xié)議會(huì)再次以相同的順序發(fā)送相同的數(shù)據(jù)包。
1.3 負(fù)責(zé)域名解析的DNS服務(wù)
DNS服務(wù)和HTTP協(xié)議一樣位于應(yīng)用層的協(xié)議拔恰,他提供域名到IP地址之間的解析服務(wù)因谎。
計(jì)算機(jī)既可以被賦予IP地址,也可以被賦予主機(jī)名和域名颜懊。
1.4 各種協(xié)議與HTTP協(xié)議的關(guān)系
學(xué)習(xí)了和HTTP協(xié)議密不可分的TCP/IP協(xié)議族中的各個(gè)協(xié)議后财岔,我們?cè)谕ㄟ^這張圖來了解一下IP\TCP\DNS服務(wù)在使用HTTP協(xié)議的通信過程中各自發(fā)揮了哪些作用。
1.5 URL和URI
首先介紹概念河爹,
URI匠璧,
請(qǐng)求報(bào)文是有請(qǐng)求方法、請(qǐng)求URI咸这、協(xié)議版本夷恍、可選的請(qǐng)求首部字段和內(nèi)容實(shí)體構(gòu)成的。
響應(yīng)報(bào)文基本上由協(xié)議版本媳维、狀態(tài)碼(表示請(qǐng)求成功或失敗的數(shù)字代碼)酿雪、用以解釋狀態(tài)碼的原因短語遏暴、可選的響應(yīng)首部字段以及實(shí)體構(gòu)成。