1. 程式人生 > 其它 >網路程式設計基礎簡述

網路程式設計基礎簡述

網路程式設計基礎

  1. 閘道器

    每臺機關及都需要正確配置IP地址和子網掩碼,根據這兩個就可以計算網路號,即 IP&子網掩碼 ,如果兩臺計算機的網路號相同則在同一個網路,則可以直接通訊,如果不同則不能直接通訊,他們之間必須通過路由器或者交換機網路裝置來間接通訊,這種裝置就是閘道器

2.路由

閘道器的作用是連線多個網路,負責把來自一個網路的資料包傳送到另一個網路,這個過程就是路由

3.域名

因為直接記憶IP地址比較困難,所以通常使用域名來訪問某個特定的服務。域名解析伺服器DNS負責把域名翻譯成對應的IP來進行訪問;在CMD視窗中可以使用nslookup來檢視對應域名的IP地址,本機域名是localhost,對應IP地址為127.0.0.1

4.網路模型

  • 應用層:提供應用程式之間的通訊
  • 表示層: 處理資料格式,加密解密等
  • 會話層: 負責建立和維護會話
  • 傳輸層: 負責提供端到端的可靠傳輸
  • 網路層: 負責根據目標地址選擇路由來傳輸資料
  • 鏈路層和物理層: 負責把資料進行分片並且真正的通過物理網路傳輸,例如無線網,光纖等

上層模型是建立在下層模型的基礎上的

5.HTTP程式設計

HTTP 即Hyper Text Transfer Protocol 超文字傳輸協議

  • HTTP請求的格式: 請求的格式是固定的,由HTTP Header和HTTP Body 兩部分組成,第一行總是 請求方法 路徑 HTTP版本,例如 GET / HTTP/1.1,然後後續的每一行都是固定的Header: Value

    的格式,這就是HTTP Header,伺服器依靠某些特定的Header來識別客戶端,例如:

    1. Host:表示請求的域名,因為一臺伺服器上可能有多個網站,因此有必要依靠Host來識別請求是發給哪個網站的;
    2. User-Agent:表示客戶端自身標識資訊,不同的瀏覽器有不同的標識,伺服器依靠User-Agent判斷客戶端型別是IE還是Chrome,是Firefox還是一個Python爬蟲;
    3. Accept:表示客戶端能處理的HTTP響應格式,*/*表示任意格式,text/*表示任意文字,image/png表示PNG格式的圖片;
    4. Accept-Language:表示客戶端接收的語言,多種語言按優先順序排序,伺服器依靠該欄位給使用者返回特定語言的網頁版本。
  • 對於POST請求,則需要在header中設定Content-Type表示body的型別,content-type行表示body的長度,這樣伺服器才可以根據請求的header和Body做出正確的響應

    POST /login HTTP/1.1
    Host: www.example.com
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 30
    
    username=hello&password=123456
    
    POST /login HTTP/1.1
    Content-Type: application/json
    Content-Length: 38
    
    {"username":"bob","password":"123456"}
    
  • HTTP響應 也是由Header和Body組成,例如:

    HTTP/1.1 200 OK
    Content-Type: text/html
    Content-Length: 133251
    
    <!DOCTYPE html>
    <html><body>
    <h1>Hello</h1>
    ...
    
    1. 響應的第一行總是HTTP版本 響應程式碼 響應說明 ,例如 HTTP/1.1/ 200 OK ,其中HTTP是1.1版本,響應程式碼是200,響應說明是OK,客戶端只依賴響應程式碼來判斷HTTP請求是否響應成功,響應程式碼型別和說明如下:
      • 1XX 表示一個提示性響應,例如101表示將切換協議,常見於webSocket連線
      • 2XX表示一個成功的響應,200表示成功,206表示只發送了部分內容
      • 3XX表示一個重定向響應,例如301表示永久重定向,303表示客戶端應該按照指定路徑重新發送請求
      • 4XX表示一個因為客戶端問題導致的錯誤響應,例如400表示因為content type等原因導致的無效請求,404表示指定的路徑不存在
      • 5XX表示因為服務端問題導致的錯誤響應,例如500表示伺服器內部故障,503表示伺服器暫時無法響應
  • HTTP協議版本

    1. HTTP/1.0 最早期的超文字傳輸協議,每次傳送一個請求之前都需要先建立TCP連線,收到伺服器響應後,再關閉連線
    2. HTTP/1.1 在1.0的基礎上允許在建立TCP連線後,反覆的傳送—響應請求,大大提高了效率
    3. HTTP /2.0 由於在1.0、1.1協議中,客戶端傳送請求後必須等待接受到伺服器響應後才會傳送下一個請求,如果某個響應太慢,則將導致後面的請求被堵塞,在2.0協議中,允許客戶端在沒有接收到伺服器響應的情況下,繼續傳送多個HTTP請求,並且伺服器不一定要按照順序返回響應,只要雙方能識別出那個響應對應哪個請求即可,可以做到 並行傳送和接受