應用層 - 重學計算機網絡系列(2)

前言

  • 這是關於計算機網絡的一系列專題,後續會不斷更新。
  • 學習資料來源於 《計算機網絡》(第七版) 和《圖解HTTP》
  • 本篇文章主要分享應用層下面的幾個協議:DNS域名解析;FTP文件傳輸協議;DHCP動態主機配置協議;電子郵件的SMTP,POP3協議
  • 至於HTTP協議做爲重中之重,會單獨留篇幅來分享。

應用層

每一個應用層協議都是爲了解決某一類應用問題,而問題的解決又必須經過位於不一樣主機中的多個應用進程之間的通訊和協同工做來完成。應用層的具體內容就是精肯定義這些通訊規則。具體來講,應用層協議應當定義:數據庫

  • 應用進程交換的報文類型,如請求報文和響應報文。
  • 各類報文類型的語法,如報文中的各個字段以及詳細描述。
  • 字段的語義,即包含在字段中的信息的含義。
  • 進程什麼時候,如何發送報文,以及對報文進行響應的規則。

域名系統DNS

概述

何爲DNS?

域名系統DNS是互聯網使用的命名系統,用來把便於人們使用的機器名字裝換爲IP地址。域名系統就是名字系統。爲何不叫「名字」而叫「域名」呢?是由於在這種互聯網的命名系統中使用了許多的「域」。瀏覽器

爲何用戶要用域名來訪問?

用戶與互聯網上某臺主機通訊時,必須知道對方的IP地址。然而用戶很難記住長達32位的二進制主機地址。域名系統DNS可以把互聯網上的主機名字轉換爲IP地址。緩存

爲何機器在處理IP數據報時要使用IP地址而不使用域名呢?

由於IP地址的長度是固定32位的(若是是IPv6,就是128位),可是域名卻不是固定的,機器處理起來很難。服務器

DNS的結構

互聯網採用層次樹狀結構的命名方法,並使用分佈式的域名系統DNS。網絡

互聯網的域名系統DNS被設計成爲一個聯機分佈式數據庫系統,並採用客戶服務器方式。DNS讓大多數名字都在本地進行解析,僅少許解析須要在互聯網上通訊,所以NDS系統效率很高。因爲DNS是分佈式系統,即使單個計算機出了故障,也不會妨礙整個DNS系統正常運行。分佈式

域名到IP地址的解析是由分佈在互聯網上的許多域名服務器程序共同完成的。域名服務器程序在專設的結點上運行,而人們也常把運行域名服務器程序的機器稱爲 域名服務器學習

解析過程

過程以下:當一個應用程序須要把主機名解析爲IP地址時,該應用進程就調用解析程序,併成爲DNS的一個客戶,把待解析的域名放在DNS請求報文中,以UDP用戶數據報方式發給本地域名解析器,本地域名服務器查找後,就返回對應的IP地址。應用進程得到目的的IP地址後便可進行通訊。若本地域名服務器沒法解析,就向上一層的域名服務器上查找,直到找到。網站

域名結構

早期由於用戶數少,用了非等級的名字空間。可是隨着用戶急劇增長,採用了層次樹狀結構的命名方法。操作系統

mail.cctv.com中 com 爲頂級域名,cctv爲二級域名,mail爲三級域名。級別最低的寫在最左邊,而級別最高的頂級域名寫在最右邊。計算機網絡

DNS既不規定一個域名須要包含多少個下級域名,也不規定每一級的域名錶明什麼意思。各級域名由其上一級的域名管理機構管理,最頂級的域名由ICANN進行管理。用這種方法可使每一個域名在整個互聯網範圍內是惟一的,而且容易設計出一種查找域名的機制。

  • 通用頂級域名:com(公司企業) net(網絡服務機構) org(非營利性組織) int(國際組織) edu(美國專用教育機構) gov(美國政府機構) mil(美國軍事機構) 等等共有20個。
  • 國家頂級域名: cn(中國) us(美國) 等等
  • 反向域名:arpa,用於反向解析

互聯網域名空間

域名服務器

理論上,可讓每一級的域名都都有一個相對應的域名服務器,可是這樣會形成服務器數量過多,效率下降。因此採用劃分區的方法來解決這個問題。

