路由器

网络层:网络层就是在数据链路层的基础上,进一步管理网络中的数据通信,将数据从源端经过若干中间节点传送到目的端,从而实现向传输层提供最基本的端到端的数据传送服务。它提供的服务使传输层不需要了解网络中的数据传输和交互技术。具体功能包括寻址和路由的选择、连接的建立、保持和终止等。

网络互连:网络互连设备,如以太网、分组交换网等,它们之间不能互相通信,因为它们用来传送数据的基本单元(帧)的格式不同。这是就需要IP协议(一套软件、程序组成的协议软件)把各种不同的“帧”同一转换为“网协数据包”格式,这样使得各种计算机都能够在因特网上实现互通。

数据包:数据包属于“无连接型”数据,它是把打包好的每个包(分组)都作为一个独立的报文传送出去。这样,在开始通信前,就不需要先连接好一条电路,各个数据包不一定都通过同一条路径传输,所以叫做“无连接型”。这一特点提高了网络的坚固性和安全性。数据包由报头和报文两个部分组成,报头中的是目的地址的相关内容,是每个数据包不经过同样的路径都能够准确地到达目的地。

在上一章数据链路层已经讲到了,我们目前普遍使用的以太网是依靠MAC地址和广播技术,能够实现两个计算机之间的数据传输(两个相邻端点之间的数据帧的传送功能)。但是,这里有一点需要强调的是,我们上一章所说的广播是向本网络(局域网)内的所有计算机发送。因此,当两台计算机不在同一个子网(局域网)内,是无法通过广播直接传过去的。不在同一子网的两台计算机想要互相通信,必须找到一种方法来区分MAC地址属于哪一个子网:同一个子网采用广播的形式,不同网络采用“路由”的方式。路由就是依靠一套新的寻址方式:网络地址——IP地址。

IP协议

IP Address(Internet Protocol Address,互联网地址协议),是分配给用户上网使用的网际协议的设备的数值标签。常用的IP地址分为IPv4和IPv6两大类。IPv4是一个32位地址,平时以十进制的形式表示,如172.16.254.1;IPv6是128为地址,平时以十六进制的形式表示,如ABCD:EF01:2345:6789:ABCD:EF01:2345:6789;这里我们以IPv4为例进行讲解。

TCP/IP网络使用32位长度的地址以标识一台计算机和同它相连的网络,格式为:IP地址=网络地址+主机地址或IP地址=网络地址+子网地址+子网主机地址;其中网络地址用于识别主机所在的网络,主机地址用于识别网络中的主机。

IPv4地址分为五类:A、B、C、D、E。
A类:

1.A类地址的第一个字节为网络地址,其他三个字节为主机地址,第一位固定为0,即:0XXXXXXX.XXXXXXXX.XXXXXXXX.XXXXXXXX

2.A类网络地址范围:0.0.0.0~127.0.0.0,总地址范围(即网络+主机):X.0.0.0~X.255.255.255.

3.A类地址中的私有地址(互联网上不适用,而是在局域网中使用的地址)10.0.0.0~10.255.255.255

4.A类中的保留地址:127.X.X.X(127.0.0.0~127.255.255.255),用作循环测试用的。

B类:

1.B类地址的第1和第2字节为网络地址,其它两个字节为主机地址,第一个字节的前两位固定为10。即10XXXXXX.XXXXXXXX.XXXXXXXX.XXXXXXXX

2.按照上面描述,B类地址的网络地址范围:128.0.X.X~191.255.X.X.主机地址范围:X.X.0.0~X.X.255.255.

3.B类中的私有地址:172.16.0.0~172.31.255.255

4.B类中的保留地址:169.254.X.X。如果你的IP地址是自动获取IP地址,而你在网上又没有找到可用的DHCP服务器,就会得到其中的一个IP。

C类:

1.C类地址的第1、2、3个字节为网络地址,第4个字节为主机地址。并且第一个字节前三位固定为110。即110XXXXX.XXXXXXXX.XXXXXXXX.XXXXXXXX

