范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

网络为什么断网了还能ping通127。0。0。1

  你女神爱不爱你,你问她,她可能不会告诉你。但网通不通,你 ping 一下就知道了。可能看到标题,你就知道答案了,但是你了解背后的原因吗?那如果把 127.0.0.1 换成 0.0.0.0 或 localhost 会怎么样呢?你知道这几个IP有什么区别吗?以前面试的时候就遇到过这个问题,大家看个动图了解下面试官和我当时的场景,求当时我的心里阴影面积。
  话不多说,我们直接开车。拔掉网线,断网。然后在控制台输入ping 127.0.0.1。$ ping 127.0.0.1 PING 127.0.0.1 (127.0.0.1): 56 data bytes 64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.080 ms 64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.093 ms 64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.074 ms 64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.079 ms 64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.079 ms ^C --- 127.0.0.1 ping statistics --- 5 packets transmitted, 5 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 0.074/0.081/0.093/0.006 ms
  说明,拔了网线,ping 127.0.0.1 是能ping通的。其实这篇文章看到这里,标题前半个问题已经被回答了。但是我们可以再想深一点。为什么断网了还能 ping 通 127.0.0.1 呢?这能说明你不用交网费就能上网吗?不能。首先我们需要进入基础科普环节。不懂的同学看了就懂了,懂的看了就当查漏补缺吧。
  什么是127.0.0.1
  首先,这是个 IPV4 地址。IPV4 地址有 32 位,一个字节有 8 位,共 4 个字节。其中127 开头的都属于回环地址,也是 IPV4 的特殊地址,没什么道理,就是人为规定的。而127.0.0.1是众多回环地址中的一个。之所以不是 127.0.0.2 ,而是 127.0.0.1,是因为源码里就是这么定义的,也没什么道理。/* Address to loopback in software to local host.  */ #define    INADDR_LOOPBACK     0x7f000001  /* 127.0.0.1   */
  IPv4 的地址是 32 位的,2的32次方,大概是40+亿。地球光人口就76亿了,40亿IP这点量,塞牙缝都不够,实际上IP也确实用完了。所以就有了IPV6, IPv6 的地址是 128 位的,大概是2的128次方≈10的38次方。据说地球的沙子数量大概是 10的23次方,所以IPV6的IP可以认为用不完。
  IPV4以8位一组,每组之间用 . 号隔开。IPV6就以16位为一组,每组之间用 : 号隔开。如果全是0,那么可以省略不写。
  在IPV4下的回环地址是 127.0.0.1,在IPV6下,表达为 ::1 。中间把连续的0给省略了,之所以不是7个 冒号,而是2个冒号: , 是因为一个 IPV6 地址中只允许出现⼀次两个连续的冒号。多说一句:在IPV4下用的是 ping 127.0.0.1 命令。在IPV6下用的是 ping6 ::1 命令。
  什么是 ping
  ping 是应用层命令,可以理解为它跟游戏或者聊天软件属于同一层。只不过聊天软件可以收发消息,还能点个赞什么的,有很多复杂的功能。而 ping 作为一个小软件,它的功能比较简单,就是尝试发送一个小小的消息到目标机器上,判断目的机器是否可达,其实也就是判断目标机器网络是否能连通。
  ping应用的底层,用的是网络层的ICMP协议。
  IP和ICMP和Ping所在分层
  虽然ICMP协议和IP协议都属于网络层协议,但其实ICMP也是利用了IP协议进行消息的传输。
  所以,大家在这里完全可以简单的理解为 ping 某个IP 就是往某个IP地址发个消息。
  TCP发数据和ping的区别
  一般情况下,我们会使用 TCP 进行网络数据传输,那么我们可以看下它和 ping 的区别。
  ping和其他应用层软件都属于应用层。
  那么我们横向对比一下,比方说聊天软件,如果用的是TCP的方式去发送消息。为了发送消息,那就得先知道往哪发。linux里万物皆文件,那你要发消息的目的地,也是个文件,这里就引出了socket 的概念。要使用 socket , 那么首先需要创建它。
  在 TCP 传输中创建的方式是 socket(AF_INET, SOCK_STREAM, 0);,其中 AF_INET 表示将使用 IPV4 里 host:port 的方式去解析待会你输入的网络地址。SOCK_STREAM 是指使用面向字节流的 TCP 协议,工作在传输层。创建好了 socket 之后,就可以愉快的把要传输的数据写到这个文件里。调用 socket 的sendto接口的过程中进程会从用户态进入到内核态,最后会调用到 sock_sendmsg 方法。
  然后进入传输层,带上TCP头。网络层带上IP头,数据链路层带上 MAC头等一系列操作后。进入网卡的发送队列 ring buffer ,顺着网卡就发出去了。
  回到 ping , 整个过程也基本跟 TCP 发数据类似,差异的地方主要在于,创建 socket 的时候用的socket(AF_INET,SOCK_RAW,IPPROTO_ICMP),SOCK_RAW 是原始套接字 ,工作在网络层, 所以构建ICMP(网络层协议)的数据,是再合适不过了。ping 在进入内核态后最后也是调用的 sock_sendmsg 方法,进入到网络层后加上ICMP和IP头后,数据链路层加上MAC头,也是顺着网卡发出。因此 本质上ping 跟 普通应用发消息 在程序流程上没太大差别。
  这也解释了为什么当你发现怀疑网络有问题的时候,别人第一时间是问你能ping通吗?因为可以简单理解为ping就是自己组了个数据包,让系统按着其他软件发送数据的路径往外发一遍,能通的话说明其他软件发的数据也能通。
  为什么断网了还能 ping 通 127.0.0.1
  前面提到,有网的情况下,ping 最后是通过网卡将数据发送出去的。那么断网的情况下,网卡已经不工作了,ping 回环地址却一切正常,我们可以看下这种情况下的工作原理。
  从应用层到传输层再到网络层。这段路径跟ping外网的时候是几乎是一样的。到了网络层,系统会根据目的IP,在路由表中获取对应的路由信息,而这其中就包含选择哪个网卡把消息发出。
  当发现目标IP是外网IP时,会从"真网卡"发出。当发现目标IP是回环地址时,就会选择本地网卡。本地网卡,其实就是个"假网卡",它不像"真网卡"那样有个ring buffer什么的,"假网卡"会把数据推到一个叫 input_pkt_queue 的 链表 中。这个链表,其实是所有网卡共享的,上面挂着发给本机的各种消息。消息被发送到这个链表后,会再触发一个软中断。
  专门处理软中断的工具人"ksoftirqd" (这是个内核线程),它在收到软中断后就会立马去链表里把消息取出,然后顺着数据链路层、网络层等层层往上传递最后给到应用程序。
  ping 回环地址和通过TCP等各种协议发送数据到回环地址都是走这条路径。整条路径从发到收,都没有经过"真网卡"。之所以127.0.0.1叫本地回环地址,可以理解为,消息发出到这个地址上的话,就不会出网络,在本机打个转就又回来了。所以断网,依然能 ping 通 127.0.0.1。
  ping回环地址和ping本机地址有什么区别
  我们在mac里执行 ifconfig 。$ ifconfig lo0: flags=8049 mtu 16384     inet 127.0.0.1 netmask 0xff000000     ... en0: flags=8863 mtu 1500     inet 192.168.31.6 netmask 0xffffff00 broadcast 192.168.31.255     ...
  能看到 lo0,表示本地回环接口,对应的地址,就是我们前面提到的 127.0.0.1 ,也就是回环地址。和 eth0,表示本机第一块网卡,对应的IP地址是192.168.31.6,管它叫本机IP。之前一直认为ping本机IP的话会通过"真网卡"出去,然后遇到第一个路由器,再发回来到本机。为了验证这个说法,可以进行抓包,但结果跟上面的说法并不相同。
  ping 127.0.0.1
  ping 本机地址
  可以看到 ping 本机IP 跟 ping 回环地址一样,相关的网络数据,都是走的 lo0,本地回环接口,也就是前面提到的"假网卡"。只要走了本地回环接口,那数据都不会发送到网络中,在本机网络协议栈中兜一圈,就发回来了。因此 ping回环地址和ping本机地址没有区别。
  127.0.0.1 和 localhost 以及 0.0.0.0 有区别吗
  回到文章开头动图里的提问,算是面试八股文里的老常客了。以前第一次用 nginx 的时候,发现用这几个 IP,都能正常访问到 nginx 的欢迎网页。一度认为这几个 IP 都是一样的。
  访问127.0.0.1:80
  访问localhost:80
  访问0.0.0.0:80
  访问本机的IP地址
  但本质上还是有些区别的。
  首先 localhost 就不叫 IP,它是一个域名,就跟 "baidu.com",是一个形式的东西,只不过默认会把它解析为 127.0.0.1 ,当然这可以在 /etc/hosts 文件下进行修改。所以默认情况下,使用 localhost 跟使用 127.0.0.1 确实是没区别的。其次就是 0.0.0.0,执行 ping 0.0.0.0 ,是会失败的,因为它在IPV4中表示的是无效的目标地址。$ ping 0.0.0.0 PING 0.0.0.0 (0.0.0.0): 56 data bytes ping: sendto: No route to host ping: sendto: No route to host
  但它还是很有用处的,回想下,我们启动服务器的时候,一般会 listen 一个 IP 和端口,等待客户端的连接。如果此时 listen 的是本机的 0.0.0.0 , 那么它表示本机上的所有IPV4地址。    /* Address to accept any incoming messages. */     #define    INADDR_ANY      ((unsigned long int) 0x00000000) /* 0.0.0.0   */
  举个例子。刚刚提到的 127.0.0.1 和 192.168.31.6 ,都是本机的IPV4地址,如果监听 0.0.0.0 ,那么用上面两个地址,都能访问到这个服务器。当然, 客户端 connect 时,不能使用 0.0.0.0 。必须指明要连接哪个服务器IP。
  总结
  127.0.0.1 是回环地址。localhost是域名,但默认等于 127.0.0.1。ping 回环地址和 ping 本机地址,是一样的,走的是lo0 "假网卡",都会经过网络层和数据链路层等逻辑,最后在快要出网卡前狠狠拐了个弯, 将数据插入到一个链表后就软中断通知 ksoftirqd 来进行收数据的逻辑,压根就不出网络。所以断网了也能 ping 通回环地址。如果服务器 listen 的是 0.0.0.0,那么此时用127.0.0.1和本机地址都可以访问到服务。

