大家好淑履,我是彬彬醬隶垮,目前在騰訊從事Web后端開(kāi)發(fā)。
這個(gè)專題整理了關(guān)于網(wǎng)絡(luò)的基礎(chǔ)知識(shí)秘噪,適合大家進(jìn)行入門級(jí)學(xué)習(xí)狸吞。
由于HTTP協(xié)議是基于TCP/IP協(xié)議的,所以篇1先介紹了TCP指煎,IP蹋偏,DNS的含義和特點(diǎn),為大家學(xué)習(xí)HTTP進(jìn)行基本概念講解贯要,其中TCP的三次/四次握手協(xié)議幾乎是面試必問(wèn)暖侨。
超文本傳輸協(xié)議(HTTP,HyperText Transfer Protocol)是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議崇渗。HTTP 也屬于 TCP/IP 協(xié)議族的子集,想要學(xué)習(xí) HTTP ,先需要了解 TCP/IP宅广。
1 - TCP/IP 的分層管理
TCP/IP 協(xié)議族里重要的一點(diǎn)就是分層葫掉,按層次分為以下4層:應(yīng)用層、傳輸層跟狱、網(wǎng)絡(luò)層和數(shù)據(jù)鏈路層俭厚。層次化的好處是,各層之間的協(xié)議改變可以互不影響驶臊,只需要按照接口規(guī)劃好挪挤。
應(yīng)用層
應(yīng)用層決定了向用戶提供應(yīng)用服務(wù)時(shí)通信的活動(dòng)。TCP/IP 協(xié)議族內(nèi)預(yù)存了各類通用的應(yīng)用服務(wù)关翎。包括** HTTP扛门,FTP(File Transfer Protocol,文件傳輸協(xié)議)纵寝,DNS**(Domain Name System论寨,域名系統(tǒng))服務(wù)。傳輸層
傳輸層提供處于網(wǎng)絡(luò)連接中的兩臺(tái)計(jì)算機(jī)之間的數(shù)據(jù)傳輸爽茴。有兩個(gè)性質(zhì)不同的協(xié)議:TCP(Transmission Control Protocol葬凳,傳輸控制協(xié)議)和UDP(User Data Protocol,用戶數(shù)據(jù)報(bào)協(xié)議)網(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)選擇一條傳輸路線。鏈路層
用來(lái)處理連接網(wǎng)絡(luò)的硬件部分琳袄。硬件上的范疇均在鏈路層的作用范圍之內(nèi)江场。
2 - TCP/IP 通信傳輸流
如圖1所示,發(fā)送端在層與層之間傳輸數(shù)據(jù)時(shí)窖逗,每經(jīng)過(guò)一層時(shí)必定會(huì)被打上一個(gè)該層所屬的首部信息址否。反之,接收端在層與層傳輸數(shù)據(jù)時(shí)碎紊,每經(jīng)過(guò)一層時(shí)會(huì)把對(duì)應(yīng)的首部消去佑附。
這種把數(shù)據(jù)信息包裝起來(lái)的做法成為封裝。
3 - 與 HTTP 關(guān)系密切的協(xié)議:IP仗考、TCP 和 DNS
3.1 負(fù)責(zé)傳輸?shù)?IP 協(xié)議
IP(Internet Protocol)網(wǎng)際協(xié)議位于網(wǎng)絡(luò)層音同。其作用是把各種數(shù)據(jù)包傳送給對(duì)方,需要滿足各類條件,最重要的兩個(gè)條件便是 IP 地址 和 MAC 地址。IP 地址可以和 MAC 地址進(jìn)行配對(duì)庭再,IP 地址可變換柜某,但 MAC 地址基本不會(huì)更改雕欺。
在網(wǎng)絡(luò)上人芽,通信的雙方在同一局域網(wǎng)(LAN)內(nèi)的情況是很少的裆熙,通常是經(jīng)過(guò)多臺(tái)計(jì)算機(jī)和網(wǎng)絡(luò)設(shè)備中轉(zhuǎn)才能連接到對(duì)方枫攀。而在進(jìn)行中轉(zhuǎn)時(shí)必指,會(huì)利用下一站中轉(zhuǎn)設(shè)備的 MAC 地址來(lái)搜索下一個(gè)中轉(zhuǎn)目標(biāo)囊咏。這時(shí),會(huì)采用 ARP (Address Resolution Protocol)協(xié)議塔橡。 ARP 是一種用以解析地址的協(xié)議梅割,根據(jù)通信方的 IP 地址就可以反查出對(duì)應(yīng)的 MAC 地址。3.2 確备鸺遥可靠性的 TCP 協(xié)議
TCP 位于傳輸層户辞,提供可靠的字節(jié)流服務(wù)。字節(jié)流服務(wù)是指將大塊數(shù)據(jù)分割成報(bào)文段(segment)為單位的數(shù)據(jù)包進(jìn)行管理
為了保證準(zhǔn)確性惦银,TCP 協(xié)議采用了三次握手(three-way handshaking)策略咆课。握手過(guò)程中使用了 TCP 的標(biāo)志(flag)—— SYN(synchronize)、ACK(acknowledgement)和 FIN(finish)扯俱。
TCP建立連接—三次握手:發(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ò)程見(jiàn)圖2为流。
TCP釋放連接—四次握手:發(fā)送端首先發(fā)送一個(gè)帶 FIN 標(biāo)志的數(shù)據(jù)包給對(duì)方,然后進(jìn)入 FIN-WAIT-1 狀態(tài)让簿。接收端收到后不能立即斷開(kāi)連接(防止數(shù)據(jù)丟失)敬察,先發(fā)送帶 ACK 標(biāo)志的數(shù)據(jù)包,此時(shí)發(fā)送端進(jìn)入 FIN-WAIT-2 狀態(tài)尔当。然后接收端將沒(méi)有傳輸完的數(shù)據(jù)繼續(xù)傳完莲祸,傳完之后發(fā)送一個(gè)帶 ACK 和 FIN 標(biāo)志的數(shù)據(jù)包,通知發(fā)送端椭迎。發(fā)送端發(fā)送 ACK 標(biāo)志的數(shù)據(jù)包給接收端锐帜,并進(jìn)入 TIME-WAIT 狀態(tài),等待 2MSL 后斷開(kāi)連接畜号。
- 3.3 負(fù)責(zé)域名解析的 DNS 服務(wù)
DNS (Domain Name System)服務(wù)是和 HTTP 協(xié)議一樣位于應(yīng)用層的協(xié)議缴阎。它提供域名到 IP 地址之間的解析服務(wù)。用戶通常通過(guò)主機(jī)名或域名來(lái)訪問(wèn)對(duì)方的計(jì)算機(jī)简软,計(jì)算機(jī)則通過(guò) IP 地址查詢服務(wù)器蛮拔。所以 DNS 就提供了域名查找 IP 地址和從 IP 地址反查域名的服務(wù)述暂。
上述三種協(xié)議在 HTTP 通信過(guò)程中的作用可以用一張圖來(lái)表示:
大家好,我是彬彬醬语泽,目前在騰訊從事Web后端開(kāi)發(fā)贸典。
菜鳥必知的 http 知識(shí)專題整理了關(guān)于網(wǎng)絡(luò)的基礎(chǔ)知識(shí)视卢,適合大家進(jìn)行入門級(jí)學(xué)習(xí)踱卵,這個(gè)專題現(xiàn)包含下列文章:
菜鳥必知的 http 知識(shí)(一)—— TCP 握手協(xié)議
菜鳥必知的 http 知識(shí)(二)—— HTTP 協(xié)議特點(diǎn)
菜鳥必知的 http 知識(shí)(三)—— 請(qǐng)求和響應(yīng)報(bào)文
菜鳥必知的 http 知識(shí)(四)—— HTTP 和 HTTPS
菜鳥必知的 http 知識(shí)(五)—— 新技術(shù)的出現(xiàn)
菜鳥必知的 http 知識(shí)(六)—— web的結(jié)構(gòu)組件