圖解HTTP協(xié)議讀書(shū)筆記一
個(gè)人閱讀《圖解HTTP》的記錄以及總結(jié)
HTTP協(xié)議的概念
? HTTP通常被譯為超文本傳輸協(xié)議,但這種譯法并不嚴(yán)謹(jǐn),嚴(yán)謹(jǐn)?shù)淖g法應(yīng)為"超文本轉(zhuǎn)移協(xié)議",HTTP協(xié)議也是客戶(hù)端與服務(wù)端的請(qǐng)求和應(yīng)答一種標(biāo)準(zhǔn),我們的WEB就是使用HTTP協(xié)議作為規(guī)范
由于WEB是建立在HTTP協(xié)議上通信的,而通?;ヂ?lián)網(wǎng)是建立在TCP/IP協(xié)議族的基礎(chǔ)上運(yùn)作的,HTTP是TCP/IP的一個(gè)子集。所以要了解HTTP協(xié)議我們有必要了解下TCP/IP協(xié)議
對(duì)TCP/IP理解
1.TCP/IP協(xié)議族里重要的一點(diǎn)就是分層
TCP/IP分為應(yīng)用層、傳輸層、網(wǎng)絡(luò)層、和數(shù)據(jù)鏈路層
應(yīng)用層:決定了向用戶(hù)提供應(yīng)用服務(wù)時(shí)通信的活動(dòng)。
TCP/IP協(xié)議族內(nèi)預(yù)存了各類(lèi)通用的應(yīng)用服務(wù)
如FTP 文件傳輸協(xié)議 DNS域名系統(tǒng)
HTTP在這應(yīng)用層
傳輸層:對(duì)上層應(yīng)用層, 提供處于網(wǎng)絡(luò)連接中的兩臺(tái)計(jì)算機(jī)之間數(shù)據(jù)傳輸
在傳輸層有兩個(gè)性質(zhì)不同的協(xié)議 :
1. TCP 傳輸控制協(xié)議
2. UDP 用戶(hù)數(shù)據(jù)報(bào)協(xié)議
?網(wǎng)絡(luò)層(又名網(wǎng)絡(luò)互連層)
?網(wǎng)絡(luò)層用來(lái)處理在網(wǎng)絡(luò)上流動(dòng)的數(shù)據(jù)包。數(shù)據(jù)包是網(wǎng)路傳輸?shù)淖钚?shù)據(jù)單位。
?該層規(guī)定了通過(guò)怎樣的的路徑(所謂傳輸線(xiàn)路)到達(dá)對(duì)方計(jì)算機(jī),并把數(shù)據(jù)包傳送給對(duì)方。
?鏈路層(又名數(shù)據(jù)鏈路層,網(wǎng)絡(luò)接口層)
用來(lái)處理連接網(wǎng)絡(luò)的硬件部分。
包括控制操作系統(tǒng)、硬件的設(shè)備驅(qū)動(dòng)、NIC(網(wǎng)卡),及光纖等物理可見(jiàn)部分
還包括連接器等一切傳輸媒介。
示例:

2.IP協(xié)議
IP屬于網(wǎng)絡(luò)層
IP協(xié)議與IP地址不是一種東西。
IP協(xié)議的作用是把各種數(shù)據(jù)包傳送給對(duì)方。而要保證確實(shí)傳送到對(duì)方那里,則需要滿(mǎn)足各類(lèi)條件。其中兩種重要的條件是IP地址和MAC地址
IP地址指明了節(jié)點(diǎn)被分配到的地址,MAC地址是指網(wǎng)卡所屬的固定地址。IP地址可以和MAC地址進(jìn)行配對(duì)。IP地址可變換,但MAC地址基本不會(huì)更改。
IP間的通信依賴(lài)MAC地址。此時(shí)會(huì)采用ARP協(xié)議。ARP是一種用以解析地址的協(xié)議,根基通信方的IP地址就可以反查出對(duì)應(yīng)的MAC地址
3.TCP協(xié)議
按層次分,TCP位于傳輸層,提供可靠地字節(jié)流服務(wù)。
這是指為了方便傳輸,將大塊數(shù)據(jù)分割成以報(bào)文段(segment)為單位的數(shù)據(jù)包進(jìn)行管理。而可靠地傳輸協(xié)議為了更容易傳送大數(shù)據(jù)才把數(shù)據(jù)分割,而且TCP協(xié)議能夠確認(rèn)數(shù)據(jù)最終是否送達(dá)到對(duì)方。
4.經(jīng)典的TCP/IP里的三次握手
TCP采取三次握手的方式確保數(shù)據(jù)的送達(dá)。
握手過(guò)程中使用了TCP的標(biāo)志 - 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é)束。
注:若在握手過(guò)程中某個(gè)階段莫名中斷,TCO協(xié)議會(huì)再次以相同的順序發(fā)送相同的數(shù)據(jù)包。
三次握手圖示:

