最近在溫習(xí)http,就把筆記復(fù)習(xí)整理了下沟蔑!
1.0 網(wǎng)絡(luò)基礎(chǔ)TCP/IP
通常使用的網(wǎng)絡(luò)(包含互聯(lián)網(wǎng))是在TCP/IP協(xié)議族的基礎(chǔ)上運(yùn)作的求类。HTTP屬于它內(nèi)部的一個(gè)子集。
1.0.1 TCP/IP協(xié)議族
計(jì)算機(jī)與網(wǎng)絡(luò)要相互通信叠穆,雙方就必須基于相同的方法少漆。比如,如何探測(cè)到通信目標(biāo)硼被、由哪一邊先發(fā)起通信示损、使用哪種語(yǔ)言進(jìn)行通信、怎樣結(jié)束通信等規(guī)則都需要實(shí)現(xiàn)確定嚷硫。不同的硬件检访、操作系統(tǒng)之間的通信,所有的這一切都需要一種規(guī)則论巍。而我們就把這種規(guī)則稱為協(xié)議(protocol)烛谊。
IEEE802.3、FDDI嘉汰、 ICMP丹禀、 TCP、IP鞋怀、 HTTP 双泪、DNS、FTP密似、PPPoE焙矛、UDP、SNMP
1.0.2 TCP/IP的分層管理
TCP/IP的協(xié)議族里重要的一點(diǎn)就是分層残腌。分別分為以下四層:應(yīng)用層村斟、傳輸層
、網(wǎng)絡(luò)層和數(shù)據(jù)鏈路層抛猫。
層次化是有好處的蟆盹,如果互聯(lián)網(wǎng)只由一個(gè)協(xié)議統(tǒng)籌,某個(gè)地方需要改變?cè)O(shè)計(jì)時(shí)闺金,就必須把所有部分整體替換掉/而分層之后只需把變動(dòng)的層替換掉即可逾滥。把各層之間的接口部分規(guī)劃好之后,每個(gè)層次內(nèi)部的設(shè)計(jì)就能夠自由改動(dòng)了败匹。
層次化后寨昙,設(shè)計(jì)也變得相對(duì)簡(jiǎn)單了讥巡。處于應(yīng)用層上的應(yīng)用可以只考慮分派給自己的任務(wù),而不需要弄清對(duì)方在地球上哪個(gè)地方舔哪、對(duì)方的傳輸路線是怎樣的欢顷、是否能確保傳輸送達(dá)等問(wèn)題。
應(yīng)用層
應(yīng)用層決定了向用戶提供應(yīng)用服務(wù)時(shí)的通信活動(dòng)尸红。
TCP/IP協(xié)議族內(nèi)預(yù)存了各類通用的應(yīng)用服務(wù)吱涉。比如FTP(File Transfer Protocol 文件傳輸協(xié)議)和DNS(Domain Name System 域名系統(tǒng))服務(wù)就是其中2類,HTTP協(xié)議也處于該層外里。
傳輸層
傳輸層相對(duì)于上層應(yīng)用層怎爵,提供處于網(wǎng)絡(luò)連接中的兩臺(tái)計(jì)算機(jī)之間的數(shù)據(jù)傳輸。在傳輸層有2個(gè)性質(zhì)不同的協(xié)議:TCP(Transmission Control Protocol盅蝗,傳輸控制協(xié)議)和UDP(User Data Protocol鳖链,用戶數(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)絡(luò)傳輸?shù)淖钚?shù)據(jù)單位芙委。該層規(guī)定了通過(guò)怎樣的路徑(所謂的傳輸路線)到達(dá)對(duì)方計(jì)算機(jī),并把數(shù)據(jù)包傳給對(duì)方狂秦。與對(duì)方計(jì)算機(jī)之間通過(guò)多臺(tái)計(jì)算機(jī)或網(wǎng)絡(luò)設(shè)備進(jìn)行傳輸時(shí)灌侣,網(wǎng)絡(luò)層所起的作用就是在眾多的選項(xiàng)內(nèi)選擇一條傳輸路線。
鏈路層(數(shù)據(jù)鏈路層/網(wǎng)絡(luò)接口層)
用來(lái)處理連接網(wǎng)絡(luò)的硬件部分裂问。包括控制操作系統(tǒng)侧啼、硬件的設(shè)備驅(qū)動(dòng)、NIC(Network Interface Card 網(wǎng)絡(luò)適配器堪簿,即網(wǎng)卡)痊乾,及光纖等物理可見(jiàn)部分(還包括連接器等一切傳輸媒介)。硬件上的范疇均在鏈路層的作用范圍之內(nèi)椭更。
1.1 與HTTP關(guān)系密切的協(xié)議:IP哪审、TCP和DNS
1.1.1 負(fù)責(zé)傳輸?shù)腎P協(xié)議
按層次分,IP(Internet Protocol)網(wǎng)際協(xié)議位于網(wǎng)絡(luò)層虑瀑。Internet Protocol湿滓,幾乎所有使用網(wǎng)絡(luò) 的系統(tǒng)都會(huì)用到IP協(xié)議。TCP/IP協(xié)議族中的IP指的就是網(wǎng)際協(xié)議舌狗,協(xié)議名稱中占了一半位置叽奥,氣重要性可見(jiàn)一斑。注意和IP地址區(qū)分把夸。
IP協(xié)議的作用是把數(shù)據(jù)包傳給對(duì)方而线。而要保證確實(shí)傳送到對(duì)方那里铭污,則需要滿足各類條件恋日。其中兩個(gè)重要的條件是IP地址和MAC地址(Media Access Control Address)膀篮。
IP地址指明了節(jié)點(diǎn)被分配到的地址,MAC地址是指網(wǎng)卡所屬的固定地址岂膳。IP地址可以和MAC地址進(jìn)行配對(duì)誓竿。IP地址可變換,但MAC地址基本不會(huì)更改谈截。
1.1.2 ARP(Address Resolution Protocol)
該協(xié)議是一種用以解析地址的協(xié)議筷屡,根據(jù)通信方的IP地址就可以反查初對(duì)應(yīng)的MAC地址。
IP間的通信依賴MAC地址簸喂。在網(wǎng)絡(luò)上毙死,通信的雙方在同一局域網(wǎng)(LAN)內(nèi)的情況是很少的,通常是要經(jīng)過(guò)多臺(tái)計(jì)算機(jī)和網(wǎng)絡(luò)設(shè)備中專才能連接到對(duì)方喻鳄。而在進(jìn)行中轉(zhuǎn)時(shí)扼倘,會(huì)利用下一站中轉(zhuǎn)設(shè)備的MAC地址來(lái)搜索下一中轉(zhuǎn)目標(biāo)。這時(shí)會(huì)采用ARP協(xié)議除呵。(類似快遞寄送)
1.1.3 確痹倬眨可靠性的TCP協(xié)議 --- 三次握手
按層次分,TCP位于傳輸層颜曾,提供可靠的字節(jié)流服務(wù)纠拔。
所謂的字節(jié)流服務(wù)(Byte Stream Service)是指,為了方便傳輸泛豪,將大塊數(shù)據(jù)分割成以報(bào)文段(segment)為單位的數(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ù)能到達(dá)目標(biāo)
為了準(zhǔn)確無(wú)誤地將數(shù)據(jù)送達(dá)目的處匹耕,TCP協(xié)議采用了三次握手(three-way handshaking)策略。用TCP協(xié)議把數(shù)據(jù)包送出去之后荠雕,TCP不會(huì)對(duì)傳送后的情況置之不理稳其,它一定會(huì)向?qū)Ψ酱_認(rèn)是否成功送達(dá)。握手過(guò)程使用了TCP的標(biāo)志(flag) --SYN(synchronize)和ACK(acknowledgement)炸卑。
發(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è)階段莫名中斷,TCP協(xié)議會(huì)再次以相同的順序發(fā)送相同的數(shù)據(jù)包洒敏。除了上述三次握手龄恋,TCP協(xié)議還有其他各種手段來(lái)保證通信的可靠性。
1.2 負(fù)責(zé)域名解析的DNS服務(wù)
DNS(Domain Name System)服務(wù)是和http協(xié)議一樣位于應(yīng)用層的協(xié)議凶伙。它提供域名到IP地址之間的解析服務(wù)郭毕。
計(jì)算機(jī)既可以被賦予IP地址,也可以被賦予主機(jī)名和域名函荣。比如www.issimon.me显押。
用戶通常使用主機(jī)名或域名來(lái)訪問(wèn)對(duì)方的計(jì)算機(jī),而不是直接通過(guò)IP地址的訪問(wèn)傻挂。因?yàn)榕cIP地址的一組純數(shù)字相比乘碑,用字母配合數(shù)字的表示形式來(lái)制定計(jì)算機(jī)名更符合人類的記憶習(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地址反查域名的服務(wù)睦疫。
1.3 各種協(xié)議與HTTP協(xié)議的關(guān)系
1.4 URI和URL
與URI(Uniform Resource Identifier害驹,統(tǒng)一資源標(biāo)識(shí)符)相比,我們跟熟悉URL(Uniform Resource Locator蛤育,統(tǒng)一資源定位符)宛官。URL正是使用Web瀏覽器等訪問(wèn)Web頁(yè)面時(shí)需要輸入的網(wǎng)頁(yè)地址。比如瓦糕,下圖的https://issimon.me
1.4.1 Uniform Resource Identifier
Uniform
規(guī)定統(tǒng)一的格式可方便處理多種不同類型的資源底洗,而不用根據(jù)上下文環(huán)境來(lái)識(shí)別資源制定的訪問(wèn)方式。另外咕娄,加入新增的協(xié)議方案也更容易(http或ftp)
Resource
資源的定義是“可標(biāo)識(shí)的任何東西”/不僅是文檔文件亥揖,圖像或服務(wù)等能夠區(qū)別于其他類型的,全都可作為資源圣勒,另外费变,資源不僅可以是單一的,也可以是多數(shù)的集合體圣贸。
Identifier
表示可標(biāo)示的對(duì)象挚歧,也稱為標(biāo)識(shí)符。
綜上吁峻,URI就是由某個(gè)協(xié)議方案標(biāo)示的資源定位標(biāo)識(shí)符滑负。協(xié)議方案是指訪問(wèn)資源所使用的協(xié)議類型名稱在张。
采用HTTP協(xié)議時(shí),協(xié)議方案就是http矮慕,除此之外瞧掺,還有ftp,mailto凡傅,telnet,file等肠缔。標(biāo)準(zhǔn)的URI協(xié)議方案由30種左右夏跷,由隸屬于國(guó)際互聯(lián)網(wǎng)資源管理的非盈利社團(tuán)ICANN(Internet Corporation for Assigned Names and Numbers Authority,互聯(lián)網(wǎng)號(hào)碼分配局)管理頒布明未。
未完待續(xù)…