一個服務器所負責管轄的範圍叫作。每一個區設置相對應的權限域名服務器,用來保存該區全部域名到IP地址的映射

DNS服務器的管轄範圍不是以域爲單位,而是以區爲單位。區是服務器實際管轄的範圍,區可能等於或小於域,但必定不能大於域。一個域下面可能會有一個或多個區。

域名服務器的分類

  • 根域名服務器。最高層次,最重要的域名服務器。
  • 頂級域名服務器。諸如com cn gov 這種的。
  • 權限域名服務器。負責一個區的域名服務器。
  • 本地域名服務器。當一臺主機發出DNS查詢請求,這個查詢請求報文就發送給本地域名服務器。每一個ISP,或一個大學均可以擁有一個本地域名服務器。本地域名服務器離用戶較近,通常不超過幾個路由器的距離。當所要查詢的主機也同屬於同一個ISP時,該本地域名服務器當即就能把要查詢的主機名轉換爲她的IP地址,而不須要去詢問其餘的域名服務器。

輔助域名服務器

爲了提升域名服務器的可靠性,DNS域名服務器都把數據複製到幾個域名服務器來保存,其中一個是主域名服務器,其餘的是輔助域名服務器。當主域名服服務器出現故障,輔助域名服務器能夠確保工做不會中段。

域名查詢的兩種方式

  • 遞歸查詢

    假如主機A想訪問主機B。主機A輸入B的域名後,先是到本地域名服務器查詢,查詢不到,本地域名服務器以DNS客戶的身份表明主機A去訪問根域名服務器,若仍是查詢不到,根域名服務器如法炮製去到下面一級的頂級域名服務器查詢,直到拿到主機B的IP地址。而後原路返回,給主機A。

  • 迭代查詢

    當根域名服務器收到本地域名服務器發出的請求報文時,要麼給出IP地址,要麼告訴本地域名服務器「下一步應該向哪個域名服務器進行查詢」,直到有域名服務器給出IP地址。

注意:主機向本地域名服務器查詢通常採用遞歸查詢。本地域名服務器向根域名服務器查詢一般採用迭代查詢。

高速緩存

  • 爲了提升DNS查詢效率,並減輕根域名服務器的負荷和減小互聯網上的DNS查詢報文數量,在域名系統服務器中普遍使用了高速緩存。高速緩存用來存放最近查詢過的域名以及從何處得到域名映射信息的記錄。
  • 許多主機在啓動時從本地域名服務器下載名字和地址的所有數據庫,維護存放本身最近使用的域名的高速緩存,而且在緩存中找不到名字時才使用域名服務器。

總結DNS解析全過程

  1. 瀏覽器輸入一個地址,按下回車。
  2. 若是地址的信息未寫完整,(完整的格式應該是這樣:www.baidu.com::8080),那麼如今的瀏覽器會自動幫你補齊協議號和端口號。
  3. 瀏覽器獲得完整地址會開始解析,獲取改地址的協議,各級域名,端口,路徑。
  4. 比對存儲在本地的高速緩存,若是有,就直接獲得IP地址了。
  5. 若是沒有,則向本地域名服務器發出查詢請求。(遞歸查詢)
  6. 若是本地域名服務器沒有,那麼本地域名服務器會直接向根域名服務器(最頂層)發出查詢請求。此時,根域名服務器要麼給出IP地址,要麼告訴本地域名服務器「下一步應該向哪個域名服務器進行查詢」,直到給出IP地址。(迭代查詢)

文件傳輸協議FTP

文件傳送協議FTP是互聯網上使用最普遍的文件傳送協議。

  • FTP提供交互式的訪問
  • 容許客戶指明文件的類型與格式
  • 容許文件具備存取權限(訪問文件的用戶必須通過受權,並輸入有效的口令)
  • FTP屏蔽了個各計算機系統的系統的細節,於是適合於在異構網絡中任意計算機之間傳送文件。

特色

  • 基於TCP的FTP和基於UDP的簡單文件傳送協議TFTP,它們都是文件共享協議中的一大類,即複製整個文件。若要存取一個文件,就必須先得到一個本地的文件副本。若是要修改文件只能對文件的副本進行修改,而後再將修改後的文件副本傳回到原節點。
  • 聯機訪問。容許多個程序同時對一個文件進行存取。