2.C类地址网络地址范围:192.0.0.0~223.255.255.0.主机地址范围:192.0.0.X~223.255.255.X

3.C类地址中的私有地址:192.168.X.X(192.168.0.0~192.168.255.255)

D类:

1.D类地址不分网络地址和主机地址,它的第一个字节的前四位固定为1110,即:1110XXXX.XXXXXXXX.XXXXXXXX.XXXXXXXX

2.D类地址范围:224.0.0.0~239.255.255.255

E类:

1.E类地址不分网络地址和主机地址,它的第1个字节的前5为固定为11110,即:11110XXX.XXXXXXXX.XXXXXXXX.XXXXXXXX

2.E类地址的范围:240.0.0.0~255.255.255.255

特殊格式的IP地址:特殊格式的IP地址包含在前面所提到的5类分类中,这里我们只是把其中的一些特殊地址拿出来重点说明。

1.广播地址:当主机表示字符字段的每位均为1时,这个地址编码标识该数据包是一个广播式的通信,可以被路由发送到专门网络上的每台主机。例如,地址128.2.255.255意味着网络地址为128.2的网段的所有主机,都会受到广播。除此之外,还有一种特殊的受限广播,它不被路由发送,但会被送到相同物理网络段上的所有主句:255.255.255.255

2.本网络地址:IP地址的主机标识符号字段全部设置为0,表示该地址作为“本主机”地址。网络标识符字段也可全部设置为0,表示“本网络”。如,128.2.0.0表示网络地址为128.2的网络。而使用网络标识符字段全为0的IP地址,在一台主机不知道网络的IP地址时是很有用的。

3.私有IP地址:在某些情况下,一个机构并不需要连接到Internet或另外一个专有网络上,因此无需遵循对IP地址进行申请和登记的规定,该机构可以使用任何的私有地址(如,日常生活中的路由器和分流器)。A类私有:10.0.0.0到10.255.255.255;B类:172.16.0.0到172.32.255.255;C类:192.168.0.0到192.168.255.255;

4.回环地址:127网段的所有地址都称为回环地址,主要用来测试网络协议是否工作正常。如使用:ping 127.0.0.1就可以测试本地TCP/IP协议是否正确安装。

子网掩码

从上面我们知道,IP地址是以网络号和主机号来表示网络上的主机的,只有在一个网络号下的计算机之间才能“直接”互通,不同网络号的计算机要通过网关(Gateway)才能互通。但是这样的划分在某些情况下显得并不灵活,例如,A类网络有126个,而每个A类网络可能有16777214台主机,它们同处在同一个广播域中,而同一个广播域有这么多节点是不可能的,这就造成了大多主机地址没有分配出去。为此,IP网络还允许划分成更小的网络,称为子网(Subnet)。这样划分也能够解决目前IP地址不够用的情况。

当我们将一个网络划分为多个子网时,我们需要将原来的主机号的一部分拿出来作为子网地址标识。例如一个C类IP地址:210.73.1.X,前三个字节表示网络号210.73.1,最后一个字节X表示主机号。现在假设我们需要将该网络分为12个子网,就需要将主机号的前几位拿出来作为子网地址,即前面说的:IP地址=网络地址+子网网络地址+子网主机地址。而子网掩码就是用来将IP地址划分为网络地址和主机地址两个部分,用于屏蔽IP地址的一部分以区别网络标识和主机标识,并说明该IP地址是在局域网上还是在远程网上。

子网掩码——屏蔽一个IP地址的网络部分的“全1”比特模式。对于A类地址来说,默认子网掩码是255.0.0.0;B类默认子网掩码是255.255.0.0;C类默认子网掩码是:255.255.255.0;除了默认子网掩码外,我们还可以根据自己对于子网的需求来设置子网掩码。例如:我们想将B类IP地址168.195.0.0划分成27个子网

