應用層
應用層工作在 TCP/IP 協議棧的最上層,日常中使用的軟件都工作在這一層,如 QQ,微信等。該層主要是產生數據,保證和其他系統上的應用進行相互通信。
常見的應用層協議如下圖所示:
可以看到,我們熟悉的 HTTP,HTTPS,SSH,FTP 處於數據的可靠性,全都採用了 TCP 作爲傳輸層的協議。而 DNS 有些特殊,既有 TCP,又有 UDP 的協議。
DNS
域名的作用:
爲了方便人類記憶而設計,否則的話 IP 地址是無法容易記憶的。
DNS 的作用:
由於數據包在網絡層傳輸時,是要通過 IP 進行轉發的。所以需要將域名轉化成 IP,這個過程就是由 DNS 服務器所提供的。
DNS 的原理:
在 DNS 服務器上會有一張表,記錄域名和 IP 的映射關係。比如在瀏覽器上輸入 www.baidu.com
後,會先產生一個 DNS 請求報文,通過運營商的路由器發給 DNS 服務器,然後 DNS 會查詢所需域名的 IP 地址,然後進行 DNS 回覆把對應 IP 告訴客戶端。這時客戶端拿到真的 IP 地址就可以和淘寶服務器進行交互了。
這裏我們請求下 www.sogou.com
的地址:
緊接着後面就是建立 TCP 三次握手的過程,然後訪問搜狗服務器。
HTTP
- HTTP 工作在應用層
- 使用客戶端和服務器的架構(C/S)
- 無狀態, 無連接的協議
- 獨立於物理層,沒有限制
DHCP
一臺主機要接入因特網,需要配置 IP 地址、子網掩碼、默認網關和域名服務器。動態主機配置協議(DHCP)提供了分配的服務
DHCP 的分配方式是:網絡中至少有一臺 DHCP 服務器在工作,它會通過端口 67 監聽網絡的 DHCP 請求,並與客戶端協商配置客戶機的 TCP/IP 環境
DHCP 協議使用 UDP 作爲運輸層協議,DHCP 服務器端口號是 67,客戶端的端口號是 68. DHCP 服務器管理一個或多個 IP 地址域,稱爲地址池。當收到客戶端的請求後,會從地址池中取出一個未用的地址分配給客戶端,稱爲出租。
DHCP 的原理
DHCP Discover 和 Request 報文都是廣播
DHCP Offer 和 Ack 報文都是單播
發現 DHCP 服務器
客戶端啓動後,會向網絡廣播一個 DHCP Discover 報文,尋找 DHCP 服務器。此時由於客戶端不知道服務器的地址,所以要發送廣播。本地網絡中的每個主機都會收到,但是隻有 DHCP 服務纔會響應。
報文如下:
提供 IP 租用地址
DHCP 服務器收到 DHCP Discover 報文後,從還沒出租的地址範圍內,選擇最前面的空白 IP 地址,向客戶端發送 DHCP Offer 報文。
報文如下:
接收租用並確認
客戶端可能會收到一個或多個 DHCP Offer 報文(可能存在多個 DHCP 服務器),客戶端從中選擇一個 DHCP 服務器,並廣播 DHCP Request 報文。在報文中必須指明選擇的服務器
報文如下:
確認租約
被選中的服務情收到 DHCP Request 後,迴應 DHCP Ack 報文,地址分配完成
報文如下:
DHCP 在路由器上的配置
Router>en
Router#>conf t
Router(config)#ho DHCP-SERVER
DHCP-SERVER(config)#ip dhcp pool Central
DHCP-SERVER(dhcp-config)#network 10.1.1.0 255.255.255.0
DHCP-SERVER(dhcp-config)#default-router 10.1.1.254
DHCP-SERVER(dhcp-config)#dns-server 8.8.4.4
DHCP-SERVER(dhcp-config)#lease 0 1 1
r(config)#ip dhcp excluded-address 10.1.1.1 10.1.1.10
DHCP-SERVER(config)int e 0/0
DHCP-SERVER(config)ip add 10.1.1.1 255.255.255.0
DHCP-SERVER(config)no shu