我想知道您是否可以使用套接字()直接在两台计算机之间进行通信,以太网电缆将一台计算机的端口直接连接到另一台计算机。
问题是,由于两台计算机都没有连接到路由器,因此无法为任何一台计算机提供IP地址。
是否可以制作没有IP地址的套接字?
答案 0 :(得分:3)
您不需要两台计算机的路由器通过TCP / IP或UDP进行通信。他们只需要IP地址。他们如何获得IP地址有三种机制:
DHCP,这通常是插入路由器或连接到Wifi网络时发生的情况。
手动IP配置,您可以在其中为每个网络接口明确配置静态IP地址。
Self-assigned link-local addresses,这是现代操作系统在没有从DHCP服务器获得任何帮助时通常采用的方法。
最有可能的是,您的两台计算机将使用#3并为自己分配169.254.x范围内的IP地址。您唯一的问题是发现实际分配的IP地址。您可以使用平台的命令行ifconfig
/ ipconfig
工具。
答案 1 :(得分:0)
拥有合适的软件,您可以为计算机分配内部IP,并使它们进行通信。这一切都取决于您的网络,以及它如何处理地址分配。
使用地址的唯一问题是让发件人知道地址并确保收件人将该地址用作他自己的地址。
例如,如果您决定计算机1具有IP 0.0.0.1
而计算机2具有IP 0.0.0.2
,则可以进行对话(在您自己的小对等网络内)。
答案 2 :(得分:0)
因为两台电脑都没有连接到路由器
路由器只需要路由数据包,顾名思义。这意味着让这些数据包跳跃,即将它们传递到下一个网段。
在您的情况下,您不需要任何网络跃点,因为您想在 LAN(局域网)内进行通信。为了让没有互联网连接的两台计算机能够相互通信,为每台计算机分配一个静态 IP 地址并用以太网电缆连接它们就足够了。这样,您实际上将在它们之间创建一个网络。
每个 IP 地址都是一个唯一的数字。 IPv4 地址是 32 位数字,而 IPv6 地址是 128 位数字。用于编写它们的点符号(例如 127.0.0.1)将此数字编码为四个八位字节,使用网络字节顺序(大端)。 IPv6 地址使用六个八位字节编写,而这些八位字节使用十六进制编号系统编写,而不是 IPv4 使用的十进制。
网络接口或网络驱动程序,取决于硬件接口是否实现传输层,拒绝任何源地址不适合您为接收接口设置的子网的 IP 数据包。 适合一个子网是什么意思?子网掩码是引擎盖下的位掩码,但它可能看起来不像,因为它使用点表示法编写,与任何 IP 地址的编写方式相同。因此,要检查 IP 地址 A
是否适合给定其基地址 B
和其网络掩码 C
的网络,请在 A - B
和 C
之间进行按位与运算; IP 地址适合网络当且仅当 (A - B) & C = (A - B)
。网络基地址和子网掩码用于标识节点(例如计算机)所在的网段。为了以单一、简洁的方式表示这两者,已经发明了 CIDR 表示法——它由后跟的网络基地址组成由网络掩码中前导 1 位的数量决定。例如,127.0.0.0/8 表示基地址为 127.0.0.0 和掩码为 255.0.0.0 的网络。
当网络节点发送 IP 数据包时,网络中的每个节点都会在硬件级别接收它。然后,如果目标地址符合为具有该地址的节点设置的子网,则该节点将实际接收数据包;否则,如果该节点不是路由器,则该数据包将被忽略;如果是,并且这个路由器也被设置为源接口的默认网关,则数据包将被路由到下一个网段,希望目的节点在那里。
例如,您的家庭 LAN 中有一台计算机,而您的家庭网络由调制解调器/路由器组成:后者充当网关,将数据包从您的计算机路由到 Internet。但是,如果您的计算机向 LAN 中的另一台计算机发送 TCP 数据包,则路由器不会做任何事情,无论是否有路由器,该数据包都会被目标节点接收 - 没有任何路由。
您希望两台计算机在 LAN 内相互通信,其中只有一台连接到更广泛的网络,从而可以访问 Internet。这意味着您不想更改可以访问 Internet 的计算机的 IP 地址或子网,但您可以对另一台计算机进行任意设置。
假设更广泛网络中计算机的 IP 地址为 192.168.1.100,其网络为 192.168.1.1/24。为了让另一台计算机进行通信,它的网络必须与 192.168.1.1/24 相交,并且该交集必须包含源 IP 地址和目标 IP 地址,以便发送接收的数据包。然后选择像 192.168.1.101 这样的 IP 地址和像 192.168.1.100/31 这样的网络就足够了,不需要任何默认网关。