首先需要将27转换为对应的二进制:11011.该子网的网络地址是在主机地址的基础上设立的,也就是说,IP地址可以表示为10101000.11000011.11011XXX.XXXXXXXX;这里用数字明确表示的就网络地址+子网地址,“X”表示的是子网中主机号的标识。

但是这里我们需要知道,计算机如何知道哪些是网络地址,即子网划分后,哪些位表示子网的网络地址?解决这个问题就需要用到子网掩码。子网掩码通过将网络地址部分全部“置1”,主机标识位全部“置0”来表示。这样,可以通过子网掩码与IP地址进行“AND”位运算来获取对应的网络段,当运算后的结果相同时,这些计算机在同一网络中,可以“直接”互通,而不需经过网关。像前面提到的168.195.0.0网段,划分27个子网,对应的二进制11011有五位,因此将主机地址的前五位设置为子网网络地址,这时,对应的子网掩码为255.255.248.0,即11111111.11111111.11011000.00000000;

路由

路由是指分组从源到目的地时,决定端到端路径的网络范围的进程。路由工作在OSI参考模型第三层,我国绝大多数路由器运行TCP/IP协议。

路由器工作时,某一接口收到一个数据包,会先解析包中的报头,判断目标IP地址的网络地址(通过子网掩码进行计算)在当前路由表中是否存在(即路由器是否知道达到目标网络的路径)。如果发现包的目标地址与本路由器的某个接口所连接的网络地址相同,那么马上将数据转发到相应接口;如果发现包的目标地址不是自己的直连网段,则路由器会查看自己的路由表,查找包的目的网络所对应的接口,并从相应的接口转发出去;如果路由表中记录的网络地址与包的目标地址不匹配,则根据路由器配置转发到默认接口。(这里有一个问题,需要深入了解:路由表如何形成?它能够记录所有目的网络对应的接口信息?)。

路由是使两个子网之间能够互联,但是,找到对应的子网后(IP地址的网络部分确定分组的目标网络),需要确定子网中具体那一台计算机,可以通过IP地址的主机部分和设备的MAC地址确定到目标节点的连接。

路由器、交换机、集线器:集线器工作在第一层(物理层),对它来说,数据只是电流而已,当一个端口的电流传到集线器时,他只是简单的将电流送到其他端口,至于其他端口连接的计算机接不接受这些数据,它就不管了。交换机工作在第二层(数据链路层),它比集线器要智能一些,对它来说,网络上的数据就是MAC地址的几何,他们能够分辨出帧中的源码MAC地址和目的MAC地址,因此在任意两个端口间建立联系,但是交换机不懂得IP地址,只知道MAC地址。路由器工作在第三层(网络层),它比交换机还要聪明一些,能够理解数据中的IP地址,当它接收到一个数据包时,检查其中的IP地址,如果是本地网络就不理会,如果是其他网络,就将数据包转发出本地网络。

上图为两个不同网段之间的电脑进行通信。

图中Touter0路由器有两个接口IP,地址分别为199.165.145.17和199.165.146.3.它们分别接入到两个网络:199.165.145和199.165.146.两个不同的子网。现在当我们想从主机199.165.145.17发送数据到199.165.146.21。它们之间的互通是跨网段的,也就是需要出网关(网关实质上是一个网络通信其他网络的IP地址,网关的IP地址是具有路由功能的设备的IP地址)。上面的199.165.145.17和199.165.146.3就是这个路由器的两个网关。

第一步:写好数据包的表头,即发送者IP地址(199.165.145.15)和接收者的IP地址(199.165.146.21)。此时199.165.145.15会参照自己的路由表,里面有两行记录(实际路由表远远不止两行)
第一行表示:如果IP目标地址是199.165.145.0这个网络中的主机,则两台主机在同一个子网中,只需在自己的网络中通过网卡(MAC地址)通过交换机直接传送,不需要前往router(Gateway 0.0.0.0=“本地通信”);第二行表示:所有不符合第一行的IP地址,应该送往Gateway199.165.145.17这个主机,这也就是前面说的路由设备中的IP地址。

