1、應用層協議原理
1.1、應用層協議原理
1.1.1、網絡應用層體系結構
兩種體系結構:客戶—服務器體系結構和p2p體系結構
客戶服務器體系結構特點
服務器固定,總是開着接收客戶的請求。客戶之間不能直接通信,需要通過服務器來通信
p2p體系結構特點
沒有固定的服務器,不同客戶之間可直接通信,不需要通過服務器。上傳數據的主機可成爲服務器,下載數據的成爲客戶。
1.1.2、進程通信
客戶和服務器進程
定義:發起通信的成爲客戶,等待聯繫的進程稱爲服務器。
進程和計算機網絡之間的接口是套接字
套接字由目的主機ip地址和進程端口號共同組成。
1.1.3、運輸層提供的服務分類
可靠性:傳輸的數據沒有丟失,不重複
吞吐量:發送進程向接收進程交付比特的速率
定時:時間敏感性,即實時性
安全性:傳輸的數據不容易被竊取,篡改
1.1.4、因特網提供的 運輸服務有tcp和udp
tcp:面向連接的和可靠的傳輸服務。
面向連接:每次數據傳輸前都需要進行三次握手,再傳輸數據,結束髮送需要斷開連接。
可靠傳輸:數據有序,無丟失和冗餘
tcp不提供安全性保障,可供過ssl加強tcp來達到安全性保障。
udp:無連接的,不可靠的數據傳輸服務
1.2 web應用和http協議
1.2.1、http介紹
端口號默認是80
http定義了web客戶端和web服務器相互之間傳遞報文的方式。http使用的運輸層協議是tcp。
http是無狀態協議,http服務器不會保存任何關於客戶的信息。
1.2.2、持續連接和非持續連接
非持續連接:每個請求/響應都通過一個單獨的tcp連接發送,發送完畢後,關閉tcp連接
持續連接:所有的請求/連接都通過相同的tcp連接發送
1.2.3、http報文格式
1.2.3.1請求報文
第一行叫做請求行,後繼的爲首部行。
請求行有三個字段:請求方法,url,和http版本號。請求方法有get,post,head,put和delete。絕大部分使用get。
使用tcp傳輸。
通用格式
使用post方法提交表單的時候,表單的內容會顯示在實體主體中,get方法報文中的實體主體爲空。
1.2.3.2響應報文
響應報文由三部分組成,狀態行,首部行和實體行。
狀態行包含http版本號,狀態碼和響應的狀態信息。
date表示服務器產生併發送響應報文的時間。
server:表示服務器的類型。
connection:close表示發送完報文後將關閉連接
last-modified:對象最後創建和修改時間
常見的狀態碼和含義
200:請求成功
301:請求對象已經被轉移了
400:請求不能被服務器端理解
404:被請求的文檔不在服務器上
505:服務器不支持http協議版本
1.2.4 用戶和服務器的交互:cookie
用戶首次發送請求報文給web服務器,web服務器會爲用戶生成一個識別碼,並在數據庫中存儲用戶的信息。
web服務器在響應報文中包含一個set cookie:識別碼,發送給web瀏覽器。web瀏覽器在自己的cookie文件中
添加識別碼和服務器主機名。之後瀏覽器每次訪問服務器都會帶着識別碼去訪問服務器,服務器會根據識別碼
來獲取用戶的一些信息。
1.2.5 web緩存
web緩存器也叫代理服務器
工作原理:
web緩存器有自己的磁盤存儲空間,用於存儲最近請求過的對象的副本。
瀏覽器會發送一個請求到web緩存器,緩存器會檢查本地是否存儲了請求對象,如果有,則直接發送響應
報文,把請求對象發送給瀏覽器。如果沒有,緩存器向服務器發出請求,獲取請求對象,發送給瀏覽器,並在本地
存儲請求對象的副本。
緩存器的優點:
大大減少請求的響應時間
減少某個機構的通信容量
1.3、ftp協議(文件傳輸協議)
端口號位21,ftp使用兩條並行的tcp連接來傳輸文件,一條傳輸控制命令,一條傳輸實際的文件數據
控制命令中包含用戶的標識和一些口令等,控制連接貫穿了用戶的整個會話期間。
1.4smtp協議
端口號默認是25
alice通過郵件代理(運行在客戶端的一些郵箱應用程序,如outlook等),用smtp協議把要發送的郵件傳給alice的郵件服務器,
alice的郵件服務器和bob的郵件服務器建立連接,並把郵件傳給bob的郵件服務器,bob的郵件代理再通過pop3/imap協議把
郵件從郵件服務器中讀取出來。
1.5、dns 域名系統
dns運行在udp上,負責把主機名解析爲ip地址。默認端口號位53。
dns工作原理概述:
用戶主機的應用程序把需要解析的主機名發送給dns客戶端,dns客戶端向網絡中發送一個查詢報文,
一段時間後,dns客戶端收到解析的ip地址,並返回給主機應用程序。
dns服務器的層次結構
第一層:根dns服務器
第二層:頂級域服務器
第三層:權威dns服務器
另外還有一個本地dns服務器,通常靠近主機。
dns服務器的交互
查詢流程:請求主機——本地dns服務器——根dns服務器—頂級域名服務器——
權威dns服務器——本地dns服務器——請求主機。
dns的緩存
爲了改善時延和網絡中的通信量,可採用緩存。即每次dns服務器收到一個dns回答時,會把回答中的信息
存儲在本地。當下次有同樣的dns請求時,dns服務器可以直接把ip地址返回,不必再去查詢其他dns服務器。