• 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。

  • 相关阅读:
    重载运算与类型转换——函数调用运算符,重载、类型转换与运算符
    重载运算与类型转换——基本概念,输入和输出运算符,算术和关系运算符,赋值运算符,下标运算符,递增和递减运算符,成员访问运算符
    拷贝控制——拷贝控制和资源管理,交换操作,对象移动
    拷贝控制——拷贝、赋值与销毁
    动态内存——动态数组
    middlegenide  eclipse 的插件
    jquery
    avg
    dom4j
    dom4j  简单使用
  • 原文地址:https://www.cnblogs.com/jianxinzhou/p/4594027.html
Copyright © 2020-2023  润新知