本页使用了标题或全文手工转换

網路插座

维基百科,自由的百科全书
(重定向自网络接口
跳转至: 导航搜索
中国大陸 套接字
臺灣 網路插座
港澳 socket

計算機科學中,網路插座英语:Network socket),又譯網絡套接字網絡接口網路插槽,是電腦網路中行程間資料串流的端點。使用以網際協議Internet Protocol)為通訊基礎的網路插座,稱為網際插座Internet 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网中称作套接字,而在很多其他计算机网中称作信口。更确切地说,进程之间的连接是通过套接字或信口构成的

台湾名[编辑]

台湾直接采用字面直译,把socket依然译成插座。

定义[编辑]

系统内部接口(内部网络),接口描述符(抽象接口描述符)和接口地址之间的差别其实很细微,日常编程用的时候几乎不做区别。并且详细的网络接口有为下面几种特征:

  • 本地接口地址,由本地ip地址和(包括TCP,UDP)端口号
  • 传输协议,例如TCP,UDP,raw IP 协议,如果只是指定ip地址,那么TCP 53与UDP 53不是一个接口。

一个已经建立连接的接口双方都有整数形式的接口描述符,用来唯一表示该接口。操作系统根据对方接口发过来的IP以及传输协议头信息来提取接口的地址信息,并且对应用数据做去除头信息之后提交给相应的应用程序。 在很多网络协议,教科书以及本文中,接口指的是有一个独一无二的接口号的实体。在一些其他的文章当中,接口被叫做本地接口地址,比如..."ip和端口的结合"。在一RFC147标准中,这个定义与1971的ARPA网有关,接口指的是一个32位数字,其中偶数的是接收接口,奇数的是发送接口,但是今天通信已经可以实现双向传输,在一个接口中,不仅可以发送的同时还可以接收。

在类unix系统和windows系统,命令行工具netstat 和ss用以查看当前系统的接口情况;

例子[编辑]

这个例子是模拟伯克利接口,我们通过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)

註釋[编辑]

  1. ^ 1983年发布的4.2BSD就是如此定义socket
  2. ^ (中科院)计算所计算机网组. 计算机网词汇译名讨论. 电子计算机动态: 75–79. 
  3. ^ 计算机网络软件简介. 电子计算机参考资料: 57–107. 

相關條目[编辑]

外部連結[编辑]