一颁虐、域名系統(tǒng)
- DNS 是一個(gè)分布式數(shù)據(jù)庫(kù)蛮原,提供了主機(jī)名和 IP 地址之間相互轉(zhuǎn)換的服務(wù)。這里的分布式數(shù)據(jù)庫(kù)是指另绩,每個(gè)站點(diǎn)只保留它自己的那部分?jǐn)?shù)據(jù)儒陨。
- 域名具有層次結(jié)構(gòu),從上到下依次為:根域名笋籽、頂級(jí)域名蹦漠、二級(jí)域名。
DNS 可以使用 UDP 或者 TCP 進(jìn)行傳輸车海,使用的端口號(hào)都為53笛园。大多數(shù)情況下 DNS 使用 UDP 進(jìn)行傳輸,這就要求域名解析器和域名服務(wù)器都必須自己處理超時(shí)和重傳從而保證可靠性。在兩種情況下會(huì)使用 TCP 進(jìn)行傳輸:
- 如果返回的響應(yīng)超過的 512 字節(jié)(UDP 最大只支持 512 字節(jié)的數(shù)據(jù))研铆。
- 區(qū)域傳送(區(qū)域傳送是主域名服務(wù)器向輔助域名服務(wù)器傳送變化的那部分?jǐn)?shù)據(jù))埋同。
二、常用端口
應(yīng)用 | 應(yīng)用層協(xié)議 | 端口號(hào) | 傳輸層協(xié)議 | 備注 |
---|---|---|---|---|
域名解析 | DNS | 53 | UDP/TCP | 長(zhǎng)度超過 512 字節(jié)時(shí)使用 TCP |
動(dòng)態(tài)主機(jī)配置協(xié)議 | DHCP | 67/68 | UDP | |
簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議 | SNMP | 161/162 | UDP | |
文件傳送協(xié)議 | FTP | 20/21 | TCP | 控制連接 21蚜印,數(shù)據(jù)連接 20 |
遠(yuǎn)程終端協(xié)議 | TELNET | 23 | TCP | |
超文本傳送協(xié)議 | HTTP | 80 | TCP | |
簡(jiǎn)單郵件傳送協(xié)議 | SMTP | 25 | TCP | |
郵件讀取協(xié)議 | POP3 | 110 | TCP | |
網(wǎng)際報(bào)文存取協(xié)議 | IMAP | 143 | TCP |
三莺禁、Web頁(yè)面請(qǐng)求過程
1. DHCP配置主機(jī)信息
- 假設(shè)主機(jī)最開始沒有 IP 地址以及其它信息,那么就需要先使用 DHCP 來(lái)獲取窄赋。
- 主機(jī)生成一個(gè) DHCP 請(qǐng)求報(bào)文哟冬,并將這個(gè)報(bào)文放入具有目的端口 67 和源端口 68 的 UDP 報(bào)文段中。
- 該報(bào)文段則被放入在一個(gè)具有廣播 IP 目的地址(255.255.255.255) 和源 IP 地址(0.0.0.0)的 IP 數(shù)據(jù)報(bào)中忆绰。
- 該數(shù)據(jù)報(bào)則被放置在 MAC 幀中浩峡,該幀具有目的地址 FF:FF:FF:FF:FF:FF,將廣播到與交換機(jī)連接的所有設(shè)備错敢。
- 連接在交換機(jī)的 DHCP 服務(wù)器收到廣播幀之后翰灾,不斷地向上分解得到 IP 數(shù)據(jù)報(bào)、UDP 報(bào)文段稚茅、DHCP 請(qǐng)求報(bào)文纸淮,之后生成 DHCP ACK 報(bào)文,該報(bào)文包含以下信息:IP 地址亚享、DNS 服務(wù)器的 IP 地址咽块、默認(rèn)網(wǎng)關(guān)路由器的 IP 地址和子網(wǎng)掩碼。該報(bào)文被放入 UDP 報(bào)文段中欺税,UDP 報(bào)文段被放入 IP 數(shù)據(jù)報(bào)中侈沪,最后放入 MAC 幀中。
- 該幀的目的地址是請(qǐng)求主機(jī)的 MAC 地址晚凿,因?yàn)榻粨Q機(jī)具有自學(xué)習(xí)能力亭罪,之前主機(jī)發(fā)送了廣播幀之后就記錄了 MAC 地址到其轉(zhuǎn)發(fā)接口的交換表項(xiàng),因此現(xiàn)在交換機(jī)就可以直接知道應(yīng)該向哪個(gè)接口發(fā)送該幀歼秽。
- 主機(jī)收到該幀后应役,不斷分解得到 DHCP 報(bào)文。之后就配置它的 IP 地址哲银、子網(wǎng)掩碼和 DNS 服務(wù)器的 IP 地址扛吞,并在其 IP 轉(zhuǎn)發(fā)表中安裝默認(rèn)網(wǎng)關(guān)。
2. ARP解析MAC地址
- 主機(jī)通過瀏覽器生成一個(gè) TCP 套接字荆责,套接字向 HTTP 服務(wù)器發(fā)送 HTTP 請(qǐng)求。為了生成該套接字亚脆,主機(jī)需要知道網(wǎng)站的域名對(duì)應(yīng)的 IP 地址做院。
- 主機(jī)生成一個(gè) DNS 查詢報(bào)文,該報(bào)文具有 53 號(hào)端口,因?yàn)?DNS 服務(wù)器的端口號(hào)是 53键耕。
- 該 DNS 查詢報(bào)文被放入目的地址為 DNS 服務(wù)器 IP 地址的 IP 數(shù)據(jù)報(bào)中寺滚。
- 該 IP 數(shù)據(jù)報(bào)被放入一個(gè)以太網(wǎng)幀中,該幀將發(fā)送到網(wǎng)關(guān)路由器屈雄。
- DHCP 過程只知道網(wǎng)關(guān)路由器的 IP 地址村视,為了獲取網(wǎng)關(guān)路由器的 MAC 地址,需要使用 ARP 協(xié)議酒奶。
- 主機(jī)生成一個(gè)包含目的地址為網(wǎng)關(guān)路由器 IP 地址的 ARP 查詢報(bào)文蚁孔,將該 ARP 查詢報(bào)文放入一個(gè)具有廣播目的地址(FF:FF:FF:FF:FF:FF)的以太網(wǎng)幀中,并向交換機(jī)發(fā)送該以太網(wǎng)幀惋嚎,交換機(jī)將該幀轉(zhuǎn)發(fā)給所有的連接設(shè)備杠氢,包括網(wǎng)關(guān)路由器。
- 網(wǎng)關(guān)路由器接收到該幀后另伍,不斷向上分解得到 ARP 報(bào)文鼻百,發(fā)現(xiàn)其中的 IP 地址與其接口的 IP 地址匹配,因此就發(fā)送一個(gè) ARP 回答報(bào)文摆尝,包含了它的 MAC 地址温艇,發(fā)回給主機(jī)。
3.DNS解析域名
- 知道了網(wǎng)關(guān)路由器的 MAC 地址之后堕汞,就可以繼續(xù) DNS 的解析過程了勺爱。
- 網(wǎng)關(guān)路由器接收到包含 DNS 查詢報(bào)文的以太網(wǎng)幀后,抽取出 IP 數(shù)據(jù)報(bào)臼朗,并根據(jù)轉(zhuǎn)發(fā)表決定該 IP 數(shù)據(jù)報(bào)應(yīng)該轉(zhuǎn)發(fā)的路由器邻寿。
- 因?yàn)槁酚善骶哂袃?nèi)部網(wǎng)關(guān)協(xié)議(RIP、OSPF)和外部網(wǎng)關(guān)協(xié)議(BGP)這兩種路由選擇協(xié)議视哑,因此路由表中已經(jīng)配置了網(wǎng)關(guān)路由器到達(dá) DNS 服務(wù)器的路由表項(xiàng)绣否。
- 到達(dá) DNS 服務(wù)器之后,DNS 服務(wù)器抽取出 DNS 查詢報(bào)文挡毅,并在 DNS 數(shù)據(jù)庫(kù)中查找待解析的域名蒜撮。
- 找到 DNS 記錄之后,發(fā)送 DNS 回答報(bào)文跪呈,將該回答報(bào)文放入 UDP 報(bào)文段中段磨,然后放入 IP 數(shù)據(jù)報(bào)中,通過路由器反向轉(zhuǎn)發(fā)回網(wǎng)關(guān)路由器耗绿,并經(jīng)過以太網(wǎng)交換機(jī)到達(dá)主機(jī)苹支。
4. HTTP請(qǐng)求頁(yè)面
- 有了 HTTP 服務(wù)器的 IP 地址之后,主機(jī)就能夠生成 TCP 套接字误阻,該套接字將用于向 Web 服務(wù)器發(fā)送 HTTP GET 報(bào)文债蜜。
- 在生成 TCP 套接字之前晴埂,必須先與 HTTP 服務(wù)器進(jìn)行三次握手來(lái)建立連接。生成一個(gè)具有目的端口 80 的 TCP SYN 報(bào)文段寻定,并向 HTTP 服務(wù)器發(fā)送該報(bào)文段儒洛。
- HTTP 服務(wù)器收到該報(bào)文段之后,生成 TCP SYN ACK 報(bào)文段狼速,發(fā)回給主機(jī)琅锻。
- 連接建立之后,瀏覽器生成 HTTP GET 報(bào)文向胡,并交付給 HTTP 服務(wù)器恼蓬。
- HTTP 服務(wù)器從 TCP 套接字讀取 HTTP GET 報(bào)文,生成一個(gè) HTTP 響應(yīng)報(bào)文捷枯,將 Web 頁(yè)面內(nèi)容放入報(bào)文主體中滚秩,發(fā)回給主機(jī)。
- 瀏覽器收到 HTTP 響應(yīng)報(bào)文后淮捆,抽取出 Web 頁(yè)面內(nèi)容郁油,之后進(jìn)行渲染,顯示 Web 頁(yè)面攀痊。