C 套接字编程中的接口是什么?
这就是我遇到的陈述 这里的接口是什么?是端口号还是别的什么 另一个问题是C 套接字编程中的接口是什么?,c,sockets,C,Sockets,这就是我遇到的陈述 这里的接口是什么?是端口号还是别的什么 另一个问题是 接口和通道是同一个还是同一个?据我所知,套接字接口是这样的 对 网络 每个传输协议都提供一组服务。socketapi 提供访问这些服务的抽象 API定义了创建、关闭、读取和写入的函数调用 到/从插座 也像这样 网络接口是计算机与专用或公用网络之间的互连点。网络接口通常是网络接口卡(NIC),但不必具有物理形式。相反,网络接口可以用软件实现 例如,环回接口(对于IPv4为127.0.0.1,对于IPv6为::1)不是一个物理
接口和通道是同一个还是同一个?据我所知,套接字接口是这样的
例如,环回接口
(对于IPv4为127.0.0.1,对于IPv6为::1)
不是一个物理设备,而是一个模拟网络接口的软件。环回接口通常用于测试环境接口示例:
- 您可以插入网络电缆的LAN卡
- wifi适配器
- (仅限软件)在主系统和虚拟机之间提供虚拟网络的东西
- (仅限软件)环回适配器,它将您发送给它的所有内容“返回”到您自己的计算机
客户端连接可能来自何处。
仅从虚拟机,但外部没有真正的计算机?
只有wifi,但没有有线局域网?还是全部加在一起?通常您的主机(您的计算机)有多个接口。例如,没有网络的(较旧的)计算机将只有IPv4
环回接口
如果您将IPv4网络添加并配置到该PC,您将获得另一个接口:eth0
,或net0
或类似的接口
当您安装VPN时,它将为您创建另一个接口,因为您没有将数据包发送到不安全的网络,而是将其发送到逻辑VPN接口,该接口在经过一些处理后将数据转发到eth0
每次向网络添加硬件链接(带驱动程序)或创建逻辑网络时,都会创建一个新接口。例如,如果您使用VMVare并创建虚拟机,系统将为您提供在主机、网络和虚拟机之间路由数据所需的一些接口集
路由IPv4时,为每个接口分配IPv4地址。偶数环回(127.0.0.1)。地址可以是静态的,也可以在系统启动时从服务器获取
因此,您只能在一个接口上侦听。例如,如果您绑定到环回,您将无法访问任何网络,并且网络主机将无法访问您的套接字(假设路由未中断)。但是,您可以将主机上的多个进程相互连接
如果您绑定到特定的网络接口,这意味着您希望使用(直接或间接)连接到该网络的系统
如果您绑定到any
,对于服务器套接字,这意味着您允许系统接受来自anywhere
的连接,考虑到anywhere
可以ping您。接口是操作系统可见的(或多或少真实的)网络接口,位于端口号之下,也就是说。您可以在一个接口上的端口上侦听,同时不在另一个接口上侦听。@Robert“您可以在一个接口上的端口上侦听,同时不在另一个接口上侦听”。我对此不清楚
"INADDR_ANY binds the socket to all available interfaces."