应用办公生活信息教育商业
投稿投诉
商业财经
汽车智能
教育国际
房产环球
信息数码
热点科技
生活手机
晨报新闻
办公软件
科学动态
应用生物
体育时事

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

  因为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设备,全称NetworkAddressTranslation,网络地址转换。基本上家用路由器都支持这功能。
  我们来聊下它是怎么工作的: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(SourceNetworkAddressTranslation,源地址转换)。并且还会在NAT路由器内部留下一条192。168。30。520。20。20。20的映射记录,这个信息会在后面用到。之后IP数据包经过公网里各个路由器的转发,发到了接收端30。30。30。30,到这里发送流程结束。
  如果接收端处理完数据了,需要发一个响应给你的电脑,那就需要将发送端IP地址填上自己的30。30。30。30,将接收端地址填为你的公网IP地址20。20。20。20,发往NAT路由器。NAT路由器收到公网来的消息之后,会检查下自己之前留下的映射信息,发现之前留下了这么一条192。168。30。520。20。20。20记录,就会将这个数据包的目的IP地址修改一下,变成内网IP地址192。168。30。5,这也叫DNAT(DestinationNetworkAddressTranslation,目的地址转换)。之后将其转发给你的电脑上。
  整个过程下来,NAT悄悄的改了IP数据包的发送和接收端IP地址,但对真正的发送方和接收方来说,他们却对这件事情,一无所知。
  这就是NAT的工作原理。
  NAPT的原理
  到这里,相信大家都有一个很大的疑问。
  局域网里并不只有一台机器,局域网内每台机器都在NAT下留下的映射信息都会是192。168。xx。xx20。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:500020。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:500020。20。20。20:6000的记录,就会将这个数据包的目的IP地址和端口修改一下,变回原来的192。168。30。5:5000。之后将其转发给你的电脑上。
  如果局域网内有多个设备,他们就会映射到不同的公网端口上,毕竟端口最大可达65535,完全够用。这样大家都可以相安无事。
  像这种同时转换IP和端口的技术,就是NAPT(NetworkAddressPortTransfer,网络地址端口转换)。
  看到这里,问题就来了。
  那这么说只有用到端口的网络协议才能被NAT识别出来并转发?
  但这怎么解释ping命令?ping基于ICMP协议,而ICMP协议报文里并不带端口信息。我依然可以正常的ping通公网机器并收到回包。
  事实上针对ICMP协议,NAT路由器做了特殊处理。ping报文头里有个Identifier的信息,它其实指的是放出ping命令的进程id。
  对NAT路由器来说,这个Identifier的作用就跟端口一样。
  另外,当我们去抓包的时候,就会发现有两个Identifier,一个后面带个BE(BigEndian),另一个带个LE(LittleEndian)。
  其实他们都是同一个数值,只不过大小端不同,读出来的值不一样。就好像同样的数字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设备叫NATA,B内网里的NAT设备叫NATB,和一个第三方服务器server。
  流程如下:
  step1和2:A主动去连server,此时A对应的NATA就会留下A的内网地址和外网地址的映射关系,server也拿到了A对应的外网IP地址和端口。
  step3和4:B的操作和A一样,主动连第三方server,NATB内留下B的内网地址和外网地址的映射关系,然后server也拿到了B对应的外网IP地址和端口。
  step5和step6以及step7:重点来了。此时server发消息给A,让A主动发UDP消息到B的外网IP地址和端口。此时NATB收到这个A的UDP数据包时,这时候根据NATB的设置不同,导致这时候有可能NATB能直接转发数据到B,那此时A和B就通了。但也有可能不通,直接丢包,不过丢包没关系,这个操作的目的是给NATA上留下有关B的映射关系。
  step8和step9以及step10:跟step5一样熟悉的配方,此时server再发消息给B,让B主动发UDP消息到A的外网IP地址和端口。NATB上也留下了关于A到映射关系,这时候由于之前NATA上有过关于B的映射关系,此时NATA就能正常接受B的数据包,并将其转发给A。到这里A和B就能正常进行数据通信了。这就是所谓的NAT打洞。
  step11:注意,之前我们都是用的UDP数据包,目的只是为了在两个局域网的NAT上打个洞出来,实际上大部分应用用的都是TCP连接,所以,这时候我们还需要在A主动向B发起TCP连接。到此,我们就完成了两端之间的通信。
  这里估计大家会有疑惑。端口已经被udp用过了,TCP再用,那岂不是端口重复占用(addressalreadyinuse)?
  其实并不会,端口重复占用的报错常见于两个TCP连接在不使用SOREUSEADDR的情况下,重复使用了某个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。cnpost7170850066473680927

