網絡編程,筆記

網絡分層

  • 應用層,常見協議:HTTP、FTP
  • 傳輸層,常見協議:TCP.UDP
  • 網絡層,常見協議:IP
  • 鏈路層
  • 物理層

 

協議

協議是通信計算機雙方必須共同遵從的一組約定。如怎麼樣建立連接、怎麼樣互相識別等。只有遵守這個約定,計算機之間才能相互通信交流。它的三要素是:語法、語義、時序。

簡單來說,協議就是 通信雙方/多方都遵從共同的一個規範。

協議的一些特點:

  1. 協議中的每個人都必須瞭解協議,並且預先知道所要完成的所有的步驟。
  2. 協議中的每個人都必須同意並遵循它。
  3. 協議必須是清楚的,每一步必須明確定義,並且不會引起誤解。

 

HTTP協議

HTTP是一個應用層協議,由請求和響應構成,是一個標準的客戶端服務器模型。HTTP是一個無狀態的協議。

HTTP協議永遠都是客戶端發起請求,服務器回送響應。

 

HTTP協議工作流程

  1. 客戶端和服務器之間建立一條連接
  2. 連接建立後,客戶端向服務器發起一個請求(request)
  3. 服務器收到一個請求後,給客戶端一個響應(應答,response)
  4. 客戶端收到響應後做進一步處理

 

HTTP是基於傳輸層的TCP協議,而TCP是一個端到端的面向連接的協議。所謂的端到端可以理解爲進程到進程之間的通信。所以HTTP在開始傳輸之前,首先需要建立TCP連接,而TCP連接的過程需要所謂的“三次握手”。

 

TCP三次握手

  1. client向server發送TCP SYN報文段(指定初始序號,無數據)
  2. server收到SYN報文段,用SYN ACK報文段回覆(server爲該鏈接分配緩衝區;指定server初始序號)
  3. client接收到SYN ACK,用ACK報文段回覆,可能包含數據

 

TCP四次揮手

  1. client發送一個FIN,用來關閉client到server的數據傳送,client進入FIN_WAIT_1狀態
  2. server收到FIN後發送一個ACK給client,server進入close_wait狀態
  3. server發送一個FIN,用來關閉server到client的數據傳送,server進入LAST_ACK狀態
  4. client收到FIN後,進入TIME_WAIT狀態,併發送一個ACK給server,server進入close狀態。

 

HTTP主要特點

  1. 主持C/S(客戶端/服務器)模式。
  2. 簡單快速:客戶端向服務器請求服務時,只需要傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST,每種方法規定了客戶端與服務器聯繫的類型不同。由於HTTP協議簡單,使得HTTP服務器的程序規模小,因而通信速度很快。
  3. 靈活:HTTP容許傳輸任意類型的數據對象。正在傳輸的類型由 Content-Type加以標記。
  4. 無連接:無連接的含義是限制每次連接只處理一個請求。服務器處理完客戶端的請求,並收到客戶端的應到後,立即斷開連接,這種方式可以節省傳輸時間。
  5. 無狀態:HTTP協議是無狀態協議,無狀態是指協議對於事務處理沒有記憶能力。缺少狀態意味着如果後續處理需要前面的信息,則必須重傳,這樣可能導致每次連接傳送的數據量增大;而另一方面,在服務器不需要先前信息時·他的應答速度就較快。

 

常見的HTTP請求方法

HTTP方法

作用描述

GET

客戶端請求指定資源信息,服務器返回指定資源

HEAD

只請求響應報文中的HTTP首部

POST

將客戶端的數據提交到服務器,例:註冊表單

PUT

從客戶端向服務器傳送的數據取代指定的文檔內容

DELETE

請求服務器刪除Request-URI所標識的資源

MOVE

請求服務器將制定的頁面移至另一個網絡地址

 

 

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