FTP基本工做原理

兩臺主機之間傳送文件看似是很簡單,每每十分困難。

緣由是衆多的計算機廠商研製出的文件系統多達數百種,且差異很大。

常常遇到的問題是:

  1. 計算機存儲數據的格式不一樣。
  2. 文件的目錄結構和文件命名的規定不一樣。
  3. 對於相同的文件存取功能,操做系統使用的命令不一樣。
  4. 訪問控制方法不一樣。

文件傳送協議FTP只提供文件傳送的一些基本的服務,主要功能是減小或消除在不一樣操做系統下處理文件的不兼容性

FTP協議分客戶端和服務端。一個FTP服務端能夠爲多個客戶端提供服務。

服務端分兩類:主進程,從屬進程。主進程負責接受新請求,若干個從屬進程負責處理單個進程。

客戶端和服務端都有兩個從屬進程:控制進程和數據傳送進程
控制鏈接會在整個會話期間一直保持打開。
數據鏈接用來傳輸文件,傳輸完成就關閉數據傳送鏈接。

FTP文件傳輸過程總結

  • 客戶端發送請求,服務端提供文件。
  • 客戶端和服務端都有兩個從屬進程:控制進程和數據傳送進程
  • 控制進程會在整個會話期間一直保持打開,表示一直在鏈接,有點像電路交換。
  • 數據鏈接用來傳輸文件,傳輸完成就關閉數據傳送鏈接。

TFTP簡單文件傳送協議

它是一個很小且易於實現的文件傳送協議。

優勢:使用UDP數據報。TFTP代碼所佔的內存較小。

TFTP只支持文件傳輸而不支持交互。

發的一方:發完數據後在規定時間內收不到確認就要重複發送數據PDU。

FTP下載文件(經過瀏覽器方式)

  1. 輸入地址:協議+主機號。因此是"ftp://127.0.0.1" 這種形式的。
  2. 接着會讓你登陸本身主機的用戶名和密碼。
  3. 接着進入FTP服務器,選擇要下載的文件,保存就能夠了。
  4. 用FTP協議下載文件時,本身的瀏覽器要打開(FTP客戶端),同時FTP服務端也會打開讓客戶端去下載。

電子郵件

概述

1982年,ARPANET的電子郵件問世。

電子郵件最重要的兩個標準是:簡單郵件傳送協議SMTP和互聯網文本報文格式[RFC 5322]

因爲互聯網的SMTP只能傳送可打印的7位ASCII碼郵件,所以1993年提出通用互聯網郵件擴充MIME。MIME在郵件首部中說明了郵件的數據類型(文本,聲音,圖像等)。在MIME郵件中可同時傳送多種類型的數據。

電子郵件系統構成

一個電子郵件系統應由三個主要組成構建:用戶代理,郵件服務器,郵件發送協議和郵件讀取協議(如POP3)。

電子郵件的最主要的組成構建

發件人用戶代理(SMTP客戶) -> 發送郵件SMTP -> 發送方郵件服務器(SMTP服務器,SMTP客戶) -> 發送郵件SMTP -> 接收方郵件服務器(SMTP服務器,POP3服務器) -> 讀取郵件POP3 -> 收件人用戶代理(POP3客戶)

用戶代理

用戶代理UA就是用戶與電子郵件系統的接口,在大多數狀況下它就是運行在用戶電腦中的一個程序。所以用戶代理又稱爲電子郵件客戶端軟件。用戶代理提供一個很友好的接口(主要是窗口界面)來發送和接收郵件。微軟的outlook和張小龍的Foxmail都是很受歡迎的電子郵件用戶代理。

郵件服務器

互聯網上有許多郵箱服務器可供用戶選擇。郵件服務器24小時不間斷的工做,而且具備很大容量的郵件信箱。

郵件服務器的功能是發送和接收郵件,同時還要向發件人報告郵件傳送的結果(已發送,已拒絕,丟失等)。

郵件服務器需使用兩種不一樣的協議:SMTP用於傳送郵件;POP3用於用戶代理從郵件服務器讀取郵件。

