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

为什么我在公司里访问不了家里的电脑?

  因为IPv4地址有限,最大42亿个。为了更好的利用这有限的IP数量,网络分为局域网和广域网,将IP分为了私有IP和公网IP,一个局域网里的N多台机器都可以共用一个公网IP,从而大大增加了"可用IP数量"。
  当我们需要发送网络包的时候,在IP层,需要填入源IP地址,和目的IP地址,也就是对应快递的发货地址和收货地址。
  但是我们家里的局域网内,基本上都用192.168.xx.xx这样的私有IP。
  如果我们在发送网络包的时候,这么填。对方在回数据包的时候该怎么回?毕竟千家万户人用的都是192.168.0.1,网络怎么知道该发给谁?
  所以肯定需要将这个192.168.xx私有IP转换成公有IP。
  因此在上篇文章最后,留了这么个问题。局域网内用的是私有IP,公网用的都是公有IP。一个局域网里的私有IP想访问局域网外的公有IP,必然要做个IP转换,这是在哪里做的转换呢?
  答案是NAT设备,全称Network Address Translation,网络地址转换。基本上家用路由器都支持这功能。
  我们来聊下它是怎么工作的:NAT的工作原理
  为了简单,我们假设你很富,你家里分到了一个公网IP地址 20.20.20.20,对应配到了你家自带NAT功能的家用路由器上,你家里需要上网的设备有很多,比如你的手机,电脑都需要上网,他们构成了一个局域网,用的都是私有IP,比如192.168.xx。其中你在电脑上执行ifconfig命令,发现家里的电脑IP是192.168.30.5。 你要访问的公网IP地址是30.30.30.30。
  于是就有下面这样一张图
  当你准备发送数据包的时候,你的电脑内核协议栈就会构造一个IP数据包。这个IP数据包报头里的发送端IP地址填的就是192.168.30.5,接收端IP地址就是30.30.30.30。将数据包发到NAT路由器中。
  此时NAT路由器会将IP数据包里的源IP地址修改一下,私有IP地址192.168.30.5改写为公网IP地址20.20.20.20,这叫SNAT(Source Network Address Translation,源地址转换)。并且还会在NAT路由器内部留下一条 192.168.30.5 -> 20.20.20.20的映射记录,这个信息会在后面用到。之后IP数据包经过公网里各个路由器的转发,发到了接收端30.30.30.30,到这里发送流程结束。
  如果接收端处理完数据了,需要发一个响应给你的电脑,那就需要将发送端IP地址填上自己的30.30.30.30,将接收端地址填为你的公网IP地址20.20.20.20,发往NAT路由器。NAT路由器收到公网来的消息之后,会检查下自己之前留下的映射信息,发现之前留下了这么一条 192.168.30.5 -> 20.20.20.20记录,就会将这个数据包的目的IP地址修改一下,变成内网IP地址192.168.30.5, 这也叫DNAT(Destination Network Address Translation,目的地址转换)。 之后将其转发给你的电脑上。
  整个过程下来,NAT悄悄的改了IP数据包的发送和接收端IP地址,但对真正的发送方和接收方来说,他们却对这件事情,一无所知。
  这就是NAT的工作原理。
  NAPT的原理
  到这里,相信大家都有一个很大的疑问。
  局域网里并不只有一台机器,局域网内每台机器都在NAT下留下的映射信息都会是 192.168.xx.xx -> 20.20.20.20,发送消息是没啥事,但接收消息的时候就不知道该回给谁了。
  这问题相当致命,因此实际上大部分时候不会使用普通的NAT。
  那怎么办呢?
  问题出在我们没办法区分内网里的多个网络连接。
  于是乎:
  我们可以加入其他信息去区分内网里的各个网络连接,很自然就能想到端口。
  但IP数据包(网络层)本身是没有端口信息的。常见的传输层协议TCP和UDP数据报文里才有端口的信息。
  于是流程就变成了下面这样子:
  当你准备发送数据包的时候,你的电脑内核协议栈就会先构造一个TCP或者UDP数据报头,里面写入端口号,比如发送端口是5000,接收端口是3000,然后在这个基础上,加入IP数据报头,填入发送端和接收端的IP地址。
  那数据包长这样。
  假设,发送端IP地址填的就是192.168.30.5,接收端IP地址就是30.30.30.30。
  将数据包发到NAT路由器中。
  此时NAT路由器会将IP数据包里的源IP地址和端口号修改一下,从192.168.30.5:5000改写成20.20.20.20:6000。并且还会在NAT路由器内部留下一条 192.168.30.5:5000 -> 20.20.20.20:6000的映射记录。之后数据包经过公网里各个路由器的转发,发到了接收端30.30.30.30:3000,到这里发送流程结束。
  接收端响应时,就会在数据包里填入发送端地址是30.30.30.30:3000,将接收端是20.20.20.20:6000,发往NAT路由器。NAT路由器发现下自己之前留下过这么一条 192.168.30.5:5000 -> 20.20.20.20:6000的记录,就会将这个数据包的目的IP地址和端口修改一下,变回原来的192.168.30.5:5000。 之后将其转发给你的电脑上。
  如果局域网内有多个设备,他们就会映射到不同的公网端口上,毕竟端口最大可达65535,完全够用。这样大家都可以相安无事。
  像这种同时转换IP和端口的技术,就是NAPT(Network Address Port Transfer , 网络地址端口转换 )。
  看到这里,问题就来了。
  那这么说只有用到端口的网络协议才能被NAT识别出来并转发?
  但这怎么解释ping命令?ping基于ICMP协议,而ICMP协议报文里并不带端口信息。我依然可以正常的ping通公网机器并收到回包。
  事实上针对ICMP协议,NAT路由器做了特殊处理。ping报文头里有个Identifier的信息,它其实指的是放出ping命令的进程id。
  对NAT路由器来说,这个Identifier的作用就跟端口一样。
  另外,当我们去抓包的时候,就会发现有两个Identifier,一个后面带个BE(Big Endian),另一个带个LE(Little Endian)。
  其实他们都是同一个数值,只不过大小端不同,读出来的值不一样。就好像同样的数字345,反着读就成了543。这是为了兼容不同操作系统(比如linux和Windows)下大小端不同的情况。
  内网穿透是什么
  看到这里,我们大概也发现了。使用了NAT上网的话,前提得内网机器主动请求公网IP,这样NAT才能将内网的IP端口转成外网IP端口。
  反过来公网的机器想主动请求内网机器,就会被拦在NAT路由器上,此时由于NAT路由器并没有任何相关的IP端口的映射记录,因此也就不会转发数据给内网里的任何一台机器。
  举个现实中的场景就是,你在你家里的电脑上启动了一个HTTP服务,地址是192.168.30.5:5000,此时你在公司办公室里想通过手机去访问一下,却发现访问不了。
  那问题就来了,有没有办法让外网机器访问到内网的服务?
  有。
  大家应该听过一句话叫,"没有什么是加中间层不能解决的,如果有,那就再加一层"。
  放在这里,依然适用。
  说到底,因为NAT的存在,我们只能从内网主动发起连接,否则NAT设备不会记录相应的映射关系,没有映射关系也就不能转发数据。
  所以我们就在公网上加一台服务器x,并暴露一个访问域名,再让内网的服务主动连接服务器x,这样NAT路由器上就有对应的映射关系。接着,所有人都去访问服务器x,服务器x将数据转发给内网机器,再原路返回响应,这样数据就都通了。这就是所谓的内网穿透。
  像上面提到的服务器x,你也不需要自己去搭,已经有很多现成的方案,花钱就完事了,比如花某壳。
  到这里,我们就可以回答文章标题的问题。
  为什么我在公司里访问不了家里的电脑?
  那是因为家里的电脑在局域网内,局域网和广域网之间有个NAT路由器。由于NAT路由器的存在,外网服务无法主动连通局域网内的电脑。两个内网的聊天软件如何建立通讯
  好了,问题就叒来了。
  我家机子是在我们小区的局域网里,班花家的机子也是在她们小区的局域网里。都在局域网里,且NAT只能从内网连到外网,那我电脑上登录的QQ是怎么和班花电脑里的QQ连上的呢?
  上面这个问法其实是存在个误解,误以为两个qq客户端应用是直接建立连接的。
  然而实际上并不是,两个qq客户端之间还隔了一个服务器。
  也就是说,两个在内网的客户端登录qq时都会主动向公网的聊天服务器建立连接,这时两方的NAT路由器中都会记录有相应的映射关系。当在其中一个qq上发送消息时,数据会先到服务器,再通过服务器转发到另外一个客户端上。反过来也一样,通过这个方式让两台内网的机子进行数据传输。两个内网的应用如何直接建立连接
  上面的情况,是两个客户端通过第三方服务器进行通讯,但有些场景就是要抛开第三端,直接进行两端通信,比如P2P下载,这种该怎么办呢?
  这种情况下,其实也还是离不开第三方服务器的帮助。
  假设还是A和B两个局域网内的机子,A内网对应的NAT设备叫NAT_A,B内网里的NAT设备叫NAT_B,和一个第三方服务器server。
  流程如下:
  step1和2: A主动去连server,此时A对应的NAT_A就会留下A的内网地址和外网地址的映射关系,server也拿到了A对应的外网IP地址和端口。
  step3和4: B的操作和A一样,主动连第三方server,NAT_B内留下B的内网地址和外网地址的映射关系,然后server也拿到了B对应的外网IP地址和端口。
  step5和step6以及step7: 重点来了。此时server发消息给A,让A主动发UDP消息到B的外网IP地址和端口。此时NAT_B收到这个A的UDP数据包时,这时候根据NAT_B的设置不同,导致这时候有可能NAT_B能直接转发数据到B,那此时A和B就通了。但也有可能不通,直接丢包,不过丢包没关系,这个操作的目的是给NAT_A上留下有关B的映射关系。
  step8和step9以及step10: 跟step5一样熟悉的配方,此时server再发消息给B,让B主动发UDP消息到A的外网IP地址和端口。NAT_B上也留下了关于A到映射关系,这时候由于之前NAT_A上有过关于B的映射关系,此时NAT_A就能正常接受B的数据包,并将其转发给A。到这里A和B就能正常进行数据通信了。这就是所谓的NAT打洞。
  step11: 注意,之前我们都是用的UDP数据包,目的只是为了在两个局域网的NAT上打个洞出来,实际上大部分应用用的都是TCP连接,所以,这时候我们还需要在A主动向B发起TCP连接。到此,我们就完成了两端之间的通信。
  这里估计大家会有疑惑。端口已经被udp用过了,TCP再用,那岂不是端口重复占用(address already in use)?
  其实并不会,端口重复占用的报错常见于两个TCP连接在不使用SO_REUSEADDR的情况下,重复使用了某个IP端口。而UDP和TCP之间却不会报这个错。之所以会有这个错,主要是因为在一个linux内核中,内核收到网络数据时,会通过五元组(传输协议,源IP,目的IP,源端口,目的端口)去唯一确定数据接受者。当五元组都一模一样的时候,内核就不知道该把数据发给谁。而UDP和TCP之间"传输协议"不同,因此五元组也不同,所以也就不会有上面的问题。
  NAPT还分为好多种类型,上面的nat打洞方案,都能成功吗?
  关于NAPT,确实还细分为好几种类型,比如完全锥形NAT和限制型NAT啥的,但这并不是本文的重点。所以我就略过了。我们现在常见的都是锥形NAT。上面的打洞方案适用于大部分场景,这其中包括限制最多的端口受限锥形NAT。
  总结IPV4地址有限,但通过NAT路由器,可以使得整个内网N多台机器,对外只使用一个公网IP,大大节省了IP资源。内网机子主动连接公网IP,中间的NAT会将内网机子的内网IP转换为公网IP,从而实现内网和外网的数据交互。普通的NAT技术,只会修改网络包中的发送端和接收端IP地址,当内网设备较多时,将有可能导致冲突。因此一般都会使用NAPT技术,同时修改发送端和接收端的IP地址和端口。由于NAT的存在,公网IP是无法访问内网服务的,但通过内网穿透技术,就可以让公网IP访问内网服务。一波操作下来,就可以在公司的网络里访问家里的电脑。
  最后留个问题,有了NAT之后,原本并不富裕的IPv4地址突然就变得非常够用了。
  那我们为什么还需要IPv6?
  另外IPv6号称地址多到每粒沙子都能拥有自己的IP地址,那我们还需要NAT吗?
  作者:小白debug
  链接:https://juejin.cn/post/7170850066473680927

