Bootstrap

【IP/TCP】127.0.0.1和localhost和本机IP三者的区别

目录

1、简洁说明

localhost (IP都没有,不到网络层IP也不到链路层MAC)

127.0.0.1 (有IP,只到网络层IP走网卡,不到链路层MAC)

总结记忆

2、详细说明



1、简洁说明

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头)

2、详细说明

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首先是一个域名(如同:www.baidu.com),也是本机地址,它可以被配置为任意的IP地址(也就是说,可以通过hosts这个文件进行更改的),不过通常情况下都指向:(如下)
IPv4:表示   127.0.0.1

IPv6:表示   [::1]

整个127.*网段通常被用作loopback网络接口的默认地址,按照惯例通常设置为127.0.0.1。我们当前这个主机上的这个地址,别人不能访问,即使访问,也是访问自己。因为每一台TCP/IP协议栈的设备基本上都有local/127.0.0.1


3,

本机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的时候,等于本机是通过网络再去访问本机,可能涉及到网络用户的权限。


原文:https://blog.csdn.net/msdnwolaile/article/details/51278867

原文:https://blog.csdn.net/xifeijian/article/details/12879395

 

不为人知的网络编程(十三):深入操作系统,彻底搞懂127.0.0.1本机网络通信 - SegmentFault 思否 

;