郵件服務器便是客戶端,也是服務器。A服務器向B服務器發送郵件,A就是SMTP客戶,B是SMTP服務器;反之亦然。

TCP/IP 體系的電子郵箱系統規定電子郵箱地址的格式以下: 用戶名 @ 郵件服務器的域名。

SMTP簡單郵件傳送協議

SMTP規定了在兩個相互通訊的SMTP進程之間應如何交換信息。至於郵件內容格式,郵件如何存儲,以及郵件系統應以多快的速度來發送郵件,SMTP未作規定。 SMTP通訊三個階段:創建鏈接 -> 郵件傳送 -> 鏈接釋放。具體內容就不展開了。

POP3郵件讀取協議

郵局協議POP是一個很是簡單,但功能有限的郵件讀取協議,通過幾回更新,如今使用的是1996年版本POP3,它已經成爲互聯網的正式標準。 另一個郵件讀取協議是IMAP。

最後在強調一下,不要把郵件讀取協議POP3或IMAP與郵件傳輸協議SMTP弄混。發件人的用戶代理向發送方郵件服務器發送郵件,以及發送方郵件服務器向接收方郵件服務器發送郵件,都是使用SMTP協議。只有用戶代理從接收方郵件服務器上讀取郵件才使用POP3。

動態主機配置協議DHCP

背景

鏈接到互聯網的計算機的協議軟件須要配置的項目包括:

  • IP地址
  • 子網掩碼
  • 默認路由器的IP地址
  • 域名服務器的IP地址

爲了省去給計算機配置IP地址的麻煩, 可否在計算機的生產過程當中,事先給一臺計算機配置好一個惟一的IP地址。(如同每個以太網適配器擁有一個惟一的硬件的地址)

爲何上個網要這麼麻煩?能不被一次性配置好而後永遠均可以上網了。

這顯然是不行的。這是由於IP地址不只包括了主機號,並且還包括了網絡號。

一個IP地址指出了一臺計算機鏈接在哪個網絡上。當計算機還在生產時,沒法知道它在出廠後將被鏈接在哪個網絡上。所以,須要鏈接到互聯網的計算機,必須對IP地址等項目進行協議配置。

能夠人工配置嗎?

用人工進行配置很不方便,且容易出錯。

動態IP

動態IP指的是在須要的時候才進行IP地址分配的方式。所謂動態就是指當你每一次上網時,電信會隨機分配一個IP地址。

因爲IP地址資源很寶貴,所以大部分用戶上網都是使用動態IP地址的,好比經過Modem、ISDN、ADSL、有線寬頻、小區寬頻等方式上網的計算機,都是在每次上網的時候臨時分配一個IP地址。

IP地址是一個32位二進制數的地址,理論上講, 有大約40億(2 的32次方)個可能的地址組合,這彷佛是一個很大的地址空間。實際上,根據網絡ID和主機ID的不一樣位數規則,能夠將IP地址分爲A (7 位網絡ID和24位主機ID)、B (14位網絡ID和16位主機ID)、C (21位網絡ID和8 位主機ID)三類,因爲歷史緣由和技術發展的差別,A 類地址和B 類地址幾乎分配殆盡,可以供全球各國各組織分配的只有C 類地址。因此說IP地址是一種很是重要的網絡資源。

對於一個設立了因特網服務的組織機構,因爲其主機對外開放了諸如WWW 、FTP 、E-mail等訪問服務,一般要對外公佈一個固定的IP地址,以方便用戶訪問。固然,數字IP不便記憶和識別,人們更習慣於經過域名來訪問主機,而域名實際上仍然須要被域名服務器(DNS )翻譯爲IP地址。例如,你的主頁地址,用戶能夠方便地記憶和使用,而域名服務器會將這個域名翻譯爲101.12.123.234,這纔是你在網上的真正地址。

而對於大多數撥號上網的用戶,因爲其上網時間和空間的離散性,爲每一個用戶分配一個固定的IP地址(靜態IP)是很是不可取的,這將形成IP地址資源的極大浪費。所以這些用戶一般會在每次撥通ISP 的主機後,自動得到一個動態的IP地址,該地址固然不是任意的,而是該ISP 申請的網絡ID和主機ID的合法區間中的某個地址。撥號用戶任意兩次鏈接時的IP地址極可能不一樣,可是在每次鏈接時間內IP地址不變。

