之前忘记说了,这些内容都是边看视频边写的,视频出自西安交通大学。

本期说的是IP分组转发的内容,里面详细介绍了IP协议跟ARP协议,最后再给出一个例子,说明这两个协议在网络中传输的具体过程。


1)Ip分组与转发

2)在Internet中,IP分组的特点

3)ARP协议

4)IP分组发送过程


1)Ip分组与转发

红色部分为固定部分,绿色部分是数据部分

  • IP头包括20个字节的固定长度和变长(最多40个字节)的可选部分,
  • 版本:如IPV4,IPV6;
  • 头部长度:IP分组头的长度
  • 长度:IP头+数据部分的长度
  • 标识域: 很重要,用于分段与重组
  • 标识位: 有DF跟MF,当DF=0时,表示允许分段;MF=0时,表示这是最后一个分片
  • 偏移量:标明分片在原始的报文中的位置.

举例来说明标识域标识位跟偏移量的使用,假设有AB两个节点,跟R1 R2两个路由,现在A->R1->R2->B这样传输,

长度=4000 标识符 MF=0 偏移量=0

这是一个长度为4000bit的一个报文,假设经过路由的最大长度只能是1500bit,所以传输的过程中要将它分为几个分组分别发送,这里分组的长度要满足,长度-IP头必须是8的整数倍才行.

长度=1500 标识符 MF=0 偏移量=0

1500-IP头=1480;1480/8=185

长度=1500 标识符 MF=1 偏移量=185

同上,偏移量也是185

长度=1040 标识符 MF=0 偏移量=370

这里的长度为什么是1040呢?因为给前两个分组的IP头留出位子,这样数据的长度才能是4000-20=3980.

这样分组后,在最后一个路由器是要把这些分组重装起来,而这些分组又不是按顺序到达的,所以最后一个路由器通过偏移量和MF,就可以进行合理有序的重装了。

  • 生存期(TTL):指明这个IP分组能在网络中存活的最长时间,这里的时间是指跳数(从跟由R1跳到R2为一跳),当TTL为零的时候,这个IP分组就会被丢弃了~我们经常使用的Ping指令就能一项参数是TTL的值.   这里TTL的作用是,当一个数据包因为种种原因没能传到目的主机,这个包就会流浪在网络中,这时网络的开销就会增大,所以才会制定这个TTL机制.
  • 协议域:上层是哪种协议如:TCP UDP等
  • 源地址:本身的地址
  • 目的地址:要发送的地址

2)在Internet中,IP分组的转发具有如下特点

  • 每个IP分组中都包含目的主机的IP地址(有时的源地址不是发送主机的IP地址哦)
  • IP地址中的网络号唯一标识Internet中的一个物理网络,路由在转发过程中就按照网络号在不同的网络中传输
  • 所有连接到相同物理网络中的主机和路由,它们的网络号是一样的,在同一个网络中可直接通信
  • Internet中的每个物理网络至少有一个与之相连接的路由器
  • 在路由器中根据目的IP地址进行转发
  • 路由器中路由表的格式,在cmd中输入route print就可以看到路由表,可以简化成下图:

  • 看一个子网互联的例子

看到子网1跟子网2,以总线式分布着,这两个网络由一个路由器相连,路由器连接着这两个子网,掩码使用的是标准的C类掩码,通过IP地址与掩码可得:子网1的网络号是202.1.64.0子网2的网络号是202.1.61.0.可知它们不在一个网络中,就通过一个路由相接。在这里还可看出,路由器的网络号跟他相连接的网络的网络号是一样的。

  • 再看一个例子

三个子网络,以总线式的方式相连。三个子网络再通过三个路由器实现互联。尝试的画出R1路由器的路由表吧~

1、跟R1直接相连的网络有:20.0.0.0;30.0.0.0;50.0.0.0。直接相接,没有下一跳,距离也就是0

2、到10.0.0.0可以会经过R3,所以下一跳是20.0.0.0,距离为1. 路由表是实时更新的,所以也有可以通过R2再到R3这样走

3、40.0.0.0和60.0.0.0的方式跟10.0.0.0差不多

4、要是给在LAN1的三台主机分配地址,假设子网掩码是标准的A类掩码。可以分配为50.1.2.1;50.2.0.2;50.0.5.3。也就是说,只要网络号想同,主机号就可随意了。

5、而给R1这个路由器的三个端口分配IP地址,也要满足他们的网络号跟连接的网络的网络号相同,比如跟LAN1相接的可以是50.0.0.8,跟R3相连的可以是20.0.0.2等。


3)ARP协议

ARP协议:地址解析协议,解决的是从网络层地址到数据链路层的地址映射问题。使用arp -a这个命可看到你电脑中的ARP表--IP地址与对应的MAC地址。

在一个网络中,主机A在网络中广播去出一个 ARP请求包,想知道IP地址是10.1.0.5的MAC地址,这时的C收到这个包后回响应A,将自己的MAC地址发送出去。


4)IP分组发送过程

如图所示,AB之间想通信。跟AB直连的那个路由叫做网关。

1、假设A:202.117.15.4;B:202.117.15.8,子网掩码是标准C类掩码。用IP地址跟掩码的相与运算就可判断他们是否在同一个网络内,可知AB是在同一个网络内,是可直接通信的。然后,就通过刚才说的ARP协议,来获得目的IP的MAC地址(也可能是查A中的ARP表,因为之前可以已记录了B的MAC地址)。

2、假设A:202.117.15.4;B:202.117.16.8,子网掩码是标准C类掩码,可知他们不在同一网络。

则首选通过ARP协议获取网关的MAC地址(假设是202.117.15.1,红色部分相同就可啦,后面那个只要不是0或255都行)。网关收到请求后就响应之,返回他的MAC地址。