向太宣布郭碧婷怀二胎,暗指要生儿子,为何女星争做豪门生育机器5月19号,向太在聚会中向媒体透露,自己即将又要做奶奶了。儿媳妇郭碧婷预产期就在下一个月,而且用一个好字暗指这一胎是孙子。网友算了一下,如果预产期在下个月,那郭碧婷是出了哺乳期就又丽江酒吧歌手月薪8万却不敢交女朋友,抽10元钱香烟,借住朋友家我叫阿良今年27岁。在丽江古城里做歌手,每个月收入加上小费十几万块钱,可现在只能抽十几元的香烟,别人都是身边美女如云,我却不敢交女朋友,现在还借住在好友小林的公寓,下面我来跟你讲一阿司匹林每天吃一片,有哪些益处和风险?如果你正在吃,快来看看阿司匹林的发明已有100多年的历史,它被人们誉为神药,可以说是每户家庭都必备的药品,尤其是有老人家的家庭,经常会需要用到它,所以它对于人们来说一点都不陌生。阿司匹林是一种古老而简单考个证就可以多赚数万元!你还在交这些智商税吗?近年来,随着政策的推动和经济的发展,不同领域的新词不断闯入公众视线。有些不但成为高频热词,更演变成了就业新方向,而一些培训机构却将其作为了新的宣传噱头。只需要缴纳报名费,不用参加培建议大家卧室床别买这5种!既贵又不实用,妥妥智商税卧室床是最重要的家具,它的好坏直接影响到睡眠的舒适感。现在市面上床的款式种类多,很容易让人挑花眼,一个不小心就踩坑。作为过来人,我建议大家千万别选下面这5种床,真的是既贵又不实用。吃鸡官宣新联动,新武器把敌人变成球,捡洗发水兑奖励大家好,欢迎来到由小鱼干开讲的吃鸡新鲜事速报,和平小店这波热度总算是稍微过去了,这些天小鱼干每天都在发和平小店,差不多的话都已经说过好几遍了。但其实和平小店还没有结束,在5。29还也谈人教版数学插画近日人教版数学教材的插画丑图跟吴勇上了热搜。作为河北的家长一开始并未注意,因为我们用的数学课本是冀教版,插画图还算正常的卡通吧。没想到作为国家义务教育小学阶段的课本教材,人教版数学吐槽小学数学书阴暗内容插画最近网上经常看到小学数学教材被吐槽的事情,开始还以为又是类似王女士这样的家长胡乱举报,我带着查清真相的好奇心理点了进去。我认真看了一下,刚开始觉得没啥,但是随着这种阴间儿童人物形象牢记使命做党和人民的忠诚卫士央视网消息(新闻联播)习近平总书记亲切会见全国公安系统英雄模范立功集体表彰大会代表让全国广大公安民警备受鼓舞,大家表示,一定要坚决贯彻以习近平同志为核心的党中央重大决策部署,坚决做非遗里的闽人智慧以形写神的漳州木偶头雕刻漳州木偶头以樟木为原料,经艺人精雕细琢而成,是中国民间艺术中的工笔画精品。作者徐竹初,摄影孟承光木偶头雕刻的北派传承在漳州的各种传统民俗节庆活动中,衍自傀儡戏的木偶戏表演是必不可少高清组图童年,是一场彩色的梦,装着五颜六色的世界童年,是一朵娇嫩的花,向着阳光含苞待放童年,是一粒发芽的种子,沐着雨露奋力生长。而六一,是童年时光中最大的一颗糖,每一个孩子贪婪地吮吸着享受
央行年内第二次降准落地新增5000亿元支持实体经济昨天(5日),中国人民银行正式降低金融机构存款准备金率0。25个百分点,这是今年内央行第二次降准。这次降准共计释放长期资金约5000亿元。下调后,金融机构加权平均存款准备金率约为7快去做这件事,关系你2023年工资中新网12月7日电(记者李金磊)目前,2023年度个税专项附加扣除已经开始确认了。关系着各位2023年工资,务必引起重视。个税app截图。专项附加扣除已增至7项随着3岁以下婴幼儿照光大银行下跌41,净资产7。35元,股价3。04元,这是机会吗?光大银行的股票价格从2020年开始出现了持续性的下跌,连续性的阴跌,下跌的时间已经达到了24个月之久,下跌的幅度也达到了41。36。它的每股净资产达到了7。35元,但是他阶段性的股万亿长时储能市场,政策加持下为何还很难赚钱摘要近年来,全国范围出台了高达600多项储能相关政策。在政策加持下,资本也开始蜂拥而入,出现强劲增长。长时储能一边被市场和资本长期看好,另一边却存在诸多风险和投资障碍。绿能储能,被5000亿规模!世界之最!平顶山尼龙航母能否铸就?在平顶山市东部平原地带,有一个国家战略性新兴产业集群中国尼龙城,发展目标是2035年实现营收5000亿元,形成世界规模最大竞争力最强的尼龙产业集群。平顶山能否铸就这艘尼龙航母,已成名和利,救不了见色忘义的王迅离开极限挑战的男人帮,似乎最近过得都不太好。孙红雷除了一部扫黑风暴,基本没什么活动。黄渤新电影亏得底儿掉,豆瓣4。3分登上烂片榜。黄磊的综艺向往的生活变成生活流水账,食之无味,弃之哈亚学学与裁判的说话之道!国际足联对乌拉圭球员展开调查卡塔尔世界杯进入第一个休赛日,各类场外新闻依然霸占媒体头条。历经四天等待,国际足联对乌拉圭与加纳一战赛后的争端挥出第一棒希门尼斯卡瓦尼穆斯莱拉与戈丁四位球员,因为在终场哨响后围攻裁龙湾镇视频加载中龙湾镇,时长共3分15秒。龙湾镇坚持党建引领,充分发挥生态优势和资源优势,与驻镇帮镇扶村工作队形成有效合力,推动南药产业健康可持续发展利用风车山生态旅游区等文旅资源,以乡长得丑演戏烂,爹妈强捧不红的5位星二代,注定走不远文嘻合说编辑嘻合说娱乐圈中有一条默认的准则小红靠捧,大红靠命。明明有些明星颜值和演技都在线,现实生活中人品也不错,但就是不红,出演多部剧到头来只能混个脸熟,观众总说那个谁,那个谁。宁波远洋综合性航运龙头业绩稳增,聚焦主业协同发展航运,是全球贸易的动脉与毛细血管,在现代货物运输中具有不可替代的地位。2022年110月,我国水路货运量货物周转量同比分别增长4。7和4。4,港口货物吞吐量集装箱吞吐量同比分别增长8岁女孩突然长高胸部发育,竟与饭盒有关?最近遇到了一位特殊的小患者,让我们感到非常惋惜。女孩名叫安安,今年8岁,身高却已经有130cm了,超越了大部分同龄人。身高优越看起来本是一件好事,但是安安妈妈却不这样认为我突然发现