• 计算机网络--->5. 网络层 (2)


    6. IP数据包格式

    • 一个IP数据包由首部和数据两部分构成。

    • 首部的前一部分是固定长度,共20字节,是所有IP数据包必须具有的。

    • 在首部的固定部分的后面是一些可选字段(大部分数据包没有),其长度可变

    • 数据部分来源于传输层

    6.1 详细格式介绍

    1. 上图中第一行是bit,8bit=1个字节,一行4个字节,一共5行,共20个字节(固定部分)。

    2. 版本:

    用来表示TCP/IP协议是哪个版本的(ipv4/ipv6);若版本里面的值是4则代表ipv4;若版本里面的值是6则代表ipv6

    3. 首部长度

    用于说明这个ip数据包的首部有多长(包括可变部分)

    4. 区分服务

    网络中的数据包有着急的数据包A(视频聊天)也有不着急的数据包B(邮件),在发数据包A之前在数据包的首部做一下标记(ipt),同时在网络中的路由器上设置一下,让配有标记ipt的数据包先通过。这个在网络上区分不同的流量进行排队服务叫做Qos(在网络上实现服务质量)。

    5. 总长度

    用来表示整个数据包的长度。一共2个字节,16位,最大可用表示的数据包大小为2^16-1=65535字节。而之前所学在数据链路层的以太网的帧的数据部分最大1500个字节(MTU:最大传输单元)。那么网络层的数据包比数据链路层的MTU要大,那么应该如何传输呢?答:网络层的数据包在传输给数据链路层之前要将数据包分片,分成数据链路层能够支持的最大的数据。之后就是将数据包分片传输。一般情况下准备的数据包不超过1500个字节,一般不需要分片

    • 数据包首部+数据包数据部分<1500个字节
    • 数据包数据部分<1480个字节

    6.标识

    数据包分片之后,根据数据包前面的同样的标识还原为一个完整的数据包

    如何传输分片的数据包

    • 发送端,数据包切片后,每个切片都要加上首部,扔到网上之后,路由器选择路径的时候也是一段一段的选,路由器并不知道这被分了段的数据包,任然将其当作正常的数据包传输。

    • 到接收端的网络层会将这些切片的数据包重新组装起来,还原成一个大的包,才会往上层传。

    • 当然也会发生有的分片丢失的情况,那么对方计算机等半天等不到,就认为这个数据包没有完整的传过来

    • 对方计算机如何知道这三个分片是一个包呢,这就需要给数据包标识,在数据包产生的时候就为其编号。

    • 对方计算机收到这些分片的数据包,发现前面的标识都是一样的,那么就认为这时一个数据包

    7.标志

    接收端用来区分自己接收到的是一个分片还是一个完整的数据包。标志占3位,目前只有前两位有意义。标志字段的最低位是MF。MF=1标识后面还有分片;MF=0表示这是最后一个分片。标志字段中间的一位是DF,只有当DF=0时才允许分片。

    8.片偏移

    记录每个分片的第一个字节位于整个数据包的第多少个字节

    9.生存时间

    计算机发数据包的时候给数据包一个TTL,每过一个路由器TTL减1(补充mac地址也是每过一个数据包就要修改)。TTL=1的数据包只能在本网段传输,TTL=2的数据包只能过一个路由器

    10.协议

    用来标识协议号,网络层这些数据包里面的数据是什么数据,是UDP还是TCP,是ICMP协议还是IGMP协议。这里面的协议号就规定了里面的数据部分交给哪一个进程来处理,如果是ICMP协议那么就直接由网络层的ICMP协议来处理;如果是TCP或UDP协议那么就要上传给上一层。(ICMP的协议号是1;IGMP的协议号是2;TCP的协议号是6;UDP的协议号是17;IPv6的协议号是41;OSPF的协议号是89;)

    11. 首部检验和

    数据包在传输的过程中,TTL会变,数据包在传输过程中首部是否被修改或者首部是否出现错误,可以用首部检验和检验,接收端收到后发现检验正确那么就接收这个数据包,否则丢弃。(首部检验和16位只检验数据包的首部不检验数据部分),这里不采用CRC检验而采用简单的计算方法,检验过程如下:

    12.可选字段

    是为了增加IP数据包的功能,IPv6就没有这个可变部分

    说明

    上述分析分析的是IP数据包的结构,ARP协议的数据包不适用此结构

    6.3 使用抓包工具排除网络故障

    抓包工具除了可以帮助我们分析数据包的首部,还有一个非常重要的功能:使用抓包工具排除网络故障,可以使用抓包工具来看看网络中还有哪些数据包

    • 举例:在局域网中的一个用户发现自己的网速不快,可能是该局域网到internet这一节比较慢;也可能是内网发生堵塞。局域网里为什么会堵塞呢?答:局域网中某台计算机在该网段内发目标地址为全1的广播包,交换机会将这个广播包转到所有的口上,导致局域网堵塞。那么正常的计算机A 若ping另一个正常的计算机B就会有很大的延迟和丢包。在A上装上抓包工具后就可以抓到网络上的广播包、多播包以及给自己的数据包; 如果没有抓包工具那么就只能用二分法拔掉网线,当看到交换机等狂闪(很忙),但是当前局域网又很慢,这说明交换机在忙着干别的事情,忙着转广播包。

    7. IP协议(重点)

    1. 路由器根据路由表来判断该从哪一个口转发数据包。路由表分静态路由和动态路由。

    2. 静态路由

    由管理员告知路由器,数据包到不同的网段应该怎么走,静态路由不会随着网络状态的变化而自动调整,适用于网络规模较小的情况

    3. 动态路由

    一堆路由器通过某种协议(RIP)来学习到不同的网段应该怎么走

    4.IP协议

    让路由器能自动学习路由表的协议都叫做IP协议:RIP、OSPF等,IP协议是一个统称

    5. 网络畅通的条件---数据包有去有回

    • a.若是数据包从左边的计算机1传到路由器C的时候,C若没有下一段路由表,不知道传给谁,那么C就会返回给计算机1一个数据包,告知目标地址不可到达。

    • b.若数据包已经到右边的计算机2了,但是在计算机2返回数据包到F的时候,F不知道后面怎么走,此时计算机1若ping计算机2,得到的结果就是请求超时。

    • c.除了检查上述“来回路由器是否有到目标网段的路由表的问题”,以后在检查网络通不通的时候,还要看收发计算机是否配备网关,没有配备网关的计算机是不知道到其他网段该怎么走的,没有网关就没有办法到其他网段。

    7.1 RIP

    动态路由的RIP协议是一个开放式的动态路由协议:

    RIP协议的工作方式


    路由器ABCD都运行RIP协议,路由器A连着4个网段,它会周期性地在网络上发广播,通过广播包告知其他路由器自己连着哪些网段,那么B路由器就会知道到192.168.1.0网段下一跳就给A,且要过1个路由器;B也要周期性地每隔30秒告诉C路由器我连着192.168.1.0网段,我到该网段要过1个路由器;C网段就记下了,要到该网段下一跳要给B,且算出自己要过两个路由器。同时这些信息也会由A传给E,E传给D,D告诉C,C就记下了这条路也可以到达该网段,但是算出自己要过3个路由器。目前为止C就认为到该网段有两条路可以走。RIP协议选取路由器最少的路径为最佳路径。

    RIP总结
    • 周期性广播路由表给其他路由器;

    • 选择最佳路径的标志就是“跳数”,跳数少的就是最佳路径;

    • 30秒更新一下路由信息;(原因:让旁边的路由器知道本路由器还活着,要是一个路由器超过一段时间没有联系邻居路由器,那么这个邻居路由器就会传播这个路由器不幸去世的消息)

    • 如果一个网络搭建好了,一年都没有变化,但是路由器也没闲着,而是每隔30秒更新一次,这也是比较消耗带宽的

    • RIP最大跳数15跳,如果到目的地要经过16跳,那么RIP协议就认为不可达,适用于网络规模较小的情况

    7.2 OSPF

    该协议也可以选择最佳路径,选择最佳路径的标准是带宽

  • 相关阅读:
    组装query,query汇总,query字段
    POJ 1276, Cash Machine
    POJ 1129, Channel Allocation
    POJ 2531, Network Saboteur
    POJ 1837, Balance
    POJ 3278, Catch That Cow
    POJ 2676, Sudoku
    POJ 3126, Prime Path
    POJ 3414, Pots
    POJ 1426, Find The Multiple
  • 原文地址:https://www.cnblogs.com/deer-cen/p/12320233.html
Copyright © 2020-2023  润新知