文章目錄
- HTTP(Hypertext Transfer Protocol)
- FTP(File Transfer Protocol):
- 郵件服務
- DNS(Domain Name System)
- TCP三向交握
- TCP四次分手
應用程式層應用程式層協議定義了在不同端系統的應用程式進程如何進行通訊,即相互傳遞報文:
- 交換的報文類型:如請求報文和響應報文;
- 各種報文類型的文法:如報文中各個關鍵字段及其詳細描述;
- 報文的語義:即包含在欄位中的資訊的含義;
- 進程何時、如何發送報文及對報文進行響應的規則。
HTTP(Hypertext Transfer Protocol)
- 使用TCP做為傳輸層協議;
- 不儲存客戶機的任何狀態資訊,是一個無狀態協議;
- 連接埠號碼預設為80;
- 非持久串連:每一個請求/響應對是經一個單獨的TCP串連發送,即每次響應完畢後就會關閉TCP串連;
- 持久串連:同一個客戶機的所有的請求/響應對經同一個TCP串連發送,一般會設定一個逾時間隔;
- 404:Not Found,請求文檔不在伺服器上;400:Bad Request,該請求不能被伺服器理解;
cookie:使用者與伺服器的互動,允許網站跟蹤使用者cookie的4個組成部分:
- 在HTTP響應報文中有個cookie首部行:set-cookie:cookie-id,cookie-id是伺服器為目前使用者產生的唯一標識;
- 在HTTP請求報文中有個cookie首部行,方便伺服器跟蹤使用者;
- 在用戶端系統中儲存一個cookie檔案,由瀏覽器管理,這樣使用者訪問儲存了cookie的網站時,瀏覽器會在報文中自動填滿cookie首部行;
- 在伺服器端系統中儲存一個cookie資料庫,存有所有使用者的資訊。
cookie的工作流程:
- 用戶端訪問一個新的網站;
- 伺服器端為客戶建立一個ID,儲存到cookie資料庫中,並在響應報文中添加首部行:set-cookie:cookie-id;
- 用戶端瀏覽器將cookie-id儲存到cookie檔案中,並在以後發往這個網站的請求報文中添加首部行:cookie:cookie-id;
Web緩衝:Proxy 伺服器
- 瀏覽器建立一個到web緩衝器的TCP串連,並向web緩衝器發送一個請求報文;
- web緩衝器檢查本地是否儲存了該對象的拷貝:如果有,向初始伺服器發送一個條件GET請求報文(if-modified-since標記),檢查本地拷貝是否是最新的:伺服器會返回一個響應報文,如果是最新的,響應報文中不會包含請求對象;如果不是最新的,響應報文中會包含請求對象,web緩衝器更新其本機存放區及相應的if-modified-since標記。如果沒有,向初始伺服器發送一個請求報文,收到請求後,更新本機存放區。發送響應報文給用戶端瀏覽器。
FTP(File Transfer Protocol):
- 控制串連:使用連接埠號碼21,在FTP整個傳輸過程中,一直存在;
- 資料連線:使用連接埠號碼20,每次傳輸過程,都會建立一個新的資料連線。
郵件服務
- SMTP(Simple Mail Transfer Protocol):簡易郵件傳輸通訊協定,是一種推(push)類型協議,每個報文都使用7為ASCII碼;
- POP3(Post Office Protocol-Version3):第三版的郵局訪問協議,是一種拉(pull)類型協議;
- IMAP(Internet Mail Access Protocol):網際網路郵件訪問協議,為使用者提供了遠程建立檔案夾以及在檔案夾中移動郵件的命令;
- HTTP:基於web的電子郵件訪問協議。
DNS(Domain Name System)
- 一個由分層的DNS伺服器實現的分散式資料庫:根DNS伺服器;頂級域(TLD)伺服器(如com、org、net、edu、gov);權威DNS伺服器,將主機名稱與IP地址映射。
- 一個允許主機查詢分散式資料庫的應用程式層協議,以UDP做為運輸層協議。
DNS工作機理
- 主機向本地DNS伺服器發出請求;
- 本地DNS伺服器檢查DNS緩衝中是否緩衝了該請求:如果沒有,則執行第三步;如果有,直接返回一個響應報文。
- 本地DNS伺服器將該報文轉寄到根DNS伺服器中,根DNS伺服器返回正確的TLD伺服器IP地址;
- 本地DNS伺服器將該報文轉寄給TLD伺服器,TLD伺服器返回正確的權威DNS伺服器的IP地址;
- 本地DNS伺服器將該報文轉寄給權威DNS伺服器,權威DNS伺服器返迴響應報文,本地DNS伺服器緩衝該查詢結構(有效期間通常為2天),跳到第2步;
運輸層
- TCP(Transfer Control Protocol):連線導向的、可靠資料轉送的協議。首部是20個位元組(源連接埠號碼2byte、目的連接埠號碼2byte、確認號4byte、序號4byte、長度1byte、標誌位1byte、接收視窗2byte、檢驗校正和2byte、緊急資料指標2byte),TCP資料報填充進首部的確認號是它所期望得到的資料報的序號。TCP根據四元組(源IP、源連接埠號碼、目的IP、目的連接埠號碼)建立TCP串連,也就是說服務端會為每一個用戶端建立不同的TCP串連。
- UDP(User Data Protocol):不需連線的、不可靠資料轉送協議。首部是8個位元組(源連接埠號碼、目的連接埠號碼、長度、檢驗校正和)。UDP根據二元組(目的IP、目的連接埠號碼)建立串連,也就是說服務端為所有的用戶端建立同一個UDP串連。
TCP三向交握
- 用戶端向伺服器端發送一個SYN報文段(SYN=1,seq=clien_isn),請求建立一個TCP串連;
- 伺服器端為該TCP串連分配TCP緩衝和變數,並向用戶端發送一個SYNACK報文段(SYN=1,seq=server_isn,ack=client_isn+1),確認可以建立串連;
- 用戶端為該TCP串連分配TCP緩衝和變數,並向用戶端發送一個ACK報文段(SYN=0,seq=client_isn+1,ack=server_isn+1),確認串連建立。這一次可以攜帶有效載荷。
TCP四次分手
- 用戶端向伺服器端發送一個FIN報文段,表示用戶端沒有資料需要發送給伺服器端了,請求關閉串連;
- 伺服器端向用戶端發送一個ACK報文段,確認可以關閉串連;
- 伺服器端向用戶端發送一個FIN報文段,表示伺服器端沒有資料需要發送給用戶端了,請求關閉串連;
- 用戶端接收到FIN報文段,向伺服器發送ACK報文段,等待30秒後,關閉串連。伺服器端接收到ACK後關閉串連。