为什么用路由器能共享上网? 20

刚刚读了下《计算机网络》。我测了下,用了路由共享ADSL后,同一个局域网下访问www.ip138.com显示的ip都是一样的。这说明对外部因特网来说,这个局域网只用了一个... 刚刚读了下《计算机网络》。 我测了下,用了路由共享ADSL后,同一个局域网下访问www.ip138.com显示的ip都是一样的。这说明对外部因特网来说,这个局域网只用了一个IP。

那么假如外部发IP数据报进来,目的地只是一个IP,路由怎么知道是发给哪台电脑呢,怎么转发给正确的电脑?
展开
 我来答
老魇
2013-06-27 · TA获得超过2141个赞
知道小有建树答主
回答量:768
采纳率:0%
帮助的人:401万
展开全部

因为有NAT转换(网络地址转换),家用小路由器包含了这个功能。

 

由于IPv4地址耗尽的原因,不可能给每个电脑配置一个IPv4的地址,所以产生了内部地址和公网地址的概念。公网地址由各服务商共同负责管理和协调,内部(私网)地址则由用户自己建立管理。

 

服务商通常只分配一个或少量IP地址给用户,而用户如果只有一台电脑,那么配上isp给的地址就可以上网了。但如果用户电脑数量大于isp给的ip地址个数,则只能先建立一个内部网络,然后通过地址转换机制将isp分配的有限地址共享给内部网络中的所有电脑。

 

内部网络的地址可以随便用,只要不与isp提供的地址冲突即可。为了方便使用,ip地址协议中专门预留出3个地址段作为保留地址(也可称私网地址)给用户使用:10.0.0.0/8;172.16.0.0/12;192.168.0.0/16,这些地址不会被任意服务商认可(不被路由),也就是公网上不会出现这些地址,用户可以放心使用而不必担心冲突问题。

 

网络协议是一个分层协议,在osi中被定义为七层协议,而TCP/IP协议主要涉及1至四层协议,其数据包中包含了网络二到四层协议对象。最外层就是二层协议,即通过mac地址进行局部网络目标的确定,可以看成是终端互联。接下来就是第三层,即通过IP地址进行网络目标确定,可以看成是网际互连。然后就是第四层,即通过TCP端口进行目标进程的确定,也就是数据包和计算机中某个程序之间的通道,可以看成是进程(程序)互联。

 

注意以上三者的关系:终端互联使得数据包进入网络(接入),通过mac地址询问目标,若目标在本网中存在则数据包完成本次网络传送。若目标不存在则采用第三层,用IP地址进入网际互联,询问目标(路由)。若IP目标存在则通过一些列路由器将数据包发送到目标所对应的网络中,到达目标网络后,传输又回到第二层的(接入)互联,最终将数据包交给IP地址所对应的MAC地址所对应的终端。

 

整个网络传输过程中不必涉及第四层,第四层的作用是计算机终端中的一个进程要访问网络中另一个终端中的预知进程的通道。比如标准web服务采用的是TCP-80端口,当一个用户终端要访问百度时,首先要组织好一个包含目标ip地址为百度且目标端口为80的数据包,该数据包中的源地址当然就是用户本机IP地址,源端口则是本机中尚未被使用的(动态)端口。这样的数据包发送到百度后,百度服务器能够响应时,会产生一个以百度IP地址和80端口为源,以用户数据包中的源地址和源端口为目标地址和目标端口的数据包进行响应。

 

动态NAT服务则是利用第四层的特点为大量不被公网认可的私网地址进行服务。其方法是:

  1. 将内部向外请求的数据包中源地址和源端口保留在NAT服务器中,并分配一个(动态)端口与其对应,并用该端口和公网地址替代数据包中的源地址和源端口;

  2. 当响应返回时再根据响应包中的目标端口来确定原来保留在NAT服务中的地址和端口,并替换回去。

  3. 当访问完成后(会话结束),NAT服务删除为该会话保留的地址和端口对应关系。

这也就是为什么每个内部网络用户都能上网,但公网地址是同一个的道理。

 

