设为首页收藏本站language 语言切换
查看: 1897|回复: 1
收起左侧

[原创] IP基本原理

[复制链接]
发表于 2017-7-8 09:12:15 | 显示全部楼层 |阅读模式
    好,我们开始上课。上节课我们讲到IP地址,还记得IP地址是分为几类?每一类的范围是什么?


    这里我就不带大家一一回顾了,今天我们讲新的内容,IP基本原理。IP是三层的,我们来好好看看三层到底有哪些协议和设备。


    三层叫做网络层,在OSI参考模型和TCP/IP参考模型中,它的单词不一样。TCP/IP参考模型中是Internet,OSI参考模型中是Network。在我们的PPT中,IP上下左右各有四个协议,分别是ARP协议,RARP协议,ICMP协议和IGMP协议。在NA的时候,我们会和大家介绍前三个协议和IP协议,至于最后一个IGMP协议。这个我们将会在NP的课程中为大家详细介绍,大家目前只要知道,这是个组播协议就行。虽说,这几个都是三层协议,不过都是得基于IP协议,所以不能完全的代替IP协议。能代替IP协议支持整个三层的协议还有,IP X协议,apple talk后面两个大家了解下就行,基本上是用不到的。ARP协议和RARP协议在IP协议下,又在二层协议上,所以有时间我们往往说它们是2.5层协议。ICMP协议和IGMP协议,它们是基于IP之上,所以称之3.5层协议。现在我们全球三层协议用的都是IP协议,所以你们会听到我们有时间讲网络,也叫它IP网络。


    IP全称Internet Protocol,中文名称互联网协议。IP协议的作用就是三层的功能。也就是说,作为参考模型的第三层,它应该完成几个任务,IP协议就要完成几个任务。因为它是三层的代表。


    三层的作用之一是,它可以标识不同的节点和链路。那么作为三层的代表,IP也需要具有标识节点和链路的能力。这里的节点就是我们一直所说的终端,(包括PC啊,服务器啊,打印机啊等在网络中占有一席之地的。我们都称之为节点。)那我们如何去区分这些不同的节点呢?用IP地址!用IP地址来标识不同的节点。那用什么来标识一个链路呢?这里的链路就像是一个局域网,一个网络。


    这里的网络针对的是三层典型的代表设备——路由器。路由器和路由器之间相连,我们就称之为链路。路由器的一个接口就连接一个网络,另外一个接口就连接另外一个网络。这是三层设备的特点。为了区分不同的链路,我们就要用到网络号。


    我们不同的局域网之间不可以通信,但是我们可以借助于路由器这个设备来实现通信。


    第二个功能就是寻址和转发。在不同的网络中,两台PC要想通信,需要路由器帮它们把数据进行转发。同时,也还需要知道这两台PC在哪。所以路由器针对这些事情的时候,得先找到目标是谁。寻址过之后,第二步是转发。路由器知道目标是谁了,代替发送发把数据转交到接收方。


    第三个功能就是要适应各种数据链路。局域网是每个公司或者每个人自己去组建的,那么自己的想法、喜好和经济状况也都是不一样的。那么势必也会存在他们局域网络连接的网络介质存在一定的差异,网络设备也存在一定的差异。不管连接的双方之间是什么,作为路由器而言,它是不是必须要做到连接双方的局域网要形成通信。那么它势必要适应多种网络介质通信。


    这就是IP要完成的三大功能,同时也是三层设备必须要完成的功能。路由器的一个接口就是一个局域网,也是一个广播域。准确来说,是这两个接口的IP地址的网络号不一样。默认规定,路由器任意两个接口的网络号都不允许相同。也就是说,绝对不允许路由器上的两个接口配置同一个网段的IP地址。


    路由器是典型的三层设备。当然,除了路由器,三层的设备还有个核心交换机。


    接下来,我们来看看IP协议是如何完成我们上述所说的三个功能的。


    Version,版本,表示IP协议的版本。我们目前IP协议有两个版本,IPV4和IPV6。现在我们使用的是IPV4。


    IHL,报头长度,指的是IP报头的长度。


    Type of Service,服务类型,这个主要表示我们IP报文的优先级。如果我们的链路发生拥塞的时候,网络设备会根据这个优先级,优先处理哪些数据。(这多是在QOS里面去使用的。)


    Total Length,总长度,指的是报头长加上数据。同学你们可知道,这个数据指的是什么?上层的PDU,对于三层用户数据来说,是不是就是四层的PDU。这些加在一起,就是总长度。


    Identification,标识符;Flags,标记字段;Fragment Offset,分段偏移。这三个在一起,完成一个作用。通信根据我们数据发送的原理,分为两类,一个是电路交换,一个是分组交换。分组交换的特点是将我们数据分成若干个组,然后根据不同的路径,发送给接收方。


    我们发送数据的时候,会对数据进行分组。当接收方收到这些数据的时候,会进行重组。那么问题来了,接收分是怎么知道哪些数据和哪些数据是一起的呢?我们用什么来标识分组后的数据来自同一个数据的呢?


    我们可以用标识字段来去标识分组的数据。这样的话,我们只知道分组后的数据是那么多,但是重组的时候,顺序也是个大难题,这又是怎么解决呢?


    用分段偏移,每一个分组后的数据的第一个字节是我原始数据的第一个字节的偏移量。怎么说呢,比如数据为1000,我在400字节时候分一次,那么我第一次的时候是0-399,第二段的第一个字节是不是第一段第一个字节0,加上偏移量400,不就是400嘛。这样好理解了吧。


    Time to Live,生存时间,表示我这个数据在网络中的寿命。默认数值255,每经过一台路由器,数值减一。当数值为零的时候,数据包将会被丢弃。


    Protocol,协议,使用协议号来标示基于三层之上的不同的上层协议。


    Header Checksum,报头校验和,针对IP报头的校验字段。


    Source Address,源IP地址。


    Destination Address,目标IP地址。


    Options,选项;Padding,填充。选项和填充这两个高级属性,我们将在IE的课程中会和大家进行介绍。


    在这么多的字段中,需要大家熟练掌握的是。Time to Live,Protocol,Source Address和Destination Address这四个。要熟练掌握它们各自的作用和特点。其他的,现在不强求。这是我们和大家介绍的IP报头格式。


    虽然有这么多字段,但是IP协议还是不能做到可靠传输。所以,它还有如下的特点。


    提供不可靠的,尽力而为的服务。


    MTU,最大传输单元。是链路层传送的最大数据包,单位是字节。这有什么作用呢?就是你的数据分组传输的凭证。为什么数据必须要分成若干段,依据是什么?就是它!单个数据最大传输就是它的大小,大了就传输不了,必须分段。


    这边罗列了一些常见网络类型的MTU大小,其中有些是需要大家熟练记住的。二层802.3协议下,它的MTU默认是1492。标准的以太网,它的MTU是1500。PPPoE协议下,MTU是1492。最大的MTU值,允许达到65535。这几个数字记一下。


    ARP,地址解析协议。数据包发送的时候,在发送方需要封装数据,而我们知道,我们数据封装的时候是从下往下逐层封装。当我们根据目标IP地址和源IP地址,封装完三层之后,将会进行二层的封装。当我们知道目标的IP地址,但是不知道目标的MAC地址。这时候我们怎么办呢?


    这时候我们就要运用到APR协议。已知目标IP地址,解析该IP地址对应的MAC地址。(在发送方第一次发送数据给对端的时候,不知道目标的MAC地址时触发。)上述说了第一次发送的时候触发,那么第二次的时候就不需要了,这是个什么情况呢?


    因为我们设备中有个ARP表,其中记录了IP地址和MAC地址的映射关系。当我们第一次触发ARP之后,我们就会把IP地址和MAC地址映射的关系放在ARP表中,第二次发送数据的时候,我们就可以根据ARP表来转发数据。


    直接广播请求,问目标的MAC地址是什么。广播发送,是不是所有人都可以接受到。当别人接受到数据的时候,解封装一看,目标MAC地址是12个F的时候,认为是自己,可以继续解封装,当看到三层的时候,不是自己,那么丢弃。


    当目标方收到,也是同样的操作,不过它是看到三层,是自己,会完成解封装。然后知道发送方的IP地址和MAC地址,那么是不是可以直接单播回应个数据包给发送方。


    这样发送方收到接收方给它回的数据包,得知MAC地址,这样就把IP地址和MAC地址的映射关系存放在自己的ARP表中。


    这就是我们ARP的原理,广播请求,单播回应!


    网关,我们数据转发时候的关卡,帮我们转发数据的时候用的。比如说,我们的PC在网络中,谁也不认识,但是它想去认识新的朋友啊。是不是得找个中间人带着它去访问,这个中间人就相当于网关。


    如果我们发送发和接收方在两个不同的网段,那么我们的ARP数据肯定发送不到对端。因为不在同一局域网内,不能进行通信。


    这时候我们就需要代理ARP。这肯定是其中有个设备帮我们做了ARP请求。当我们路由器收到发送方的ARP请求包时,进行解封装,看了下二层目标MAC地址,是12个F。继续解封装,三层目标IP地址,不是自己。看下可认知,不认识,则丢弃。认识,转发给接收方。这时我们的接收方会误认为是我路由器做的ARP请求。这是怎么回事呢?


    我路由器在针对转发这个数据的时候,它目标IP地址无法去更改,但是我源IP地址和源MAC地址都变成了路由器的地址。这样我接收方则会认为是路由器做了这样的操作。会把单播回给路由器。


    路由器看到这个单播,解封装看不是自己,则会还给发送发。发送方也会认为是路由器给了它回应,则会把路由器的MAC地址和IP地址在它的ARP表中进行绑定。这就是代理ARP。








发表于 2020-7-27 19:21:15 | 显示全部楼层
感谢楼主分享
沙发 2020-7-27 19:21:15 回复 收起回复
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-4-27 12:39 , Processed in 0.080856 second(s), 24 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表