1.4 委托協議棧發送消息

1.4.1 數據收發操作概覽

  1. 向操作系統內部的協議棧發出委托時,需要按照指定的順序來調用Socket庫中的程序組件。
  2. 步驟:
    a. 創建套接字(創建套接字階段)
    b. 將管道連接到服務端的套接字上(連接階段)
    c. 收發數據(通信階段)
    d. 斷開管道并刪除套接字(斷開階段)

1.4.2 創建套接字階段

  1. 創建套接字只需要調用Socket庫中的socket程序組件就可以了。
  2. 套接字創建完成后,協議棧會返回一個描述符,應用程序將收到的描述符存放在內存中,描述符用來識別不同的套接字。

1.4.3 連接階段:把管道接上去

  1. 應用程序通過調用Socket庫中的名為connect的程序組件來完成連接操作。
  2. 調用connect需要的三個參數是描述符、服務器IP地址、服務器端口號。協議棧需要通過描述符判斷使用哪個套接字進行連接,服務器端通過IP和端口號識別出進行連接的套接字。
  3. 連接成功后,協議棧會將對方的IP地址和端口號等信息保存在套接字中。

1.4.4 通信階段:傳遞消息

  1. 發送通過調用Socket的write組件,讀取調用Socket的read組件。
  2. 收發步驟:
    a. 應用程序首先要在內存中準備好要發送的數據。
    b. 調用write程序組件,要指定描述符和發送數據。
    c. 調用read讀取數據,需要指定存放響應數據的內存地址,稱為接收緩沖區。

1.4.5 斷開階段:收發數據結束

  1. 調用Socket的close組件斷開連接,最終管道會被斷開,套接字本身被刪除。
  2. HTTP協議規定,服務器發送響應消息后應主動斷開連接,斷開操作傳達到客戶端后,客戶端套接字也進入斷開階段。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容