5.DNS
DNS服務(wù)是和HTTP協(xié)議一樣位于應(yīng)用層的協(xié)議。
它提供域名和IP地址之間的解析服務(wù)。
計(jì)算機(jī)既可以被賦予IP地址,也可以被賦予主機(jī)名和域名。
以用戶(hù)的角度一般都是通過(guò)域名訪(fǎng)問(wèn)對(duì)方的計(jì)算機(jī)(通過(guò)瀏覽器訪(fǎng)問(wèn)網(wǎng)站),而不是通過(guò)輸入IP地址來(lái)訪(fǎng)問(wèn)。域名方式更符合人類(lèi)的記憶習(xí)慣。
同樣的讓計(jì)算機(jī)理解域名相對(duì)而言就變得困難了。因?yàn)橛?jì)算機(jī)更擅長(zhǎng)處理一長(zhǎng)串?dāng)?shù)字。
為了解決上述的問(wèn)題,DNS服務(wù)應(yīng)運(yùn)而生。DNS協(xié)議提供通過(guò)域名查找IP地址,或逆向從IP地址反查詢(xún)域名的服務(wù)。
6.URI和URL
URI用字符串標(biāo)識(shí)某一互聯(lián)網(wǎng)資源,而URL表示資源的地點(diǎn)(指的是互聯(lián)網(wǎng)上所處的位置)。
由此可見(jiàn)URL識(shí)URI的子集。
初識(shí)HTTP
1.HTTP協(xié)議用于客戶(hù)端和服務(wù)端之間的通信
客戶(hù)端:請(qǐng)求訪(fǎng)問(wèn)文本或圖像等資源的一端
服務(wù)端:提供資源響應(yīng)的一端
注:在應(yīng)用HTTP協(xié)議時(shí),必定是一端擔(dān)任客戶(hù)端角色,另一端擔(dān)任服務(wù)端角色,在實(shí)際情況下,倆端角色可能互換,但是再一條通信線(xiàn)路中,用HTTP協(xié)議就能明確兩端定位。
2.通過(guò)請(qǐng)求和響應(yīng)的交換達(dá)成通信
請(qǐng)求必定由客戶(hù)端發(fā)出,而服務(wù)端響應(yīng)該請(qǐng)求并返回。
換句話(huà)說(shuō)通信是從客戶(hù)端開(kāi)始的建立的,服務(wù)端在沒(méi)有接收到請(qǐng)求之前不會(huì)發(fā)送響應(yīng)。
3.HTTP是不保存狀態(tài)的協(xié)議
即無(wú)狀態(tài)協(xié)議。
4.HTTP協(xié)議以報(bào)文形式交流
請(qǐng)求報(bào)文是由請(qǐng)求方法、請(qǐng)求URL、協(xié)議版本、可選的請(qǐng)求首部字段和內(nèi)容實(shí)體構(gòu)成的。
(后面會(huì)深入了解)
5.HTTP/1.1 是一種無(wú)狀態(tài)的協(xié)議。
為了實(shí)現(xiàn)期望的保持狀態(tài)的功能,于是引入了Cookie技術(shù)。
有了Cookie技術(shù)再用HTTP協(xié)議通信,就可以管理狀態(tài)了
(后面會(huì)深入了解)
6.當(dāng)客戶(hù)端請(qǐng)求訪(fǎng)問(wèn)資源而發(fā)送請(qǐng)求時(shí),URI需要將作為請(qǐng)求報(bào)文中的請(qǐng)求URI包含在內(nèi)。
圖示:
