Internetworking

1 Introduction

所谓的InternetWorking就是将很多网络连接起来,那么在这种连接的网络下我们该如何传送封包呢?

2 IP and Routers

1 IP Datagram Header Format

image

IP Address:目前IP地址均是32个bit,称为IPV4。未来会使用IPV6,128个bit。

Identification:Router本身将封包收下来,经过查表后,会将封包从某一个网络或者说port转发出去,但是Router周围的网络是不同的(例如从Ethernet丢到WIFI,或者从WIFI丢到Ethernet),注意每一个网络都有一个很重要的特性称为MTU(Maximal Transmission Unit),MTU规定了在这个网络上传输的封包的大小上限。如果Router收进来的封包太大,并且要进到MTU比较小的网络中时,那么,不可避免的要将封包进行切割,一个封包可能会被切割成好多个封包。封包经过切割之后,最终仍然要将其组合起来,那么这些经过切割的小片段最终进行组合的时候,怎么知道哪些小片段是经同一个封包切割出来的呢?这就是Identification的作用,Id相同则代表这些小片段原来隶属于同一个datagram。

Fragment Offset:datagram经IP(Internet Protocal)传送,只是best effort,因此datagram可能会不见,可能会out of order。因此,将datagram切割成小片段丢到网络中后,最终目的主机收到时,顺序就不见得一致。我们只知道收到的这几个片段是属于同一个IP Address的,而它们的位置(哪个在第一个?哪个在第二个?) 需要Fragment offset来确定,offset即为偏移的意思,记录了每一个小片段相对于Data中开始位置的偏移量。

Protocal:在网络的7层架构中,IP在第三层,而Protocal字段标记了上一层的Protocal是什么,是TCP?是UDP?

Time to Live:封包在Internet上可以存活的时间,设置该时间,避免在已经迷航的封包在Internet上绕了很久还是绕不出去。Router本身在帮助我们转送封包时,会根据网络的状态,随时调整路线,可能存在一个封包经由一个路由器转送出去后,之后又绕回来的情况,封包可能会发生迷路,被不断的转来转去,但是始终绕不出去。遇到这种情况该怎么办?我们不可能让此类封包永久的留存,以防这样的封包越来越多,最终将我们的Internet塞爆掉。假设将Time to Live的值设为128,那么每经过Router的一次转送,这个值就会减1,128就代表经过128个Router之后这个值就会减为0,减为0之后,Router就会将该封包丢掉。

Flags

image

DF:可以设置datagram在传送过程中不允许被切割。如果datagram要从一个Port送出去,可是这个datagram太大,而且又被告知不允许被切割,那怎么办?只有两条路,一是走另外一条路,二,如果找不到一条可以使datagram经过的网络,那么只能将该datagram丢掉。

MF:目的主机收到小片段后,如果标记为More Fragment,表示后面还有小片段。

Total length:封包的大小。

Header Checksum:header的范围如下图,红线圈起来的部分。

image

将header的内容做一次检查,避免出错,因为要做Routing。Router收到封包之后,会根据Destination IP Address做检查,避免出错,走错路。因此,header有错误,封包仍然需要丢掉。

version:标记IP的版本。现在全世界最流行的IP版本是第4版。

Type of Service:指出这个封包本身到底应该得到什么样的服务。来看下图:

image

Type of Service 本身是一个8个bit的栏位。

Precedence:重要性的意思。是一般data的封包?还是网络的控制封包?将封包本身的重要性做了一个设定。

Delay:服务的品质。这个封包传送是正常的延迟还是低延迟。IP封包进到Router之后,由于Router同时要处理的封包的量非常的大(可能是一秒钟几百万甚至几千万),即使经过查表后,确定从某个Port送出去,这个Port处理的封包量仍然很大,也需要Queue起来,一旦Queue起来,就会造成Delay,那么如果是Low Delay的封包,那么在Queue中可能会排在靠前的位置(可以说是有高优先权的意思)。

Throughput:High Throughput 往往与 Low Delay相对应。

Reliability:Router可以先丢掉Normal Reliability的封包。

2 IP Addresses

image

IP地址总共32位,因此有2^32个IP地址,大约40亿个。因为IP地址在分配的时候,网络有大有小,因此分成了3类:

Class A type:只有7个bit来代表Network,因此全球总共只有2^7 = 128种A类网络,那么一个A类网络有多大呢?2^24个(大型网络)。

Class B type:用14个bit来代表Network,全球共有2^14种B类网络,每个B类网络可以有2^16个Host(中型网络)。

Class C type:用21个bit来代表Network,全球共有2^21种C类网络,每个C类网络有2^8个Host(小型网络)。

3 How datagrams are delivered in an Internet ?

image

Router在处理封包时,到底封包走哪一条路径,是会根据网络状态实时变化的。Router与Router之间会定时或者不定时的交换网络的状况,因此Router的Forwarding Table会随时更新。同样的Source送到同样的Destination,由于Forwarding Table会变化,因此封包走的路径会不一样。

封包在传送的过程中可能会被切割,封包组合的工作将由Destination来做。

如果封包在传输过程中lost了(可能由于网络拥塞),那么Router会发一个message,告诉Source封包被丢弃的原因,但是Source不会重传。

image

Router本身在处理封包时,内部有两个重要的Table,一是Routing Table(也叫做Forwarding Table,上图上方中间靠左的Table),二是IP-MAC Table,是IP地址与MAC地址的对照表(上图上方中间靠右的Table)。