靜態IP

靜態IP地址(又稱固定IP地址)是長期分配給一臺計算機或網絡設備使用的 IP 地址。通常來講,通常是特殊的服務器或者採用專線上網的計算機才擁有固定的 IP 地址並且須要比較昂貴的費用。

靜態IP是能夠直接上網的IP段,該IP在ISP裝機時會劃分一個IP地址給你,讓計算機在鏈接網絡時再也不自動獲取網絡地址,避免了網絡鏈接上的困擾,寬帶運營商會提供一根一個IP地址、子網掩碼、網關和DNS服務器地址給用戶。在未使用路由器的狀況下,只須要把這根入戶網線鏈接到電腦上,而且手動設置電腦上的IP地址,這樣電腦才能上網。靜態IP地址不會改變,而且主要用於互聯網上的網站應用或服務。一些遊戲者和使用VOIP的人每每也傾向於選擇靜態IP地址,由於溝通更容易。

動態IP地址和靜態IP地址相對。其一:爲了節省lP資源,經過電話撥號、ADSL虛擬撥號等方式上網的機器是不分配固定IP地址的。而是由ISP動態臨時分配,提升lP地址利用率;其二:在局域網中爲了客戶機設置簡便,也常採用動態分配IP地址,這意味着您每次鏈接互聯網時獲得的lP地址是不一樣的。儘管這不影響您訪問互聯網,可是您的朋友、用戶卻不能訪問到您。由於,他們不知道您的計算機在哪裏。這就像每一個人都有一部電話,但您的電話號碼每天都在改變。

之因此出現了靜態IP和動態IP,是由於IP地址不夠用。如今須要上網的人太多了,可是現有的技術條件知足不了全部人同時上網。

DHCP

DHCP(動態主機配置協議)是一個局域網的網絡協議。指的是由服務器控制一段lP地址範圍,客戶機登陸服務器時就能夠自動得到服務器分配的lP地址和子網掩碼。默認狀況下,DHCP做爲Windows Server的一個服務組件不會被系統自動安裝,還須要管理員手動安裝並進行必要的配置。

它提供一種機制,稱爲即插即用連網。這種機制容許一臺計算機加入新的網絡和獲取IP地址而不用手工參與。

主機連網過程

咱們知道要上網的話,主機必需要有IP地址能夠。

須要IP地址的主機在啓動時就向DHCP服務器廣播發送發現報文(將目的IP設置爲全1,即255.255.255.255)。這時,該主機就成爲了DHCP客戶。

發送廣播報文是由於如今還不知道DHCP服務器在什麼地方,因此纔要發送發現報文。 這臺主機由於尚未IP地址,因此將IP數據報的源IP地址設置爲全0.這樣在本地網絡上的全部主機都能接收到這個廣播報文,但只有DHCP服務器纔對這廣播進行應答:DHCP服務器先在其數據庫中查找該計算機的配置信息,若找到,則返回找到的信息。若找不到,則從服務器的IP地址池中取一個地址分配給該計算機。DHCP服務器的回答報文叫作提供報文,表示提供了IP地址等配置信息。

可是,咱們並不肯意在每一個網絡上都設置一個DHCP服務器,這樣會使DHCP服務器的數量太多。 所以如今是使每一個網絡至少有一個DHCP中繼代理(一般是一臺路由器),它配置了DHCP服務器的IP地址信息。當中繼代理收到主機A的發現報文後,就以單播方式向DHCP服務器轉發此報文,並等待其回答。收到DHCP服務器回答後,中繼代理再把此提供報文發回主機A。

DHCP服務器分配給DHCP客戶的IP地址是臨時的,所以DHCP客戶只能在一段時間內使用這個分配到的IP地址。 DHCP協議稱之爲租用期,但並未規定租用期應取爲多長或至少爲多長,這個數值應由DHCP服務器本身決定。