原神亿点点细节,当你在风龙废墟时,月亮会遮住天空岛?前言本期小白再来一期关于原神的冷知识,毕竟原宝的冷知识有点上头。No1虚假之天可能屏幕面前的玩家就有游玩两年的老玩家,曾经在原神开服的时候,过过关于散兵的任务,一个关于虚假之天的任古往今来,中国人为什么对月亮情有独钟?发现嫦娥石找到月壤水近日,一系列有关嫦娥五号月壤样品的最新研究成果相继发表,刷新着我们对月球的认知。从赏月咏月,到探月登月,中国人一直书写着关于月球的浪漫故事。在中国传统文化中,月德布劳内走弧线的小李飞刀德布劳内的传球让人非常舒适,又极具美感,感觉像山顶看星星,突然一颗流星划过,明朗了好多。对于很多球员来说能有一个这样的助攻可以吹嘘好一阵子,但丁丁可以做一个集锦了。一场比赛要是没有海天味业酱油茅个股深度分析海天味业总市值3837亿元,市盈率57倍。2022年中报营收135亿,同比增长9。7,净利润33。93亿,净利润增长1。21。2018年净利润增长23。62019年净利润增长22。2023年养老金继续上涨,四件事释放了好信号,是真的吗?2023年养老金会继续上涨吗?有四个积极信号预示着是比较乐观的,提前知晓转眼到了10月份,一年又快到年底了,每到年底这些老人最期待的事情,莫过于明年的养老金继续保持上调了毕竟许多人主要产油国决定,11月起大幅减产石油输出国组织(欧佩克)与非欧佩克产油国5日在奥地利首都维也纳举行第33次部长级会议,决定自今年11月起大幅减产,在8月产量的基础上将月度产量日均下调200万桶。此次减产规模相当于海天味业合理估值应该多少(下篇)小慢投资之路陪你慢慢变富对于最近风口浪尖的海天味业,我们上篇从行业角度进行了竞争力梳理,那么就具体的企业发展得怎么样,到底多少的估值合适入手呢,这次双标事件会不会给一次绝佳的投资机马蕴雯嫁美国当阔太!住LA富人区尔湾,和闺蜜血拼买1万爱马仕拖鞋10月6日消息,中国女排名将马蕴雯,跟随美国老公雷特拉尔森定居洛杉矶富人区尔湾,日前,马蕴雯在社交媒体上晒出了和闺蜜逛商场,买各种奢侈品,享受人生!马蕴雯的老公雷特拉尔森是美国著名你为什么是穷人激情能不能干成事,首先要看有没有激情。如果一个人很穷,而又成天无精打采,心神恍惚,并没有受到重大打击,就是不能进入状态,你难得看到他眉飞色舞的样子,更别指望他能感染旁人。他总是按部就班烛光泪水那天,我去上作文课,讲台上只放着一支红烛,一杯清水。烛光之美,世代相赞。遥想远古时代,洞房花烛之夜,男女执手相看,美目倩笑兮,彼此祝福永结同心,白头偕老,何等的罗漫蒂克,情态万般!五大科学未解之谜一旦解开或许宇宙世界将一览无遗一人死后会发生什么?从地球诞生以来,人类一直没有科学地证实过人死后去了哪儿,但是许多宗教方面的研究给出了答案,例如佛教认为人的生命本体是永不会消亡的。只有承载灵魂的肉体身命会有生灭
女单4强出炉,男单决出3席!骆健佑连丢12分!安赛龙再收退赛礼包北京时间1月20日,2023年印度羽毛球公开赛super750继续进行,国羽男单独苗李诗沣12无缘逆转世界第三金廷,决胜局一度106领先后连丢七分,落点判断失误较多,之后通过长短结欧洲航天局推动太空零碎片政策,拟强制公司和政府清除从地球发射的太空垃圾华尔街日报1月19日消息,欧洲航天局正推动一项零碎片政策,将强制要求公司和政府必须清除从地球发射的任何太空垃圾。欧洲航天局局长JosefAschbacher在达沃斯世界经济论坛发表4人20加时失利!大帝32分哈登三双轻松愉快!篮网想念杜兰特!四人得分20,勇士加时憾负凯尔特人!恩比德32分哈登取三双,76人轻取开拓者豪取四连胜!欧文复出砍30分,篮网不敌太阳惨遭四连败!四人20!勇士憾负绿军自从在上赛季总决赛里相遇后,豪取11连胜,联盟第1!40年来第一支球队,不过勇士却是你的克星2223赛季是联盟近10年竞争最为激烈的赛季,由于东西部都涌现了一批实力强劲的年轻球队,加上附加赛赛季的实施,减少了摆烂球队的数量,联盟很多球队之间的实力非常接近。像西部这边除了火萧华得分榜前五4名国际球员曾说球员只会扣篮现在又说投篮太多直播吧1月21日讯今日,NBA总裁亚当萧华接受了媒体采访。他先是谈到了目前的得分榜正如我在新闻发布会上提到的,现在领跑得分榜前5名球员中有4名是国际球员。这些伟大的球员现在来自世界美记雄鹿寻求交易得到一名运动型侧翼得分手来增强球队进攻直播吧1月21日讯据福克斯体育记者RicBucher报道,消息人士透露,雄鹿寻求交易得到一名运动型侧翼得分手来增强球队进攻。该记者表示,据此前报道,他们对尼克斯的雷迪什感兴趣,联盟PS三档新福利试玩1小时哥谭骑士PSN港服商店上线了哥谭骑士的会员限时试玩,PSPlus三档会员可试玩该作一小时,感兴趣的玩家可以去看一下。游戏商店页面目前PSPlus会员也迎来新一轮折扣,加入二档或三档会员可享强行出手!细数NBA强投能力最强的五大球星无视防守的能力!NBA对球星的防守都是很严密的,球星想要得到一个轻松的出手机会并不是很容易,很多情况下,他们需要面对防守,找寻不算机会的机会,将球投进,人们称其为强投,在NBA历史上,有些球员的强意大利旅游业期待中国游客回归旅游业是意大利支柱产业之一,随着中国近期优化调整出入境政策,意大利旅游推广部门和许多旅游企业表示,欢迎中国游客重返意大利,并会为他们提供优质服务。那不勒斯是意大利南部著名的港口城市阳康后有必要像坐月子一样养身体吗?权威回应阳康之后在营养搭配方面需注意什么有必要坐一个小月子吗如何科学补充营养北京协和医院临床营养科主任于康来解答资料图制作耿争阳康后如何营养搭配有必要坐月子吗阳康之后,应继续实施营养管理,B站2022直播年度之夜,虚拟主播数同比涨190,单品类年播放量达292亿1月18日,哔哩哔哩(以下简称B站)举办BLS(BILIBILILIVESTAR)2022哔哩哔哩直播年度之夜。娱乐主播绿茶味的陈姜姜获得2022年度总冠军视频唱见小妹睡不醒游戏主