在上图中,中间的Router连接了3个网络,左边是LAN 1,右边是LAN 2,下方是LAN n。LAN 1有2个Station,一个是A,一个是HOST X,LAN 2也有2个Station,一个是B,一个是HOST Y。左下方的Router连接了LAN 1和LAN m。其中中间的Router接LAN 1的IP地址为140.114.77.65,接LAN 2的IP地址为140.114.78.66。

如果B要将一个封包丢给Y(注意,B和Y同时连接在LAN 2),封包该如何准备呢?首先,IP的datagram中,Source IP地址即为B的IP地址,Destination IP地址为Y的IP地址,因为B和Y在同一个网络上,因此传送该封包不用经过Router,直接传送给Y的MAC。如下图:

image

如果B要将一个封包丢给A,封包该如何准备?由于B跟A在不同网络中,因此传送封包必须经过Router。Source IP地址为B的IP地址,Destination IP地址为A的IP地址。这个封包是哪一个网卡送的呢?显然是MAC(B)。由于B和A不再同一网络,传送封包必须经过Router,因此Destina MAC地址填Router的网卡位置MAC(R)。如下图:

image

当B将这个封包丢到网络中后,Router就会收这个封包,因为填写了Router的MAC地址。Router将这个封包收起来后,接下来要做的事情是查表。由于目的IP是A的IP地址——140.114.77.60,在Routing Table中发现77这个网段是与Router直接相连的,因此可以直接送给A,但是要送给A,必须有A的MAC地址,这可以通过查找IP-MAC Table。Router将封包送给A,如下图:

image

两个例子总结如下:

image

如果两个Host在同一个网络,那么不用经过Router,就可以将封包直接送给目的地,否则要先丢给Router,再由Router转送,由最后一个Router丢给Destination。

4 example

再来看以下一个例子:

image

上图有4个网络:10.0.0.0、20.0.0.0、30.0.0.0以及40.0.0.0,由F、G、H三个Router连接。Routing Table针对G。

如果G要送封包到20.0.0.0,经查询为直接相连,说明20.0.0.0与Router G直接相连,那么Router G可以将封包直接送达(送到20.0.0.0这个网段上的Host)。同理,30.0.0.0也与Router G直接相连。

如果我们收到一个封包,其目的地是10.0.0.0这个网段,经查表为20.0.0.5,非直接相连,即需要丢给下一个Router,Router相应Port的IP地址为20.0.0.5。注意,并非一个Router一个IP地址,是Router的每一个Port对应一个IP地址。IP Address不是绑定电脑,是绑定Port。每一个Port都会有一个IP Address。例子中,Router F连接两个网络,左边Port的IP Address为10.0.0.5,右边Port的IP Address为20.0.0.5。

如果我们收到一个封包,其目的地是40.0.0.0这个网段,经查表为30.0.0.7,非直接相连,即需要丢给下一个Router,Router相应Port的IP地址为30.0.0.7。

那么怎么产生这样的Routing Table呢?Router之间平常会通过Routing Protocol进行信息交换。经过这样的交换,Router G就知道左边有一个F,右边有一个H…当有了Routing Table之后,封包进来就查表,如果直接相连,就直接送给Destination,如果不是直接相连,就送给Router。但是无论是送给目的Host,还是送给Router,都需要知道对方的MAC Address,因此Router本身还需要查一个表,就是IP Address与MAC Address的对照表。

5 小结

image

forwarding table maps network number into next hop:Forwarding Table即Routing Table,会告诉我们下一个网段或者说Router在哪里。

each host has a default router:每台Host必须设定一个default router,因此我们在操作笔电时,必须进入电脑,设定default router。通信的对象如果与我们在不同的网段,那么我们必须将封包丢给default router,从而丢给下一个Router。

3 IP Subnetting

通过上一小节的介绍,我们已经知道IP地址中,Class A的数量比较少,但是每一个Class A都是一个比较庞大的网络(拥有的主机号多);Class B是一个比较中型的网络,每一个Class B大致拥有6万多个主机号;而Class C分类比较多,但是每一个Class C的size比较小,只有256个IP Address的分配。像这样,只有Class A、Class B、Class C,弹性就不够,因为有时网络中的Host数量未必是这样的等级,可能会造成使用率不佳的状况。

所谓的IP Subnetting就是在原来Class A、Class B、Class C的架构之下,再加上另外一个level,称为子网络。

image

例如,每个Class B Type的IP Address有2^16 = 65536个IP Address可以用,通常用Subnet Mask的值来作为子网络的规模。如果其Subnet Mask为255.255.255.0,说明前24位均为1,后8位为0,那么子网络的大小只有8个bit,即有2^8=256个IP Address可用。如果Subnet Mask为255.255.255.128,说明前25位均为1,后7位为0,那么子网络的大小只有7个bit,即有2^7=128个IP Address可用。下面来看个例子:

image

左下角的无线网:Subnet mask为255.255.255.128即11111111 11111111 11111111 10000000,说明子网络的规模为2^7=128个host,也就是说这个子网络最多能有128个IP。显然,这个子网络的范围为128.96.34.0到128.96.34.127。

上方的Network 2:Subnet mask同样是255.255.255.128。这个子网络的范围为128.96.34.128到128.96.34.255。

右下角的Network 4:Subnet mask为255.255.255.0,说明子网络的规模是2^8=256个host。这个子网络的范围为128.96.33.0到128.96.33.255。

posted @ 2015-06-22 22:08  Acjx  阅读(1040)  评论(0编辑  收藏  举报