簡單總結

  • 請求租約
  • 提供租約 (全部收到請求報文的DHCP服務器都會迴應)
  • 選擇IP租約 (可能多個DHCP服務器都會收到發現報文,因此纔要選擇)
  • 確認IP租約 (DHCP服務器發送確認報文)
  • 時間過一半,更新租用期
  • 若DHCP服務器不一樣意,中止使用原IP,客戶須要從新發送發現報文。

DHCP很適合於常常移動位置的計算機。在Windows系統下,控制面板/網絡,找到某個鏈接中的網絡下面的菜單,找到TCP/IP協議後, 點擊屬性按鈕,若選擇自動得到IP地址和自動得到DNS服務器地址,就表示的是使用DHCP協議。

P2P應用

概述

P2P應用就是指具備P2P體系結構的網絡應用,沒有固定的服務器,而絕大部分的交互都是使用對等方式(P2P方式)進行的。

P2P文件分發不須要使用集中式的媒體服務器,而全部的音頻/視頻文件都是在普通的互聯網用戶之間傳輸的。

這實際上是至關於有不少分散在各地的媒體服務器(由普通用戶的計算機充當這種媒體服務器)向其餘用戶提供所要下載的音頻/視頻文件。

這種P2P文件分發方式解決了集中式媒體服務器可能出現的瓶頸問題。

具備集中目錄服務器的P2P工做方式

最先使用P2P工做方式的是Napster(1999年美國一個大學生寫的軟件)。利用這個軟件能夠免費下載各類MP3音樂。

Napster的出現使MP3成爲網絡音樂事實的標準。

Napster可以搜索音樂文件,可以提供檢索功能。全部音樂文件的索引信息都集中存放在Napster目錄服務器中,這個服務器起索引功能,使用者只要查找目錄服務器,就能夠知道應從何處下載MP3文件。

Napster的工做原理

  1. 運行Napster的全部用戶,都必須及時向Napster的目錄服務器報告本身已經存有哪些音樂文件。
  2. Napster目錄服務器就用這些用戶信息創建起一個動態數據庫,集中存儲了全部用戶的音樂文件信息(即對象名和向對應的IP地址)。
  3. 當某個用戶想下載某個MP3文件時,就向目錄服務器發出查詢(這個過程依然是傳統的客戶-服務器方式),目錄檢索出結果以後向用戶返回存放這一文件的計算機IP地址,因而這個用戶就能夠從中選取一個地址下載想要獲得的MP3文件(這個下載過程就是P2P方式)。
  4. 能夠看出,Napster的文件傳輸是分散的(P2P方式),但文件的定位是集中的(客戶-服務器方式)

Napster網站於2000年被迫關閉,罪名:間接侵害版權。

具備全分佈式結構的P2P文件共享程序

第一代P2P文件共享軟件Napster關閉以後,開始出現了以Gnutella爲表明的第二代P2P文件共享軟件。

G與N最大的區別在於不使用集中式的目錄服務器進行查詢,而是使用洪範法在大量G用戶之間進行查詢。

爲了更加有效的在大量用戶之間使用P2P技術下載共享文件,最近幾年已經開發出不少P2P文件共享程序,他們使用分散定位和分散傳輸技術。如KaZaA,電騾eMulw,比特洪流BT等。

BT工做原理

BT把從對等方下載文件的數據單元稱爲文件塊,一個文件塊的長度是固定不變的。

假如一個用戶要獲取一個文件,(這個用戶稱之爲對等方),一開始它並無文件塊,但新的對等方加入可能使他擁有了一些文件塊,而且能夠爲其餘對等方提供數據塊。在用戶陸續得到多個文件塊以後,就能夠湊成一整個文件。獲取到完整的文件以後,能夠選擇退出BT(至關於自私的用戶),也能夠繼續留在BT(至關於無私的用戶)。能夠隨時加入或退出,即使某個文件還未徹底下載完成,能夠之後再加入BT把剩下的文件塊再下載完成。

所以,從不一樣的對等方得到不一樣的數據塊,而後組裝成整個文件,通常要比僅從一個地方下載整個文件要快不少。

至於BT解決的問題:如何準肯定位找到所需的文件塊?如有多個請求,我先給誰?或者先給哪個文件塊?這個就不展開仔細講了。

下一篇講HTTP協議。若是對你有幫助,麻煩點贊加關注哦!

相關文章
相關標籤/搜索