什麼是socket

什麼是網絡套接字(Socket)?


  Socket是網絡上兩個程序雙向通訊連接的端點


  對於一個Socket而言,它至少需要3個參數來指定:

  1)通信的目的地址;

  2)使用的傳輸層協議(如TCP、UDP);

  3)使用的端口號。

Socket類型

  套接字類型是指創建套接字的應用程序要使用的通信服務類型。linux系統支持多種套接字類型,最常用的有以下三種:

  1)SOCK_STREAM:流式套接字,提供面向連接、可靠的數據傳輸服務,數據按字節流、按順序收發,保證在傳輸過程中無丟失、無冗餘。TCP協議支持該套接字。

  2)SOCK_DGRAM:數據報套接字,提供面向無連接的服務,數據收發無序,不能保證數據的準確到達。UDP協議支持該套接字。

  3)SOCK_RAW:原始套接字。允許對低於傳輸層的協議或物理網絡直接訪問,例如可以接收和發送ICMP報文。常用於檢測新的協議。


 Socket網絡層次


  這部分主要參考自《深入淺出Linux工具與編程》(餘國平著)。

  下圖畫出了套接字位於網絡中的層次,它位於傳輸層以上、應用層以下。Socket編程正是通過一系列系統調用(Socket API)來完成應用層協議(如ftp、http)。

  

  圖:套接字層次圖

  套接字是對網絡中應用層進程之間的通信進行了抽象,提供了應用層進程利用網絡協議棧交換數據的機制。

Socket API

  這裏的Socket API指的是Berkeley Sockets API

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