我不确定这是网络问题,还是码头问题,但我很难从局域网中的另一台机器上获得服务器的响应,该服务器在Docker容器的3000端口上运行nodejs服务器。我使用Mac电脑作为客户端,Linux计算机作为服务器。以下是我所采取的步骤:
用<name of computer>.local:<port>在局域网上测试与独立计算机的连接
在Linux机器上运行服务器(只使用没有容器的nodejs )
在Mac (客户端)计算机上运行curl <name of linux computer>.local:3000
按预期工作
在Docker容器中运行
在TCP/IP图的子网寻址,第1卷:协议中,有这样的描述:This makes sense because class A and class B addresses have too many bits allocated for the host ID: 16384 - 2 and 65536 - 2, respectively.,我认为这是Subnet Addressing的原因,但是我不知道在哪里可以找到协议,协议描述了任何两个主机只有拥有相同的network id和subnet id才能相互通信。这是相对于Ethernet?但我没有找到关于它的描述。我知道一定有什么东西我错过了!
例
我使用以下命令将Linux盒配置为开关模式:
ip link add name switch type bridge
ifconfig switch 192.168.1.2
ip link set switch up
ip link set swp0 master switch && ip link set swp0 up
ip link set swp1 master switch && ip link set swp1 up
ip link set swp2 master switch && ip link set swp2 up
ip li
我正在尝试使用以下代码获取linux系统的MAC地址:
try {
ip = InetAddress.getLocalHost();
NetworkInterface network = NetworkInterface.getByInetAddress(ip);
byte[] mac = network.getHardwareAddress();
// System.out.print("Current MAC address: ");
for (int i = 0; i < mac.length; i++) {
is = is + Inte
在Arch Linux ARM (Raspberry Pi)内核4.4.37上,我创建了一个macvlan。
ip link add link eth0 mac0 type macvlan
然后,macvlan虚拟网卡出现在列表中,因此我给它分配了一个IP地址,并将链接状态设置为up。(顺便说一下,我尝试过bridge、vepa和private模式。)
然后,我可以从我的Windows客户端平IP,但是当我在Windows中检查ARP缓存(arp -a)时,它们显示的是与主(物理)网络适配器相同的MAC地址,而不是新创建的macvlan MAC地址。
我确保清除ARP缓存,尝试一个客户以前从未