当前位置: 首页 > news >正文

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

目录

1、简洁说明

localhost 

127.0.0.1

总结记忆

2、详细说明


1、简洁说明

localhost 

localhost 不会解析成ip,也不会占用网卡、网络资源 (到TCP/UDP,但不经过IP)

127.0.0.1

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

相关文章:

  • 【C/C++相互调用】C调用C++库和C++调用C库的方法
  • [STL]C++ STL中常见容器的时间复杂度
  • 【STL map】map用法、插入方法、pair和make_pair的区别
  • 【字符编码】 简洁理解ANSI,UTF8,Unicode,ASCII编码的差别
  • [MYSQL]mysql将两个表结果合并到一起
  • 【MYSQL】mysql把字段进行逗号分隔成多条数据
  • 【python备份】Python备份CSDN完整博客 研读
  • 【python】Python中yield的理解与使用|python生成器
  • 【数据结构】八大数据结构分类 研读笔记
  • 【python】list、tuple、dict、set、dataframe、narray、series之间的区别
  • 【python】python3.7数据分析入门学习笔记 研读
  • 【VS输出UTF8】 C++ 控制台程序中输出UTF8字符乱码问题解决方法
  • 【python】python一些热点问题
  • 【thrift】thrift 研究
  • 【人工智能】我的人工智能之旅——线性回归 研读
  • 网络传输文件的问题
  • css系列之关于字体的事
  • Java 网络编程(2):UDP 的使用
  • JavaScript-Array类型
  • JavaScript的使用你知道几种?(上)
  • Joomla 2.x, 3.x useful code cheatsheet
  • Python利用正则抓取网页内容保存到本地
  • session共享问题解决方案
  • SpriteKit 技巧之添加背景图片
  • Transformer-XL: Unleashing the Potential of Attention Models
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • Web标准制定过程
  • 从输入URL到页面加载发生了什么
  • 构建工具 - 收藏集 - 掘金
  • 那些被忽略的 JavaScript 数组方法细节
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 延迟脚本的方式
  • 带你开发类似Pokemon Go的AR游戏
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • #Linux(权限管理)
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (BFS)hdoj2377-Bus Pass
  • (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示
  • (C#)获取字符编码的类
  • (八十八)VFL语言初步 - 实现布局
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (二)学习JVM —— 垃圾回收机制
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (三)elasticsearch 源码之启动流程分析
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .equals()到底是什么意思?
  • .set 数据导入matlab,设置变量导入选项 - MATLAB setvaropts - MathWorks 中国
  • @SuppressWarnings注解
  • [ 数据结构 - C++]红黑树RBTree