网站网讯,一建的专业,青岛科技网站建设,平面设计培训班多少钱前言
IP 地址实际上并不是分配给计算机的#xff0c;而是分配给网卡的#xff0c;因此当计算机上存在多块网卡时#xff0c;每一块网卡都会有自己的 IP 地址。
绑定 127.0.0.1 是绑定到 lookback 这个虚拟的本地回环接口#xff0c;该接口只处理本机上的数据#xff0c;…前言
IP 地址实际上并不是分配给计算机的而是分配给网卡的因此当计算机上存在多块网卡时每一块网卡都会有自己的 IP 地址。
绑定 127.0.0.1 是绑定到 lookback 这个虚拟的本地回环接口该接口只处理本机上的数据如果服务器绑定 127.0.0.1 外部是无法访问的。
绑定 0.0.0.0 是绑定到所有可用的网络接口也就是说此时可以接受来自任何网络接口的连接请求外部是可以正常访问的。
在 ubuntu 系统可以用 ifconfig 命令查看网络接口信息Win 系统用 ipconfig 命令查看。
$ ifconfig
eth0: flags4163UP,BROADCAST,RUNNING,MULTICAST mtu 1500inet 172.30.36.166 netmask 255.255.240.0 broadcast 172.30.47.255lo: flags73UP,LOOPBACK,RUNNING mtu 65536inet 127.0.0.1 netmask 255.0.0.0下面用代码来演示两种情况的区别。
绑定 127.0.0.1
以下代码由 通义千问 2.5 生成
func handleConnection(conn net.Conn) {defer conn.Close()scanner : bufio.NewScanner(conn)for scanner.Scan() {text : scanner.Text()fmt.Println(Received:, text)_, err : conn.Write([]byte(text \n))if err ! nil {fmt.Println(Error writing to socket:, err)break}}if err : scanner.Err(); err ! nil {fmt.Println(Error reading from socket:, err)}
}func main() {port : 8080listener, err : net.Listen(tcp, 127.0.0.1:port)if err ! nil {fmt.Println(Error listening:, err.Error())os.Exit(1)}defer listener.Close()fmt.Println(Listening on: port)for {conn, err : listener.Accept()if err ! nil {fmt.Println(Error accepting:, err.Error())continue}go handleConnection(conn)}
}运行这段代码
$ go run echo.go
Listening on:8080先在本机使用 telnet 测试能否访问
$ telnet 127.0.0.1 8080
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is ^].
hello
hello此时一切正常服务器可以正常响应。
再换另一台计算机测试
$ telnet 47.100.200.202 8080
Trying 47.100.200.202...
telnet: Unable to connect to remote host: Connection refused直接报错不能访问。
这里访问的 47.100.200.202 是服务器的公网 IP上面的 172.30.36.166 是内网 IP。
绑定 0.0.0.0
将 127.0.0.1 修改为 0.0.0.0 后重新运行。
listener, err : net.Listen(tcp, 0.0.0.0:port)还是先在本机测试
$ telnet 127.0.0.1 8080
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is ^].
hi
hi还是可以正常访问没有问题。
再换到另一台计算机测试
$ telnet 47.100.200.202 8080
Trying 47.100.200.202...
Connected to 47.100.200.202.
Escape character is ^].
hello hi
hello hi这时就可以正常访问了。
参考资料
《网络是怎样连接的》断网了还能 ping 通 127.0.0.1 吗