1. 程式人生 > >SOCKET在應用層和傳輸層的對應關系

SOCKET在應用層和傳輸層的對應關系

socket sta 發包 ram 服務端 揮手 應用 com cep

SOCK_STREAM,TCP建立連接對應的應用層過程

  1. connet
    client發送SYN
    client收到SYN+ACK,connect函數返回,客戶端認為鏈接已建立ESTABLISED
    client發送ACK
  2. listen
    在server中準備了兩個隊列
    • 未完成的連接隊列,保存發來SYN的socket結構
    • 已完成的連接隊列,保存發來ACK的socket結構
      列表非空時監聽套接字處於可讀狀態
      (監聽套接字只在有新連接時才可讀,鏈接套接字send消息過來不由listen監聽)
  3. accept
    進程調用accept時,檢查上面的 已完成的連接隊列,如果隊列有連接,就返回這個連接;
    服務端認為鏈接ESTABLISHED
    如果隊列為空,則blocking
  4. close
    一方調用close後,另一方也調用close完成四次揮手
    技術分享圖片

SOCK_DGRAM
SOCK_DGRAM套接字的connect操作是在內核中註冊對方機器的IP和PORT信息,
沒有發包,close也不發包。

SOCKET在應用層和傳輸層的對應關系