计算机网络自学之路------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等等. 这些设备依据其作用不同可 ...
随机推荐
- java常用基础知识点 (持续追加)
作为一个Java编程人,会经常用上JDK中的大量的API类库,常用的有字符串操作.集合操作.文本操作.输入输出操作.以及网络操作, 常用的包: 1. java.lang Java程序的基础类,字符串, ...
- eclipse下的反编译
Eclipse 安装反编译插件jadclipse(经验总结) 根据网上搜集的材料以及亲身安装测试,总结经验如下,希望能够帮助有需要的朋友们,本总结有助于朋友们少走弯路哦!jadclipse可以帮助查看 ...
- DotNetBar for Windows Forms 12.1.0.0_冰河之刃重打包版 原创发布
关于 DotNetBar for Windows Forms 12.1.0.0_冰河之刃重打包版 --------------------11.8.0.8_冰河之刃重打包版-------------- ...
- B2C电子商务基础系统架构解析(转载)
系统的开发与演化,前台严格follow消费者的购买流程,后台则盯牢订单流转,牢牢抓住这两条主线,才能高屋建瓴的看清B2C的逻辑链和数据流,更深刻的规划功能模块,从而更有效支撑实际业务的流转. 前台 前 ...
- linux下打包工具
InstallAnyWhere IzPack InstallJammer; installshield 也支持rpm打包 Advanced Installer
- c# 水晶报表的设计(非常的基础)
最近在公司实习,由于公司需要用到的一种叫做水晶报表的神奇的东东,老大就叫我们学习学习.怕自己以后忘了,也为了以后阅读方便,将其记录下来. 使用工具:vs2008 基本方法一.使用水晶报表的推模式 步骤 ...
- 我的第一个HTML的程序
<html> <head><title>title为显示标签页的内容</title></head> <body> <h1& ...
- NOIP 考前 KMP练习
BZOJ 1461 && BZOJ 1729 KMP+BIT 一看就是字符串匹配但是不同的是要按照每个字符的排名情况. 首先对于数字x的排名,那么要判断x前小于x的数的个数,和x前小于 ...
- demo和实际项目的距离
回家的路上想到一个很形象的类比,关于学生时期的实验(以及一些简单的demo)和实际工作项目的差别. 实现了同样的功能,比如要制作一把椅子,如果是简单的demo,那么就如同是给你了一个单独的房间,里面已 ...
- C# foreach,等量代换,冒泡排序
foreach: foreach (int h in a) //可以将数组读出来(自动遍历数组) { Console.WriteLi ...