源IP地址和目的IP地址以及源端口號和目的端口號的組合稱為套接字有序。
其用于標識客戶端請求的服務器和服務。
它是網(wǎng)絡通信過程中端點的抽象表示,包含進行網(wǎng)絡通信必需的五種信息:
1. 連接使用的協(xié)議
2. 地主機的IP地址
3. 本地進程的協(xié)議端口
4. 遠地主機的IP地址
5. 遠地進程的協(xié)議端口
套接字是 20 世紀 70 年代加利福尼亞大學的伯克利版本 UNIX (稱為 BSD UNIX)的一部分。
因此,有時你可能會聽過將套接字稱為伯克利套接字或 BSD 套接字。
套接字最初是為同一主機上的應用程序所創(chuàng)建嗜逻,
使得主機上運行的一個序(又名一個進程) 與另一個運行的程序進行通信。
就是所謂的進程間通信 (Inter Process Communication缭召,IPC) 变泄。
有兩種類型的套接字:基于文件的和面向網(wǎng)絡的。
地址家族(address family恼琼,AF):
- AF_UNIX == AF_LOCAL UNIX 套接字妨蛹,BSD套接字
- AF_INET IPv4套接字
- AF_INET6 IPv6套接字
- AF_NETLINK 使用標準的BSD套接字接口進行用戶級別和內(nèi)核級別代碼之間的IPC
- AF_TIPC 透明的進程間通信
可以在/etc/services 文件中找到預留端口號的列表 (以及服務器/協(xié)議和套接字類型) 。
- 有連接的套接字:TCP == SOCK_STREAM
面向連接的通信提供序列化的晴竞、可靠的和不重復的數(shù)據(jù)交付蛙卤,而沒有記錄邊界。 這基本上意味著每條消息可以拆分成多個片段噩死,并且每一條消息片段都確保能夠到達目的地颤难, 然后將它們按順序組合在一起,最后將完整消息傳遞給正在等待的應用程序已维。
- 無連接的套接字:UDP == SOCK_DGRAM
在通信開始之前并不需要建立連接行嗤。 在數(shù)據(jù)傳輸過程中并無法保證它的順序性、可靠性或重復性垛耳。 為什么還使用數(shù)據(jù)報呢?它的成本更加“低廉” 栅屏。