Networking 端口和套接字之间有什么区别?

Networking 端口和套接字之间有什么区别?,networking,sockets,port,Networking,Sockets,Port,这是我所在组织的一位软件工程师提出的问题。我对最广泛的定义感兴趣。套接字=IP地址+端口(数字地址) 它们一起标识机器上网络连接的端点。(我刚通过网络101考试了吗?套接字表示两个网络应用程序之间的单一连接。这两个应用程序名义上运行在不同的计算机上,但套接字也可以用于单个计算机上的进程间通信。应用程序可以创建多个套接字以相互通信。套接字是双向的,这意味着连接的任意一侧都能够发送和接收数据。 因此,理论上可以在OSI模型的任何级别从2开始创建套接字。程序员经常在网络编程中使用套接字,尽管是间接的。

这是我所在组织的一位软件工程师提出的问题。我对最广泛的定义感兴趣。

套接字=IP地址+端口(数字地址)

它们一起标识机器上网络连接的端点。(我刚通过网络101考试了吗?

套接字表示两个网络应用程序之间的单一连接。这两个应用程序名义上运行在不同的计算机上,但套接字也可以用于单个计算机上的进程间通信。应用程序可以创建多个套接字以相互通信。套接字是双向的,这意味着连接的任意一侧都能够发送和接收数据。 因此,理论上可以在OSI模型的任何级别从2开始创建套接字。程序员经常在网络编程中使用套接字,尽管是间接的。Winsock之类的编程库隐藏了许多套接字编程的低级细节。自20世纪80年代初以来,插座已被广泛使用

端口表示网络通信的端点或“通道”。端口号允许同一台计算机上的不同应用程序在不相互干扰的情况下利用网络资源。端口号通常出现在网络编程中,尤其是套接字编程中。但有时,端口号对普通用户可见。例如,某人在Internet上访问的某些网站使用如下URL:

在此示例中,数字8080表示Web浏览器用于连接到Web服务器的端口号。通常,Web站点使用端口号80,此端口号不需要包含在URL中(尽管可以)

在IP网络中,端口号理论上可以从0到65535。不过,大多数流行的网络应用程序使用的端口号都在该范围的低端(例如HTTP为80)

注:端口一词还指网络技术的其他几个方面。端口可以指外围设备的物理连接点,如串行、并行和USB端口。术语端口还指某些以太网连接点,例如集线器、交换机或路由器上的连接点

参考号


ref

它们是来自两个不同领域的术语:“端口”是TCP/IP网络的概念,“套接字”是API(编程)的东西。“套接字”是通过获取端口和主机名或网络适配器,并将它们组合到一个数据结构中(在代码中)而形成的,您可以使用该数据结构发送或接收数据。

套接字基本上是网络通信的端点,至少由一个IP地址和一个端口组成。在Java/C中,套接字是双向连接一侧的更高级别实现


另外,.

套接字中的定义是一种数据I/O机制。端口是通信协议的契约概念。套接字可以不带端口而存在。一个端口可以在没有特定套接字的情况下存在(例如,如果同一端口上有多个套接字处于活动状态,这可能是某些协议所允许的)


端口用于确定接收器应将数据包路由到哪个套接字,有许多协议,但并不总是需要端口,可以通过其他方式选择接收套接字-端口完全是网络子系统中协议处理程序使用的工具。e、 g.如果协议不使用端口,数据包可以发送到所有侦听套接字或任何套接字。

套接字是软件中的一种结构。它或多或少是一个文件;它有读写操作。它不是一个物理的东西;这是您的软件引用物理内容的一种方式

端口是一种类似于设备的东西。每个主机有一个或多个网络(物理网络);主机在每个网络上都有一个地址。每个地址可以有数千个端口

一个套接字只能使用一个地址处的端口。套接字分配端口的方式与为文件系统I/O分配设备大致相同。一旦分配了端口,其他套接字就无法连接到该端口。当套接字关闭时,端口将被释放

请看。

端口:

端口可以指物理连接点 用于串行、并行和USB端口等外围设备。 术语端口也指某些以太网连接点,例如 如集线器、交换机或路由器上的设备

插座:

套接字表示两个网络应用程序之间的单个连接。 这两个应用程序名义上运行在不同的计算机上, 但是套接字也可以用于单台计算机上的进程间通信。 应用程序可以创建多个套接字以相互通信。
套接字是双向的,这意味着连接的任意一侧都能够发送和接收数据

套接字是通信端点。套接字与TCP/IP协议系列没有直接关系,它可以与系统支持的任何协议一起使用。C套接字API希望您首先从系统中获取一个空套接字对象,然后可以将该对象绑定到本地套接字地址(直接检索无连接协议的传入通信量或接受面向连接协议的传入连接请求),或者连接到远程套接字地址(适用于任何一种协议)。如果要同时控制套接字绑定到的本地套接字地址和套接字连接到的远程套接字地址,您甚至可以同时执行这两项操作。对于连接套接字的无连接协议,连接套接字甚至是可选的,但如果不执行此操作,则还必须将目标地址与要通过套接字发送的每个数据包一起作为Socket如何知道将数据发送到哪里?优点是您可以使用单个套接字将分组发送到不同的套接字地址。一旦您的套接字被配置,甚至可能连接,就认为它是双向COMM。
  TCP    192.168.1.3:63240      54.252.94.236:80       SYN_SENT
  TCP    192.168.1.3:63241      54.252.94.236:80       SYN_SENT
  TCP    192.168.1.3:63242      207.38.110.62:80       SYN_SENT
  TCP    192.168.1.3:63243      207.38.110.62:80       SYN_SENT
  TCP    192.168.1.3:64161      65.54.225.168:443      ESTABLISHED
int fd = socket(AF_INET, SOCK_STREAM, 0); // tcp socket
int fd = socket(AF_INET, SOCK_DGRAM, 0); // udp socket
// later we bind...
int fd = socket(AF_UNIX, SOCK_STREAM, 0);
> netstat -nWp tcp (on OS X)
Active Internet connections
Proto Recv-Q Send-Q  Local Address          Foreign Address        (state)    
tcp4       0      0  192.168.0.6.49871      17.172.232.57.5223     ESTABLISHED
...
  TCP    192.168.100.2:9001     155.94.246.179:39255   ESTABLISHED     1312
  TCP    192.168.100.2:9001     171.25.193.9:61832     ESTABLISHED     1312
  TCP    192.168.100.2:9001     178.62.199.226:37912   ESTABLISHED     1312
  TCP    192.168.100.2:9001     188.193.64.150:40900   ESTABLISHED     1312
  TCP    192.168.100.2:9001     198.23.194.149:43970   ESTABLISHED     1312
  TCP    192.168.100.2:9001     198.49.73.11:38842     ESTABLISHED     1312
123.132.213.231         # IP address
               :1234    # port number
123.132.213.231:1234    # socket address