小麦价格迎来开门红,大涨1分钱,1月30日全国最新小麦行情小麦价格迎来了开门红,可谓是出乎市场的预期,面粉企业都不同程度的上涨,期待更好的价格到来。农民老铁们大家好,今天是2023年1月30日,虽然面粉企业的收购价格上涨了,河北、山东……荣耀Magic5通过3C认证标配66W快充头,三证齐全只待发IT之家2月3日消息,MWC2023大会将于2月27日在巴塞罗那拉开帷幕,荣耀将在MWC2023上发布荣耀Magic5系列手机,以及MagicVs折叠屏手机的海外版,发布会定档……初来海南应做到三必美丽的海滩海南省,简称琼,位于中国南端。海南省是中国国土面积(陆地面积加海洋面积)第一大省,陆地面积3。54万平方公里,人口:917。13万(2016年)海南经济特区是中……嘉兴一日游几个月前游览了绍兴,之后再从上海返回石家庄之前,途经嘉兴并且停留了一晚,简单写写感受。我们下午从绍兴到达嘉兴,酒店放下东西后就去了嘉兴子城遗址公园,这个地方是新建的,不过……中国篮坛最年轻主帅李昕,当年有多厉害2022年9月30日,悉尼,女篮世界杯半决赛,最后时刻时间只剩22秒,中国和东道主澳大利亚战成59平,此时全场的空气几乎凝滞,中国队5号后卫球员,身高175的王思雨,带球坚决突……英超凯恩破门热刺小胜新华社伦敦1月23日电(记者张薇)英超球队热刺23日凭借凯恩的全场唯一进球客场1:0小胜富勒姆,就此止住两连败的颓势。1月23日,热刺队球员凯恩(右二)在比赛中射门得分。……元旦快乐,致我今生最惦念的人作者:昕月蓝殇光阴如水,待到回首,已经走过了许多春秋。元旦快乐,致我今生最惦念的人,一个人的时候,总会想起远方的你,划一笔流转的时空,又见你的笑颜。坐在安静的角落,……2023年,拼的是这几个字点上方听一禅第2101次和你说晚安文一禅主播一禅白落梅说过一句话:真正的平静,不是避开车马喧嚣,而是在心中修篱种菊。尽管如流往事,每一天都涛声依旧,只要我们消除执念……捕获空气中的二氧化碳气候变化与人类活动息息相关。人类活动造成二氧化碳、甲烷等温室气体排放过量,带来了全球气候变暖的问题。气候变暖又造成海平面升高,极端天气频发,反过来影响着人类的生活。因此,全球气……从荷兰的土地治理看其乡村振兴模式提到荷兰,我们就会自然联想起闻名全球的郁金香产业和库肯霍夫郁金香公园,还有荷兰的羊角村,都是荷兰农业发达的高度体现,也是吸引游客的重要窗口。可以说,荷兰的乡村振兴,很大程……不论炒什么青菜,牢记这3招,青菜碧绿又油亮,脆嫩又清爽炒青菜,水汽又油腻?大厨:教你3招,青菜鲜嫩脆爽,不比饭店差。食材有个性,小小有工坊,大家好,我是小小,今天跟大家分享一个如何正确的炒制青菜,学会后你也能炒出饭店的味道,碧绿且……谌龙携娇妻出游!妻子酷似王祖贤,国羽短裙出战第一人曾惊艳全场国庆长假期间,国羽刚刚结束了全运会的比赛,却要继续参加苏杯混合团体赛事,不过平均年龄仅23岁的国羽球员,在决赛中3:1力克日本队第十二次捧起苏杯冠军,为国庆献礼。此次国羽夺冠非……
同样是吸烟,为何日本人最长寿?他们的吸烟方式值得借鉴我们在公共场合随时都能看到禁止吸烟的标志,虽然这种标志随处可见,但依旧很少有人能做到。老烟民对吸烟是特别上瘾的,虽然明知道吸烟会对身体健康造成威胁,但却还是很难抵挡烟瘾的诱惑。……春季是精神类疾病复发高峰期,这份养肝攻略请收好春天已经来临,马上就会春暖花开,但是对于我们精神疾病的患者来讲,要特别注意精神疾病的复发。俗话说菜花黄痴子忙,也就说明了,春天是精神类疾病复发的一个高发季节。据相关的研究……美国人早餐都吃什么,松饼土豆是标配,还有哪些是你吃过的早餐是每天中仅次于午餐,重要的一餐。同样是早餐,世界各地的内容都会有所差异。夏威夷旅游时,吃过几顿美式早餐,下面就一起来看看,老美最经典的早餐,都会吃些什么。很多美……新发现!科学家训练蚂蚁嗅出癌细胞,是否能成为诊断替代方案?科学家发现蚂蚁可以用嗅觉探测癌细胞法国国家科学研究中心(CNRS)的研究人员发现,丝光褐林蚁(Formicafusca)具有极度发达的嗅觉。发达的嗅觉在动物中并不少……捷达物业黄贤景区开展植树节活动为美丽景区添新绿拥抱春天与绿色同行捷达物业黄贤景区开展植树节活动为美丽景区添新绿马宜奋周素云又是一年春草绿,又到一年植树时。在植树节来临之际,为能给游客创造一个绿色、温馨的景……明星红黑榜在颜值上,永远可以相信天仙姐姐刘亦菲又到了每周盘点【明星时尚红黑榜】的时刻。开春后的每一天,气温都在稳步上升中,所以大家在穿搭造型上是不是也有进步呢?一起来今晚的红黑榜里找答案吧。IN:刘……苹果税背后的流量定价权苹果作为全球市值第一的互联网公司,这三年来备受反垄断投诉的烦恼,此前是在美国、欧盟、英国、澳大利亚、韩国、荷兰,这次是进入了印度反垄断执法机构(简称CCI)的视野。202……MotoX30Pro机型:MotoX30Pro系统:MyOS处理器:骁龙8gen1制程工艺:4nmCPU:X213。2GHzA71032。75GHzA51041……丑闻裁员割韭菜BOSS直聘难塑公信力?出品:新浪财经创投Plus作者:shu接近一年的网络安全审查终于结束,恢复新用户注册刚两个月的BOSS直聘,却没能迎来想象中的轻松日子。近日,有网友在社交平台……卖得贵?花粉或者华为水军回应,你不是华为手机的目标客户?如何看待花粉或者华为水军的你不是目标客户?遇到的都是说价格问题其实这个问题的答案很玄乎,我觉得应该去调查买了华为手机的用户当中,有多少用户后悔了,有多少用户觉得值得,这也……星汉灿烂一人怼遍全场的越妃为何能如此嚣张?为什么越妃什么人都不怕?有越妃在的时候,总能看到舌战群雄场面。她不仅骂别人,还自己亲生女儿都不放过。大家来看看越妃怼人经典画面。骂三公主:我聪明一世,怎么会有你这种蠢女儿。骂二……大美寰宇影业有限公司讲述比特币雪崩了比特币又崩了呀,他前两天好不容易刚从谷底爬起来,回到2万美元关口,这会又惨遭闪崩,再次跌破2万美元。现在比特币的价格高点相比已经暴跌近70了,这基本上已经是西站了。这么说你可能……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网