以上过程可以看出,网络传输是有方向的,也就是所谓的数据连结(会话)是由谁发起的。显然以上过程只适合用于由内部向外部的访问连结。如果在一个内部网络中建立了一个web服务,并希望外部网络能够访问,则必须预先建立由外而内的通道。因为外部网络无法知道(也不必知道)内部服务的地址,NAT服务中也不会有这个服务的地址和端口预存(没有内部发起的访问)。预建这种通道的方法在NAT中有两种方式:

  1. 静态地址映射。当isp分配给用户的IP地址超过一个时,可以用其中的一个直接映射到内部服务器地址上。此时该服务器中的所有服务(TCP端口)对外响应。

  2. 静态端口映射。当只有一个公网IP地址时,可以在NAT服务上预先建立一个内部地址和端口映射项。这个预建和上面动态中的保留不同,动态保留项会随着会话完毕而消失,而这个则是永久性的,这样就给外部向内部的访问保留了一个通道。这种方式只提供了一个TCP端口,也就是服务器中只有一个服务可以响应外部请求。如果存在其他需要向外提供的服务,则必须一一建立对应的端口映射。

因为你在看《计算机网络》所以多说了一点儿。

更多追问追答
追问
假如传输使用的不是TCP或UDP,是另外的协议,这种没有协议没有端口号的说法,那使用路由是不是就无法传送这种IP包数据了?
追答
不是。这类协议在进入网络时都被“封装”在TCP/IP协议中,所以数据包中依然有TCP端口号的位置(包头格式固定),换句话说,这类协议在那个类型的网络中跑,就会“封装”到那个网络的基本支持协议中,像vpn、IPSec等都属于这类协议。当安装这类协议支持的服务时,如果是跑TCP/IP网络则都会有一个填写端口的选项,比如gre(IP47)的默认端口就是1723。
宏电
2024-09-30 广告
深圳宏电3G/4G工业级无线路由器采用工业级应用设计,性能稳定可靠,提供标准RS232/RS485/RS422、以太网接口,接口丰富,链路稳定,支持多种VPN通信协议,功能强大。成功应用在工业联网、充电桩联网、自助终端、快递柜,覆盖50+细... 点击进入详情页
本回答由宏电提供
chassisd
2013-06-27 · TA获得超过4115个赞
知道大有可为答主
回答量:4004
采纳率:76%
帮助的人:3319万
展开全部
这就是nat的实现,在路由器里会保存一个内部地址和端口,到外部地址和端口的映射表。内部地址不同,映射成同一个外部地址,即你看到的显示同一个ip,端口是不同的,这样保证回来的包能找到原来的内网机器。
更多追问追答
追问
假如传输使用的不是TCP或UDP,是另外的协议,这种没有协议没有端口号的说法,那使用路由是不是就无法传送这种IP包数据了?
追答
嗯,是的,碰上ipsec就会,所以需要基于udp的穿越。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
oldman2007
2013-06-27 · TA获得超过115个赞
知道答主
回答量:79
采纳率:0%
帮助的人:44.1万
展开全部
电脑在请求数据的时候,会在数据包中附上自己的网卡地址(即MAC地址,全球唯一),外部数据返回来的时候,路由器根据数据包中的MAC地址,再转发给对应的电脑。希望帮到你。
追问
你跟他们的回答本质上不同,可以说说谁是对的吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
药你命plus
2013-06-27 · TA获得超过211个赞
知道小有建树答主
回答量:212
采纳率:0%
帮助的人:106万
展开全部
这个问题早就解决了,外部访问内部电脑的时候 要在路由器上设置端口转发 进来的数据,会按照事先设置好的路径走
追问
假如传输使用的不是TCP或UDP,是另外的协议,这种没有协议没有端口号的说法,那使用路由是不是就无法传送这种IP包数据了?
追答
还有一种叫DMZ 专门用做特殊用途的,DMZ就是把一个主机直接映射的外网上也就是说  通过设置 你可以在外网直接访问这个主机,不需要设置端口号和协议
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友0e089e9
2013-06-27
知道答主
回答量:3
采纳率:0%
帮助的人:4690
展开全部
你说的是,在路由器上设置PAT(端口地址转换),对于每个局域网主机对外网的访问,在路由中都使用一个唯一的端口号对其进行标示,然后使用相同的外网ip发送出去,收到回包时,根据端口号确定具体的主机,全手打,给分吧。
追问
假如传输使用的不是TCP或UDP,是另外的协议,这种没有协议没有端口号的说法,那使用路由是不是就无法传送这种IP包数据了?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式