計算機網絡核心知識總結

協議層及其服務模型

Q:爲什麼要分層?
A:因爲Internet非常複雜。 對於複雜的系統,分層有以下幾點好處:

  1. 使其結構非常清晰,清楚地知道各層之間的關係;
  2. 模塊化會使系統的維護、升級更見簡化,改變某一層服務的具體實現對系統其他部分透明(不影響)。

But: 分層也有弊端,因爲每一層可能都要重複較低層的功能。

參考模型

  • ISO/OSI七層參考模型:
層號 層的名稱
7 應用層
6 表示層
5 會話層
4 傳輸層
3 網絡層
2 數據鏈路層
1 物理層
  • TCP/IP參考模型:
層號 層的名稱
5 應用層
4 傳輸層
3 網絡層
2 數據鏈路層
1 物理層
  • 兩種參考模型:ISO/OSI是理論上的標準,TCP/IP是事實上的標準。

網際協議棧

  • 應用層:支持網絡應用,報文傳送。HTTP,FTP,SMTP,STTP
  • 傳輸層:主機進程間數據段傳送。TCP,UDP
  • 網絡層:主機(源目標節點)間分組傳送。IP協議,路由協議
  • 數據鏈路層:相鄰網絡節點間的數據幀傳送。PPP,Ethernet,……
  • 物理層:物理介質上的比特傳送

應用層

網絡應用程序體系結構

1. 客戶機/服務器體系結構

  • 服務器主機總是打開
  • 服務器具有固定的、衆所周知的IP地址
  • 客戶機具有動態的IP地址
  • 客戶機之間不能通信

2. P2P體系結構

  • 沒有總是打開的服務器
  • 任意一對主機之間可以直接通信
  • 對等方間歇連接,可以改變IP地址

3. 客戶機/服務器和P2P混合體繫結構

  • 文件在對等方之間相互交換、文件搜索通過服務器
  • 兩個聊天用戶之間是P2P、註冊和查詢通過服務器

HTTP協議

網頁由許多對象組成,每一個對象都被一個URL(統一資源定位符)尋址:

URL
HTTP: 超文本傳輸協議,Web的應用層協議,採用客戶機/服務器的模式。協議的本質是對信息傳輸內容和順序的約定。HTTP協議就約定了客戶端與服務器之間通信的標準。
HTTP是無狀態協議,服務器不維護客戶先前的狀態信息。也就是說:如果客戶機第一次登錄並且成功後,再第二次登錄,服務器仍然不會知道當前請求的是哪個用戶。

HTTP連接

  • 非持久HTTP連接:每個TCP連接只傳送一個對象,下載多個對象需要創建多個TCP連接,HTTP/1.0使用非持久HTTP連接。
  • 持久HTTP連接:一個TCP連接可傳送多個對象,HTTP/1.1默認使用持久HTTP連接。

HTTP報文格式

HTTP請求報文:

報文格式
sp:空格,cr:回車,lf:換行,URI:統一資源標識符
URI與URL的區別: URL是URI的子集,它們都定義了資源是什麼。但有區別:URI可以唯一標識該對象,而URL不僅可以唯一標識該元素,還可以定位到它,所以叫統一資源定位符。舉例:身份證號是URI,身份證地址+姓名是URL。
HTTP請求報文示例:
在這裏插入圖片描述

  • HTTP/1.0方法:
    GET:從服務器獲取指定數據
    POST:向服務器傳送指定數據
    HEAD:服務器收到請求時返回響應消息只包含HEAD頭部,不包含請求對象主體
  • HTTP/1.1方法:
    GET、POST 、HEAD
    PUT:文件在實體主體中被上載到URL指定的路徑
    DELETE:刪除URL字段指定的文件

GET方法 vs POST方法:

  1. 本質定義。GET是從服務器獲取數據,POST是把需要處理的數據提交到服務器上。
  2. 安全性。GET方法將請求的數據加在URL後,用 ? 分隔URL和請求數據,多個參數用 & 連接,地址欄中可見,所以非常不安全;POST方法要傳送的數據在請求包的實體中,地址欄中不可見,比GET更安全。
  3. 傳輸數據大小。由於GET方法中請求的數據在URL後面,而URL長度是有限制的,不能超過2KB,因此GET傳輸的數據較少並且有限;但POST對數據大小沒有限制
  4. 有害性。瀏覽器後退或者刷新,GET方法不會產生什麼動作,也就是不會修改服務器數據,但POST會重新提交數據給服務器。

