localhost (IP都没有,不到网络层IP也不到链路层MAC)
127.0.0.1 (有IP,只到网络层IP走网卡,不到链路层MAC)
localhost (IP都没有,不到网络层IP也不到链路层MAC)
localhost 不会解析成ip,也不会占用网卡、网络资源 (到TCP/UDP,但不经过IP)
127.0.0.1 (有IP,只到网络层IP走网卡,不到链路层MAC)
127.0.0.1 回环地址,不经过[链路层,物理层](网络接口层),在IP层就回去,依赖网卡,并受到网络防火墙和网卡相关的限制
localhost 连IP都没有,所以不会经过IP层(不会加IP头,只加TCP头)
127.0.0.1 有IP,但不是网络IP,所以没法解析成MAC地址,所以不会经过MAC层(不会加MAC头)
1.什么是环回地址?与127.0.0.1的区别呢?
环回地址是主机用于向自身发送通信的一个特殊地址(也就是一个特殊的目的地址)。
可以这么说:同一台主机上的两项服务若使用环回地址而非分配的主机地址,就可以绕开TCP/IP协议栈的下层(网络接口层ARP)。不用再通过什么链路层,物理层,以太网传出去了,而是可以直接在自己的网络层,传输层进行处理了。
IPv4的环回地址为:127.0.0.0到127.255.255.255都是环回地址(只是有两个特殊的保留),此地址中的任何地址都不会出现在网络中。
网络号为127的地址根本就不是一个网络地址(因为产生的IP数据报就不会到达外部网络接口中,是不离开主机的包)
当操作系统初始化本机的TCP/IP协议栈时,设置协议栈本身的IP地址为127.0.0.1(保留地址),并注入路由表。
当IP层接收到目的地址为127.0.0.1(准确的说是:网络号为127的IP)的数据包时,不调用网卡驱动进行二次封装,而是立即转发到本机IP层进行处理。
由于不涉及底层操作,ping 127.0.0.1一般作为测试本机TCP/IP协议栈正常与否的判断之一。
所以说:127.0.0.1是保留地址之一,只是被经常的使用,来检验本机TCP/IP协议栈而已
如果我们可以ping通的话,就说明 本机的网卡和IP协议安装都没有问题(跟我们当前主机有没有联网没有一点关系)。
2.关于localhost
localhost首先是一个域名(如同:www.baidu.com),也是本机地址,它可以被配置为任意的IP地址(也就是说,可以通过hosts这个文件进行更改的)。
不过通常情况下都指向:(如下)
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
整个127.*网段通常被用作loopback网络接口的默认地址,按照惯例通常设置为127.0.0.1。
我们当前这个主机上的这个地址,别人不能访问,即使访问,也是访问自己。
因为每一台TCP/IP协议栈的设备基本上都有local/127.0.0.1
- 关于本机IP
本机IP,我们可以理解为本机有三块网卡,一块网卡叫做 loopback(虚拟网卡),一块叫做 ethernet(有线网卡),一块叫做 wlan(你的无线网卡)。
127.0.0.1是一个回送(loopback)地址,指本地机,一般用来测试使用
127.0.0.1是通过网卡传输,依赖网卡,并受到网络防火墙和网卡相关的限制,这也是跟localhost重要区别之一,localhost是不走网卡的,因此防火墙设置对localhost是无效的。
正常的网络包都是从ip层进入链路层,然后发送到网络上,而发向127.0.0.1的包,直接在IP层短路了,也就是发到IP层的包直接被IP层接收了,不再向下发送。这也就决定了web应用绑定在127.0.0.1上是不可能被公网访问到的。
一般设置程序时本地服务用localhost是最好的,localhost不会解析成ip,也不会占用网卡、网络资源。
有时候用localhost可以,但用127.0.0.1就不可以(网卡,网络资源问题)的原因就在这里。
猜想localhost访问时,系统带的本机当前用户的权限去访问,而用ip的时候,等于本机是通过网络再去访问本机,可能涉及到网络用户的权限。
参考
localhost和127.0.0.1的区别有哪些?
https://www.xiaohulizyw.com/1129.html
实际应用中,TCP/IP协议栈是如何工作的?
https://www.zhihu.com/question/282275199/answer/425832184?ivk_sa=1024320u