发送的IP分组:

源MAC:A 网关MAC 源IP:A 目的IP:B

这时网送就收到了这个IP分组,再解析帧,获得目的 IP:B,这时的网关就开始路由了,先查找路由表,确定下一跳在哪,再发送ARP请求包获得下一跳的MAC地址。

源网关MAC 目的网关MAC 源IP:A 目的IP:B

然后下一个路由收到后再解析…………

这样就一直下去,直到出口网关(也就是B所在的子网)。到C后,解析IP分组,取出TCP/UDP报文,转交给上层!

过程如下图描述


看跟写真是的二种完全不一样的概念,学习到很多,感觉网络很神奇,嘿嘿,进步进步~~

计算机网络自学之路------IP协议(2)的更多相关文章

  1. 计算机网络自学之路-----IP协议(3)

    前面一期说到了IP层的IP协议跟ARP协议,因为IPV4协议自身有些不足的地方,为了弥补这些不足,又引入了一些别的协议.觉得这种弥补方式治标不治本~~ 1)ICMP网络控制报文协议 2)CIDR无类域 ...

  2. 计算机网络自学之路------IP协议(1)

    1)TCP/IP模型与OSI对应 2)TCP/IP集每层主要协议 3)IP协议 4)IP地址的命名与使用 5)子网与子网掩码 1)TCP/IP模型与OSI对应关系 我们看到,TCP/IP只有四层与OS ...

  3. 计算机网络 4.网络层与IP协议

    网络中的每一台主机和路由器都有一个网络层部分.而路由器中也没有网络层以上的层次.网络层是协议栈中最复杂的层次. 转发forwarding:当一个分组到达某路由器的输入链路时.该路由器将分组移动到适当的 ...

  4. 计算机网络知识之TCP/IP协议簇

    OSI参考模型 OSI的来源         OSI(Open System Interconnect),即开放式系统互联. 一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网 ...

  5. 计算机网络——OSI、TCP/IP协议族详解

    一.OSI七层协议体系结构域TCP/IP四层体系结构对比 ISO/OSI模型,即开放式通信系统互联参考模型(Open System Interconnection Reference Model),是 ...

  6. 计算机网络初探(ip协议)

    粗读了两遍计算机网络(谢希仁),对于计算计算机网络算是有了一个初步的了解,所以打算写一篇文章(希望是教程)进行巩固(主要围绕IP协议). 局域网 因特网的产生和广泛使用极大地改变了我们的生活,但对于不 ...

  7. 计算机网络三:域名、IP地址和TCP/IP协议

    一.域名        域名(Domain Name),简称域名.网域,是由一串用点分隔的字符型标志名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时 ...

  8. Python之路(第三十篇) 网络编程:socket、tcp/ip协议

    一.客户端/服务器架构 1.硬件C/S架构(打印机) 打印机作为一个服务端,电脑连接打印机进行打印 2.软件C/S架构 互联网中处处是C/S架构 如谷歌网站是服务端,你的浏览器是客户端(B/S架构也是 ...

  9. 计算机网络 0.初识Internet与TCP/IP协议

    互联网,即因特网,Internet.互联网是一个世界范围的计算机网络.连接了世界上无数的计算设备,这些计算设备为PC.基于Linux的工作站,serverservers等等. 这些设备依据其作用不同可 ...

随机推荐

  1. wordpress 打开卡在1.gravatar.com

    grevatar.com打不开,涉及到加载头像的地方都会变慢. 可以使用https的头像链接代替http链接 官方Gravatar头像调用ssl头像链接 进入wordpress后台->外观-&g ...

  2. Erlang&RabbitMQ服务安装配置

    RabbitMQ是流行的开源消息队列系统,是AMQP(Advanced Message Queuing Protocol高级消息队列协议)的标准实现,用erlang语言开发.RabbitMQ据说具有良 ...

  3. java通用的方法整理

    判断字符串是否为空 public static boolean IsEmpty(String str){ if (str == null){ return true; } if ("&quo ...

  4. 【转】输入/输出流 - 深入理解Java中的流 (Stream)

    基于流的数据读写,太抽象了,什么叫基于流,什么是流?Hadoop是Java语言写的,所以想理解好Hadoop的Streaming Data Access,还得从Java流机制入手.流机制也是JAVA及 ...

  5. what is SVD and how to calculate it

    http://web.mit.edu/be.400/www/SVD/Singular_Value_Decomposition.htm SVD是研究地震波运动极性化的一个方法.

  6. 通过FEDERATED存储引擎跨实例访问数据

    通过FEDERATED存储引擎同步两实例间的表数据需求情景:实例1中A库中的三个视图是实例2中的B库所依赖的,B需要A库中三个视图的实时数据.方案:通过FEDERATED来完成跨势力的查询FEDERA ...

  7. 利用border-radious画图形

    今天才发现,border-radius可以画很多图形,下面跟我来看一下吧: 在设有宽和高的情况下画一个圆: #div1{ /*宽高相等,圆角范围为高或宽的一半或以上*/ background-colo ...

  8. 触发Full GC执行的情况

    除直接调用System.gc外,触发Full GC执行的情况有如下四种. 1. 旧生代空间不足 旧生代空间只有在新生代对象转入及创建为大对象.大数组时才会出现不足的现象,当执行Full GC后空间仍然 ...

  9. iOS应用性能调优好文mark

    http://www.cocoachina.com/ios/20150408/11501.html

  10. Java技能树

    自古程序员爱黑Java,不黑不痛快的说,最近一周在V2EX上至少看到过不下5个黑Java的帖子,而且都是顶的老高,一共点开看了一个感觉好无趣啊.我到现在为止已经写了4年的C了,主要是做嵌入式驱动的开发 ...