HTTP響應報文:

響應報文
HTTP響應狀態碼:
HTTP響應狀態碼位於HTTP響應報文的第一行,常見的狀態碼有:

  • 200 OK 請求成功,響應消息返回所請求的對象
  • 204 No Content 請求成功,但是沒有數據。一般用在:只需要返回是否成功的情況。
  • 301 Moved Permanently 請求對象已永久遷移新的URL 在響應首部用字段Location:指出,瀏覽器接受到帶Location頭的響應時,就會跳轉到相應的地址。
  • 302 表示臨時重定向。請求對象暫時遷移,新的URL 在響應首部用字段 Location:指出,瀏覽器接受到帶Location頭的響應時,就會跳轉到相應的地址。
  • 400 Bad Request 該請求不能被服務器解讀
  • 404 Not Found 服務器上不存在所請求的對象
  • 505 HTTP Version Not Supported

HTTP常見首部行:
請求報文:

  • Host:請求的目標域名和端口號
  • User-agent:向服務器發送瀏覽器的版本、系統、應用程序信息
  • Cookie:當前域名下的cookie數據
  • Accept-language:向服務器聲明客戶機接收的語言版本
  • Connection:告訴服務器採用什麼連接方式,例如Connection: Close 關閉默認的HTTP持久連接(用於HTTP/1.1)

響應報文:

  • Connection
  • Date:服務器發送資源時的服務器時間
  • Server:HTTP服務器的應用程序信息
  • Location:重定向,讓客戶端跳轉到新的URL進行訪問
  • Last-Modified:服務器發來的當前資源的最後一次修改時間,如果下一次請求時,服務器上當前資源的修改時間比這個大(更晚),就返回新的資源內容。
  • Content-Length:消息實體的傳輸長度
  • Content-Type:響應體的媒體資源類型(比如html類型,UTF-8編碼等等)

HTTP vs HTTPS

HTTP:是超文本傳輸協議,是以明文方式傳輸數據的,沒有提供任何數據加密,並且不會驗證通信方的身份。
HTTPS:是安全套接字層超文本傳輸協議,是由SSL + HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,比HTTP更加安全。
注意: HTTPS協議並非是應用層的一種新的協議,只是在HTTP通信接口部分用SSL協議代替而已。原本HTTP與TCP之間直接進行通信,但加入SSL後就先是HTTP與SSL進行通信,再是SSL與TCP進行通信。

HTTP與HTTPS的區別:

  1. HTTPS協議需要到CA(電子認證服務)申請證書。
  2. HTTP是超文本傳輸協議,HTTPS是更安全的SSL加密傳輸協議。
  3. 使用完全不同的連接方式,端口也不同,HTTP使用80端口,而HTTPS使用443端口
  4. HTTP連接很簡單,是無狀態的;HTTPS是由SSL + HTTP構建的可進行加密傳輸、身份認證的更安全的網絡協議。

SSL協議

SSL:位於TCP/IP協議與各種應用層協議之間。

  • SSL協議基本內容
  1. SSL記錄協議:建立在可靠傳輸協議的基礎之上(如TCP),爲高層協議提供數據封裝、壓縮、加密等基本功能。
  2. SSL握手協議:建立在SSL記錄協議之上,在數據傳輸之前,雙方進行身份驗證、協商加密算法、交換加密密鑰等。
  • SSL協議原理
    公鑰加密法。客戶端向服務端索要公鑰,收到後用自己的私鑰加密信息,服務端收到密文後用自己的私鑰解密。

注意: 1999年把SSL協議標準化改名爲TLS(傳輸層安全協議),但這兩者其實是同一種協議,只是不同階段的稱呼而已。

Cookie和Session

  1. cookie:因爲HTTP請求是無狀態的,它不會認識當前的用戶是誰。cookie的出現就爲了解決這個問題。用戶第一次請求服務器時,服務器會返回一些數據(cookie)給瀏覽器,瀏覽器保存到本地,等下一次再請求服務器時就會自動帶上本地的cookie數據,服務器拿到這個數據就知道該請求用戶是誰了。但是cookie只能存少量數據,不同瀏覽器存儲大小不同,但一般不超過4KB
  2. session:session和cookie的作用類似,都是爲了保存用戶相關的信息,但是不同的是:session是保存在服務器上的cookie保存在本地瀏覽器。保存在服務器上的session數據不容易被竊取,更加安全,但弊端是佔用了服務器的資源。

