监听不同ip地址的差异

IP类型

IP地址一共分为A~E5类,它们分类的依据是其net-id所占的字节长度以及网络号前几位。

  • A类地址:网络号占1个字节。网络号的第一位固定为0。
  • B类地址:网络号占2个字节。网络号的前两位固定为10。
  • C类地址:网络号占3个字节。网络号的前三位固定位110。
  • D类地址:前四位是1110,用于多播(multicast),即一对多通信。
  • E类地址:前四位是1111,保留为以后使用。

特殊地址

  • 127.0.0.1:回环地址。该地址指电脑本身,主要预留测试本机的TCP/IP协议是否正常。只要使用这个地址发送数据,则数据包不会出现在网络传输过程中。
  • 10.x.x.x、172.16.x.x~172.31.x.x、192.168.x.x:这些地址被用做内网中。用做私网地址,这些地址不与外网相连。
  • 255.255.255.255:广播地址
  • 0.0.0.0:这个IP地址在IP数据报中只能用作源IP地址

    • IPV4中,0.0.0.0地址被用于表示一个无效的,未知的或者不可用的目标。
    • 在服务器中,0.0.0.0指的是本机上的所有IPV4地址,如果一个主机有两个IP地址,192.168.1.1 和 10.1.2.1,并且该主机上的一个服务监听的地址是0.0.0.0,那么通过两个ip地址都能够访问该服务。
    • 在路由中,0.0.0.0表示的是默认路由,即当路由表中没有找到完全匹配的路由的时候所对应的路由。
  • localhost: 只是一个域名,可以代表任何IP地址。在/etc/hosts文件下默认配置了127.0.0.1

后端监听ip地址的三种主要的方式

  • 监听到127.0.0.1
  • 监听到0.0.0.0
  • 监听到主机内网ip

监听127.0.0.1

  1. 本机通过127.0.0.1访问成功,网络接口为loopback
  2. 本机通过局域网IP 192.168.0.113访问失败,网络接口为loopback
  3. 同一局域网下的外部主句通过局域网IP 192.168.0.112访问失败,网络接口-et1

因此,在实际应用中,我们在服务端监听ip地址的时候不要绑定到127.0.0.1,如果绑定到了127.0.0.1,会导致我们的应用只能在本地127.0.0.1访问,其他人无法通过其他任何方式进行访问

监听0.0.0.0

  1. 本机通过127.0.0.1访问成功,网络接口为loopback
  2. 本机通过局域网IP 192.168.0.113 访问成功,网络接口为loopback
  3. 同一局域网下的外部主句通过局域网IP 192.168.0.112访问成功,网络接口-et1

比如我有一台服务器,一个外网A,一个内网B,如果我绑定的端口指定了0.0.0.0,那么通过内网地址或外网地址都可以访问我的应用。

监听主机内网ip 192.168.0.113

  1. 本机通过127.0.0.1访问失败,网络接口为loopback
  2. 本机通过局域网IP 192.168.0.113 访问成功,网络接口为loopback
  3. 同一局域网下的外部主句通过局域网IP 192.168.0.112访问成功,网络接口-et1

总结

  • 在实际应用中,最好的监听ip地址方式为:监听到0.0.0.0,nodejs demo如下:
var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World');
}).listen(5500, '0.0.0.0');
  • 或者nodejs也可以不监听指定的ip,也可
var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World');
}).listen(5500);

前端菜鸟-DodoMonster
大家猴,我是一只好菜好菜的前端菜鸟-DodoMonster

DodoMonster want to be an excellent Web Font-End Developer.Fighting!!!

2.1k 声望
629 粉丝
0 条评论
推荐阅读
Nuxt项目支持eslint+pritter+typescript
npx create-nuxt-app <项目名>,如:npx create-nuxt-app nuxt-ts,按照提示安装你想要的东西,本次项目预装: Universal模式下koa+PWA+linter+prettier+axios ,默认的项目目录如下:

dodomonster12阅读 8.3k评论 3

Apache 中 ServerTokens 参数设置详解
ServerTokens 参数设置 http 头部返回的 apache 版本信息,可用的值和含义如下:ServerTokens 参数值意义ServerTokens Prod仅软件名称例如:apacheServerTokens Major包括主版本号例如:apache/2ServerTokens Min...

danielxue7阅读 3.5k

「Go 框架」bind 函数:gin 框架中是如何绑定请求数据的?
在gin框架中,我们知道用bind函数(或bindXXX函数)能够将请求体中的参数绑定到对应的结构体上。同时,你也会发现在gin中有很多bind或bindXXX函数,比如ShouldBind、ShouldBindQuery、ShouldBindHeader、ShouldBi...

Go学堂1阅读 1.3k

封面图
EventSource 引发的一系列事件
大家好,我是江辰,最近小小的实现了下 chatGPT 的问答式回复,调研了前端如何实现这种问答式请求,有几种方案,Http、EventSource、WebSocket,三种实现方案各有优缺点,Http 和 WebSocket ,想必大家耳闻能详,...

江辰阅读 1.2k

封面图
一步搞定IP地址查询:这个在线工具帮你快速掌握设备的位置信息!
  今天分享一个免费的在线工具来查询IP地址所在的地理位置。可以通过IP地址所属的网络运营商和其他相关信息来确定设备的位置,包括国家、地区、城市和经纬度等信息。

不一样的科技宅2阅读 528

【开源之夏 2023】欢迎报名 MOSN 社区项目!
开源之夏是由“开源软件供应链点亮计划”发起并长期支持的一项暑期开源活动,旨在鼓励在校学生积极参与开源软件的开发维护,促进优秀开源软件社区的蓬勃发展,培养和发掘更多优秀的开发者。

SOFAStack阅读 1.1k

封面图
HDC技术分论坛:HarmonyOS新一代UI框架的全面解读
在Harmony 3.0.0开发者预览版中,包含了新一代的声明式UI框架ArkUI 3.0、多语言跨平台编译器ArkCompiler 3.0、跨端开发工具DevEco Studio3.0,以及基于TS/JS语言的API 7,全面提升开发者体验。

HarmonyOS开发者阅读 962

DodoMonster want to be an excellent Web Font-End Developer.Fighting!!!

2.1k 声望
629 粉丝
宣传栏