網路插座
網路插座(英語:Network socket;又譯網路接套、網路介面、網路插槽)在電腦科學中是電腦網路中行程間資料串流的端點。使用以網際協定(Internet Protocol)為通訊基礎的網路插座,稱為網際插座(Internet socket)。因為網際協定的流行,現代絕大多數的網路插座,都是屬於網際插座。
「網路插座」的各地常用名稱 | |
---|---|
中國大陸 | 套接字 |
臺灣 | 插座、接套 |
港澳 | socket |
socket是一種作業系統提供的行程間通訊機制。[1]
在作業系統中,通常會為應用程式提供一組應用程式介面(API),稱為插座介面(英語:socket API)。應用程式可以通過插座介面,來使用網路插座,以進行資料交換。最早的插座介面來自於4.2 BSD,因此現代常見的插座介面大多源自Berkeley接套(Berkeley sockets)標準。在插座介面中,以IP位址及通訊埠組成插座位址(socket address)。遠端的插座位址,以及本地的插座位址完成連線後,再加上使用的協定(protocol),這個五元組(five-element tuple),作為插座對(socket pairs),之後就可以彼此交換資料。例如,在同一台電腦上,TCP協定與UDP協定可以同時使用相同的port而互不干擾。 作業系統根據插座位址,可以決定應該將資料送達特定的行程或執行緒。這就像是電話系統中,以電話號碼加上分機號碼,來決定通話對象一般。
中文名
中國大陸名
socket最初被翻譯為把socket譯為「媒介(字)」[2]。不久,ARPANET的socket就被翻譯為「套接字」,其理由是:[3]
由於每個主機系統都有各自命名行程的方法,而且常常是不相容的,因此,要在全網範圍內硬把行程名字統一起來是不現實的。所以,每個電腦網路中都要引入一種起媒介作用的、全網一致的標準名字空間。這種標準名字,在ARPA網中稱作套接字,而在很多其他電腦網中稱作信口。更確切地說,行程之間的連接是通過套接字或信口構成的
定義
系統內部介面(內部網路),介面描述符(抽象介面描述符)和介面位址之間的差別其實很細微,日常編程用的時候幾乎不做區別。並且詳細的網路介面有下面幾種特徵:
- 本地介面位址,由本地ip位址和(包括TCP,UDP)埠號
- 傳輸協定,例如TCP、UDP、raw IP協定
一個已經建立連接的介面雙方都有整數形式的介面描述符,用來唯一表示該介面。作業系統根據對方介面發過來的IP以及傳輸協定頭資訊來提取介面的位址資訊,並且將應用資料去除頭資訊之後提交給相應的應用程式。 在很多網路協定、教科書以及本文中,介面指的是有一個獨一無二的介面號的實體。在一些其他的文章[來源請求]當中,介面被叫做本地介面位址,比如..."ip和埠的結合"。在一RFC147標準中,這個定義與1971的ARPA網有關,介面指的是一個32位元數字,其中偶數的是接收介面,奇數的是傳送介面,但是今天通訊已經可以實現雙向傳輸,在一個介面中,可以傳送的同時還可以接收。
在類UNIX系統和Windows系統,命令列工具netstat和ss可用以檢視當前系統的介面情況。
例子
這個例子是類比Berkeley接套介面,我們通過80埠傳送`hello,world`到1.2.3.4的主機上。下方代碼演示了建立介面、連接遠端主機、傳送資料和關閉介面的過程。
Socket socket = getSocket(type = "TCP")
connect(socket, address = "1.2.3.4", port = "80")
send(socket, "Hello, world!")
close(socket)
類型
資料報接套(SOCK_DGRAM)
資料報接套是一種無連接套接字,使用使用者資料報協定(UDP)傳輸資料。每一個封包都單獨定址和路由。這導致了接收端接收到的資料可能是亂序的,有一些資料甚至可能會在傳輸過程中遺失。不過得益於資料報接套並不需要建立並維護一個穩定的連接,資料報接套所占用的電腦和系統資源較小。
流接套(SOCK_STREAM)
連接導向式通訊接套,使用傳輸控制協定(TCP)、流控制傳輸協定(SCTP)或者資料擁塞控制協定(DCCP)傳輸資料。流接套提供可靠並且有序的資料傳輸服務。在網際網路上,流接套通常使用TCP實現,以便應用可以在任何使用TCP/IP協定的網路上執行。
原始接套
原始接套是一種網路接套。允許直接傳送和接受IP封包並且不需要任何傳輸層協定格式。原始接套主要用於一些協定的開發,可以進行比較底層的操作。
註釋
- ^ 1983年发布的4.2BSD就是如此定义socket (PDF). [2017-03-07]. (原始內容存檔 (PDF)於2017-03-08).
- ^ (中科院)計算所電腦網組. 计算机网词汇译名讨论. 電腦動態: 75–79.
- ^ 计算机网络软件简介. 電腦參考資料: 57–107.
相關條目
外部連結
- How sockets work - IBM information center