我们这里举例的两个主机之间进行通信,就处于两个不同子网中,需要通过网关。199.165.145.15会在数据包的头部写上自己的IP地址和MAC地址,以及目的主机的IP地址和MAC地址。这样,就在199.165.145这个局域网中通过交换机(通过广播MAC地址)广播到199.165.145.14对应的主机(路由器)。

第二步:中间路由器在接收到IP包后,提取出目的IP地址,然后对照自己的路由表
我们从表中可以看到,路由器有两个对应的网络段199.165.145.0和199.165.146.0,它可以直接通过eth0和eth1上的网卡直接传送IP包。第三行表示前面两行之外的IP地址,则需要通过eth1,送往199.165.145.8(右边的router接口IP)。我们的目的地址符合第二行,所以将IP放入一个新的帧中,在帧的头部写上199.165.146.21的MAC地址,通过199.165.146网中的交换机广播发往主机199.165.146.21

假设你的名字叫小不点(很小),你住在一个大院子里,你的邻居有很多小伙伴,父母是你的网关。当你想跟院子里的某个小伙伴玩,只要你在院子里大喊一声

他的名字,他听到了就会回应你,并且跑出来跟你玩。

但是你家长不允许你走出大门,你想与外界发生的一切联系,都必须由父母(网关)用电话帮助你联系。假如你想找你的同学小明聊天,小明家住在很远的另外一个院子里,他家里也有父母(小明的网关)。但是你不知道小明家的电话号码,不过你的班主任老师有一份你们班全体同学的名单和电话号码对照表,你的老师就是你的DNS服务器。于是你在家里和父母有了下面的对话:

小不点:妈妈(或爸爸),我想找班主任查一下小明的电话号码行吗?家长:好,你等着。(接着你家长给你的班主任挂了一个电话,问清楚了小明的电话)问到了,他家的号码是211.99.99.99

小不点:太好了!妈(或爸),我想找小明,你再帮我联系一下小明吧。

家长:没问题。(接着家长向电话局发出了请求接通小明家电话的请求,最后一关当然是被转接到了小明家家长那里,然后他家长把电话给转到小明).

就这样你和小明取得了联系。

如果搞清了什么是网关,默认网关也就好理解了。就好像一个房间可以有多扇门一样,一台主机可以有多个网关。默认网关的意思是一台主机如果找不到可用的网关,就把数据包发给默认指定的网关,由这个网关来处理数据包。默认网关。默认网关一般填写192.168.x.1

ARP协议

IP在OSI模型第三层,MAC地址在第二层,彼此不直接打交道。在通过以太网发送IP数据包时,需要先封装第三层(32位IP地址)、第二层(48位MAC地址)的报头,但是由于发送时只知道目标IP地址,不知道MAC地址,又不能跨第二、三层,所以需要地址解析协议,根据网络层IP地址信息解析出目标硬件地址信息(MAC地址),以保证通信顺利进行。

在上面路由过程中,不同网络的主机之间首先通过IP地址实现网络间的互通,然后通过MAC地址在本地网络中找到对应MAC地址的主机。目的IP地址和源IP地址第不会改变的,但是在网络中进行传输是会途径多个路由,MAC地址是一直变换的。MAC地址和IP地址一个代表终点,一个代表沿途经过的站点。所以当数据包到达目的局域网后,如何知道对应的MAC地址?这里使用ARP协议来确定主机的MAC地址。

ARP协议(Address Resolution Protocol,地址解析协议),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到网络中的所有主机,并接收返回消息,以此确定物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一段时间,下次请求时直接查询ARP缓存以节约资源。
地址解析协议工作在一个网段,但是当两个计算机不在同一网段时,就需要代理ARP来完成。代理ARP一般被路由器这样的设备使用,用来代替处于另一网段的主机回答本网段主机的ARP请求。

