TCP/IP協議基礎--應用層協議


應用層協議:

傳輸層之上,便是應用層。傳輸層的UDP報文和TCP報文段的數據部分就是應用層交付的數據,不同類型的網絡應用有不同的通信規則,

因此應用層協議是多種多樣的,比如 DNS、FTP、Telnet、SMTP、HTTP、RIP、NFS 等協議都是用於解決其各自的一類問題。

DNS協議:

DNS協議基於UDP,使用端口53,由數字組成的IP地址很難記憶,所以我們上網使用網站IP地址的別名--域名,實際使用中,域名與IP地址是對應的,

這種對應關系保存在DNS服務器中,在瀏覽器輸入一個域名后,會有DNS服務器將域名解析為對應的IP地址,注意這和ARP協議的不同之處:DNS提

供的域名是與IP地址的對應關系,而ARP提供的是IP地址和MAC地址的對應關系。

DNS 服務器是個分層次的系統:

  • (1)根 DNS 服務器 :全世界共有 13 台根域名服務器,編號 A 到 M,其中大部分位於美國。

  • (2)頂級(TLD)DNS 服務器 :負責如 com 、org 、edu 等頂級域名和所有國家的頂級域名(如 cn 、uk 、jp )。

  • (3)權威 DNS 服務器 :大型組織、大學、企業的域名解析服務。

  • (4)本地 DNS 服務器 :通常與我們主機最近的 DNS 服務器。

而域名解析的過程,有迭代查詢和遞歸查詢兩種方式:

 

主機向 DNS 服務器發出的查詢叫做DNS 報文,大致結構:

 

DNS 問答報文的內容,都是 IP 和域名的對應信息,關於 DNS 首部和內容 各字段這里不做詳細介紹。

 

 

DNS 緩存和 hosts 文件

剛才 DNS 解析查詢過程的圖中,共發出了 8 份 DNS 報文,這是非常消耗時間的,所以實際應用上使用 DNS 緩存 :當一個 DNS 服務器接收到一個 DNS 回答后,

會將其信息緩存一段時間,當再有一個對相同域名的查詢時,便可直接回復。

通過 DNS 緩存,其實很多查詢都只需要本地 DNS 服務器便可完成。

有“翻牆”愛好的同學應該知道 hosts 文件,其實 hosts 文件可以看作是一個小型的 DNS 服務器。

使用命令打開 hosts 文件:

sudo gedit /etc/hosts 

查看文件內容,可以發現里面全是類似下圖中的 IP 和域名對應記錄:

7-2-4

在實際上網過程中,域名解析的的優先順序是:先在 DNS 緩存查詢,若沒有找到記錄,再查詢 hosts 文件,若還是沒找到記錄,再向 DNS 服務器發出 DNS 查詢報文。

 

FTP協議:

FTP (File Transfer Protocol 文件傳輸協議) 基於 TCP,使用端口號 20(數據)和 21(控制)。

它的主要功能是減少或消除在不同操作系統下處理文件的不兼容性,以達到便捷高效的文件傳輸效果。

  • FTP 只提供文件傳輸的基本服務,它采用 客戶端—服務器 的方式,一個 FTP 服務器可同時為多個客戶端提供服務。

  • 在進行文件傳輸時,FTP 的客戶端和服務器之間會建立兩個 TCP 連接:21 號端口建立控制連接,20 號端口建立數據連接。

  • FTP 的傳輸有兩種方式:ASCII 傳輸模式和二進制數據傳輸模式。

HTTP協議:

HTTP (HyperText Transfer Protocol 超文本傳輸協議) 基於 TCP,使用端口號 80 或 8080。

每當你在瀏覽器里輸入一個網址或點擊一個鏈接時,瀏覽器就通過 HTTP 協議將網頁信息從服務器提取再顯示出來,這是現在使用頻率最大的應用層協議。

這個原理很簡單:

  • 點擊一個鏈接后,瀏覽器向服務器發起 TCP 連接;

  • 連接建立后瀏覽器發送 HTTP 請求報文,然后服務器回復響應報文;

  • 瀏覽器將收到的響應報文內容顯示在網頁上;

  • 報文收發結束,關閉 TCP 連接。

HTTP 報文會被傳輸層封裝為 TCP 報文段,然后再被 IP 層封裝為 IP 數據報。HTTP 報文的結構:

7-4-1

可見報文分為 3 部分:

  • (1)開始行:用於區分是請求報文還是響應報文,請求報文中開始行叫做請求行,而響應報文中,開始行叫做狀態行。在開始行的三個字段之間都用空格分開,結尾處 CRLF 表示回車和換行。

  • (2)首部行:用於說明瀏覽器、服務器或報文主體的一些信息。

  • (3)實體主體:請求報文中通常不用實體主體。

請求報文的方法字段是對所請求對象進行的操作,而響應報文的狀態碼是一個 3 位數字,分為 5 類 33 種:

  • 1xx 表示通知信息,如收到或正在處理。

  • 2xx 表示成功接收。

  • 3xx 表示重定向。

  • 4xx 表示客戶的差錯,如 404 表示網頁未找到。

  • 5xx表示服務器的差錯,如常見的 502 Bad Gateway。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM