计算机网络自学之路------IP协议(2)
之前忘记说了,这些内容都是边看视频边写的,视频出自西安交通大学。
本期说的是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)的更多相关文章
- 计算机网络自学之路-----IP协议(3)
前面一期说到了IP层的IP协议跟ARP协议,因为IPV4协议自身有些不足的地方,为了弥补这些不足,又引入了一些别的协议.觉得这种弥补方式治标不治本~~ 1)ICMP网络控制报文协议 2)CIDR无类域 ...
- 计算机网络自学之路------IP协议(1)
1)TCP/IP模型与OSI对应 2)TCP/IP集每层主要协议 3)IP协议 4)IP地址的命名与使用 5)子网与子网掩码 1)TCP/IP模型与OSI对应关系 我们看到,TCP/IP只有四层与OS ...
- 计算机网络 4.网络层与IP协议
网络中的每一台主机和路由器都有一个网络层部分.而路由器中也没有网络层以上的层次.网络层是协议栈中最复杂的层次. 转发forwarding:当一个分组到达某路由器的输入链路时.该路由器将分组移动到适当的 ...
- 计算机网络知识之TCP/IP协议簇
OSI参考模型 OSI的来源 OSI(Open System Interconnect),即开放式系统互联. 一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网 ...
- 计算机网络——OSI、TCP/IP协议族详解
一.OSI七层协议体系结构域TCP/IP四层体系结构对比 ISO/OSI模型,即开放式通信系统互联参考模型(Open System Interconnection Reference Model),是 ...
- 计算机网络初探(ip协议)
粗读了两遍计算机网络(谢希仁),对于计算计算机网络算是有了一个初步的了解,所以打算写一篇文章(希望是教程)进行巩固(主要围绕IP协议). 局域网 因特网的产生和广泛使用极大地改变了我们的生活,但对于不 ...
- 计算机网络三:域名、IP地址和TCP/IP协议
一.域名 域名(Domain Name),简称域名.网域,是由一串用点分隔的字符型标志名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时 ...
- Python之路(第三十篇) 网络编程:socket、tcp/ip协议
一.客户端/服务器架构 1.硬件C/S架构(打印机) 打印机作为一个服务端,电脑连接打印机进行打印 2.软件C/S架构 互联网中处处是C/S架构 如谷歌网站是服务端,你的浏览器是客户端(B/S架构也是 ...
- 计算机网络 0.初识Internet与TCP/IP协议
互联网,即因特网,Internet.互联网是一个世界范围的计算机网络.连接了世界上无数的计算设备,这些计算设备为PC.基于Linux的工作站,serverservers等等. 这些设备依据其作用不同可 ...
随机推荐
- MFC学习笔记(一)
个人对MFC技术一直都很感兴趣,因为能够做出漂亮绚丽的界面应该是一件十分有成就感的事情. 学习的参考课本为北京博彦科技发展有限责任公司翻译的Jeff Prosise著的<MFC Windows程 ...
- 解决 主界面mainactivity 中fragment弹框把下面tab选项卡 顶上去的方案
android:windowSoftInputMode="adjustPan" android:configChanges="screenSize ...
- ubuntu方块乱码
更改下环境变量/etc/default/locale LANG="en_US.UTF-8"LANGUAGE="en_US:en"
- break continue 区别 以及实例
不论是MATLAB.c/c++.c#还是其他类型的编程语言,我们总是避免不了和for循环以及switch语句打交道,而对循环进行优化的时候,又总是避免不了用到break以及continue来控制循环, ...
- s验证数据库中字段值是否重复
daoImpl: public String isVipCode(String vipcode) { String sql = "from FfzjUserEntity where vip_ ...
- 《1---关于解决MySQL在控制台插入中文乱码问题》
说明:以下所有操作都是基于我个人的电脑及示例,读者可以参考我这个解决过程,去解决自己的问题,如有其它疑问,欢迎留言交流. 首先来看看我遇到的问题: [1]查看数据库: [2]使用test数据库: [3 ...
- Ubuntu下libpcap安装
1.首先按下面的博客教程下载和安装四个软件包: 点击打开链接 2.这四个软件都安装好之后按下面教程新建Makefile文件和test.c文件: 点击打开链接 Makefie: all: test.c ...
- Java Swing 第02记 标签和按钮
JLable的常用构造器 Public JLabel() 创建无图像且其标题为空字符串的JLabel对象 Public JLabel(String text) 使用指定的字符串text(也就是标签显示 ...
- 对Ajax的理解
一.Ajax的工作原理: 1. Ajax的机制是:完成异步请求,实现页面的局部刷新. 2. 发送异步请求:通过xmlhttprequest方法. 3. 浏览器向服务器发送异步请求: 服务器接收处理请求 ...
- redhat6.5修改yum为163源
把需要的安装包和配置文件打包,将命令整合到sh文件中,下载后解压运行yun_config.sh 即可 下载链接