DNS:域名系統

I. DNS是什麼?

DNS,全稱爲Domain Name System,域名系統。是因特網的目錄服務,主機、路由器有多種標識符,包括主機名和IP地址。主機名是爲了方便人類記憶創建的,是拿給人看的,而IP地址纔是用於分組尋址的 ,因爲它是固定的長度:32bit,更加規範、路由器更加容易接受。所以我們需要一個轉換器,來將主機名轉換成IP地址。這時候DNS的作用就出現了,當然,DNS不僅只有這個功能。

  1. 實體上來看:是一種由分層DNS服務器實現的分佈式數據庫
  2. 協議上來看:是一種實現域名轉換的應用層協議

II. DNS提供什麼功能?

  1. 提供主機名到IP地址映射的查詢服務核心功能
  2. 提供主機別名服務。 一個複雜的主機可能有一個規範主機名和多個主機別名,主機別名比規範主機名更容易記憶。DNS提供根據主機別名查找規範主機名的服務。
  3. 郵件服務器別名
  4. 負載分配。 對於被頻繁訪問的大型站點來說,它可能有多臺服務器,那這時主機與IP地址就不再是一一對應了,而是一個主機名對應多個IP地址在大量的、連續多次訪問中,DNS通過旋轉IP地址來實現負載均衡。當客戶機進行DNS請求時,DNS服務器便會把全部的IP地址放在響應報文中進行應答,但在不同的回答中它會旋轉這些IP地址的順序,客戶機總會向排在最前面的IP地址發出請求。

III. DNS服務器:

  1. 根DNS服務器: 因特網上有13個根DNS服務器,其中大部分分佈在美洲。
  2. 頂級DNS服務器: 負責頂級域名edu, gov, org, com等和所有國家的頂級域名 uk, fr, cn, jp(edu教育機構域名,gov政府部門域名,org非盈利性的組織,com企業域名,uk英國,fr法國,cn中國,jp日本)
  3. 權威DNS服務器: 在因特網上具有公共可訪問主機(如Web服務器和郵件服務器)的每個組織機構必須提供公共可訪問的DNS記錄,這些記錄將這些主機的名字映射爲IP地址。組織機構的權威DNS服務器負責保存這些DNS記錄。多數大學和公司維護它們的基本權威DNS服務器。
  4. 本地DNS服務器: 嚴格來說並不屬於DNS服務器的層次結構,它起到一個代理的作用,將主機提交的請求轉發到層次結構中。

IV. DNS如何工作的?
DNS有兩種查詢方式:遞歸查詢迭代查詢,從主機到本地DNS服務器是遞歸查詢,本地DNS服務器向另外三個服務器的查詢是迭代查詢。
在這裏插入圖片描述
我們以該圖爲例,來描述DNS的查詢過程,一共8條路徑(8份報文):
(主機cis.poly.edu想要查詢主機gaia.cs.umsaa.edu的IP地址)

  1. 主機cis.poly.edu本地DNS服務器發送查詢報文
  2. 本地DNS服務器收到後向根DNS服務器轉發查詢報文
  3. 根DNS服務器注意到edu域名,返回負責edu的頂級DNS服務器IP地址
  4. 本地DNS服務器根據收到的IP地址查詢頂級DNS服務器
  5. 頂級DNS服務器注意到umass.edu域名,返回負責umass.edu的權威DNS服務器IP地址。該權威DNS服務器是負責馬薩諸塞大學的dns.cs.umass.edu
  6. 本地DNS服務器根據收到的IP地址查詢權威DNS服務器dns.cs.umass.edu
  7. 權威DNS服務器dns.cs.umass.edu將使用gaia.cs.umass.eduIP地址作爲響應,返回給本地DNS服務器
  8. 本地DNS服務器將 包含所查詢IP地址的報文 返回給主機cis.poly.edu

由此可見, 在迭代查詢過程中,被查詢的名字服務器回覆可以被查詢的名字服務器的IP地址。也就是說,它總是在告訴本地DNS服務器:“我不知道它的名字,但是你可以問服務器xxx”

(待更新……)

傳輸層

網絡層

數據鏈路層

物理層

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章