例如PC1(192.168.20.66/24)需要向主机PC2(192.168.20.20/24)发送报文,因为主机PC1不知道子网的存在且和目标主机PC2在同一主网络网段,所以PC1将发送ARP协议请求广播报文以此请求192.168.20.20的MAC地址。这时,路由器识别出报文的目标地址属于另一子网,因此想请求主机回复自己的硬件地址(0004.dd9e.cca0)。之后PC1将发往PC2的数据包都发送到MACE地址为0004.dd9e.cca0(路由器接口E0/0),由路由器将数据包转发到目标主机PC2。接下来路由器将为PC2做同样的代理发送数据包的工作,可以使路由器以一个不真实的PC2的MAC地址欺骗了源主机PC1。代理ARP的使用一般是使用在没有配置默认网关和路由策略的网络上的

NAT

这个问题和我们平时生活是非常接近的:我们同过Windows命令行查询本机IP——ipconfig 命令,会发现一个IP地址,然后通过百度“IP”,会有另一个IP,这两个IP是不同的。前面一个IP就是在A、B、C三类IP中的私有IP,后面的IP是全球唯一的公网IP。私网中的IP是不会进入公网的,也就是说,私网只能进行内部的信息交流,而无法连入互联网。但是我们平时使用电脑时,确实可以与不同网络中的主机进行交流的,也就是说我们使用的私网主机是能够访问互联网的。这就需要NAT技术来实现私网与公网之间的连接。

NAT(Network Address Translation,网络地址转换),是用来解决IP地址资源短缺问题的技术,通过NAT技术,我们可以将私网IP与对应的公网IP进行映射,从而通过公网IP实现对互联网的访问。这种方式需要在私网连接到因特网的路由器上安装NAT软件,我们将这种装有NAT软件的路由器叫做NAT路由器。

功能:1.宽带分享;2.安全防护(隐藏私网中的主机)

实现方式:

1.静态转换:将内部网络的私有IP地址转换为公有IP地址,IP地址对时一对一的,是一成不变的,某个私有IP只转换为某个公有IP。借助静态转换,可以实现外部网络对内部网络中某些特定设备(服务器)的访问。

2.动态转换:将内部网络的私有IP转换为公有IP时,IP地址是不确定的,随机的,所有被授权访问上Internet的私有IP地址可随机转换为任意指定的合法IP地址。也就是说,只要指定哪些内部地址可以进行转换,以及哪些合法地址作为外部地址时,就可以进行动态转换。动态转换可以使用多个合法外部地址集。当ISP提供的合法IP地址略少于网络内部的计算机数量时,可采用动态转换的方式。

3.端口多路复用:改变外出数据包的源端口并进行端口转换,即端口地址转换(PAT)。采用该方式能够将多个私网IP地址映射到一个公网IP地址(多对一),实现对于互联网的访问,从而最大限度地节约IP地址资源。同时,又可隐藏内部主机,有效避免来自Internet的攻击。这种方法也是目前网络中应用最多的方法。

如上图所示,假设现在有个内网的主机172.18.250.6想要和外部202.108.22.5通信,172.18.250.6发送数据是会识别出它的目的地址不在同一网段,因此会发往下一跳(设定的网关,本例中即NAT路由),NAT在接收到后,先将数据源地址替换为219.155.6.240:1723(端口号>1024的随机端口),然后通过这个公网IP,将数据发送给202.108.22.5:80。该服务器接受数据后交给对应的应用处理(端口80表示对应的应用服务),完成后将数据返回给219.155.6.240.1723,NAT网关检测自己的关联表,找到对应的私网IP地址172.18.250.6,然后把这个数据发送给客户端。

注:上面的1723是端口号,是用来识别应用程序的,在公网传回的报文端口号(即:1723)要转换成私网主机对外开放的那个端口(即:80)。互联网服务被定义在前1024个端口,而这里的端口是访问内网时,映射出来的端口号,例如80端口对应应用服务,在传到NAT后80端口被映射为8080或8081.....

传输层的端口号使用来标识和区分各种上层应用程序的


danielxue7
18 声望1 粉丝