• 网络层


    一、网络层的作用

    负责在不同的网络之间(基于数据包的IP地址)尽力转发数据包,不负责丢包重传和接收顺序。

    网络层的中间设备:路由器,能看到网络层的IP地址来选择路径。

    附:不同层的中间设备:

    中间设备又称为中间系统或中继(relay)系统。
    物理层中继系统:转发器(repeater),有点像集线器。
    数据链路层中继系统:网桥或桥接器(bridge)。
    网络层中继系统:路由器(router)。
    传输层/应用层中继系统:网关(gateway)器。网关就是路由器接口的地址。一般是本网段第一个地址。

    二、网络设备和OSI参考模型的关系

    发送端(封装):
    (1)应用层准备要传输的数据;
    (2)传输层把文件进行分段并编号;(数据段)
    (3)网络层把传输层的每一个数据包增加原IP地址和目标IP地址;(数据包)
    (4)数据链路层把每个数据加上MAC地址;两种情况:(数据帧)
    使用自己的子网掩码,判断自己和目标地址分别在哪个网段,若在同一个网段(不过路由器),通过ARP协议广播的方式得到目标IP地址的MAC地址,然后就能封装出一个数据帧;如果子网掩码不是一个网段(用与运算),通过ARP协议广播的方式得到路由器(网关)的MAC地址,然后把数据通过交换机发送到路由器M2,因为M2和M3是点对点通信,没有别的主机,所以它们之间的MAC地址就是FF。
    (5)物理层把数据帧变成数字信号(bit流)
    接收端(解封):
    (1)交换机Hub0接收bit流,能对数据进行存储转发。它根据数据帧的MAC地址,确定数据是从哪来的,要去哪。
    (2)路由器M2获取交换机的数据包,识别其中的IP地址,根据路由表选择出口,它无法识别数据段内容。
    (3)路由器M2到M3是点对点通信,遵守PPP协议。
    (4)PC3收到bit流后,数据链路层发现MAC地址是自己的,去掉MAC地址给它的网络层,网络层去掉IP地址给传输层,传输层把数据给应用层,应用层把各个数据拼接起来。

    三、ARP协议

    1.TCP/IP协议层次关系

     

    2.ARP协议的作用
    将IP地址通过广播(本网段,不通过路由器),目标MAC地址是FF-FF-FF-FF-FF-FF,解析目标IP地址的MAC地址。
    ARP是解决同一个局域网上的主机或路由器的IP地址和MAC地址的映射关系。如果所找的主机和原主机不在同一个局域网上,那么就要通过ARP找一个位于本局域网上的某个路由器的MAC地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做。
    从IP地址到MAC地址的解析是自动进行的,主机的用户对这种地址解析过程是不知情的。
    只要主机或路由器要和本网络上的另一个已知IP地址的主机或路由器进行通信,ARP协议就会自动地将该IP地址解析为链路层所需要的MAC地址。

    3.使用ARP的四种典型情况
    (1)发送方是主机,要把IP数据报发送到本网络的另一个主机,此时用ARP找到目标主机的MAC地址;
    (2)发送方是主机,要把IP数据报发送到另一个网络的另一个主机,此时用ARP找到本网络上一个路由器的MAC地址,剩下的工作由路由器进行;
    (3)发送方是路由器,要把IP数据报发送到本网络的另一个主机,此时用ARP找到目标主机的MAC地址;
    (4)发送方是路由器,要把IP数据报发送到另一个网络的另一个主机,此时用ARP找到本网络上一个路由器的MAC地址,剩下的工作由路由器进行;

    4.逆地址解析协议RARP
    只知道自己MAC地址就能获得其IP地址。

    四、网际控制报文协议ICMP

    1.ICMP协议
    ICMP:在IP之上,用来测试网络层有没有故障。使用最多的命令是ping。
    为了提高IP数据报交付成功的机会,在网络层使用了ICMP(Internet Control Message Protocol)。
    ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告;
    ICMP不是高层协议,而是IP层协议;
    ICMP报文件为IP层数据报的数据加上数据报的首部,组成IP数据报发送出去。

    2.ping(Packet Internet Grope)命令诊断网络故障
    PING是网络层命令。
    TTL是数据报的生存时间每过一个路由器就会减1,作用是防止数据报在网络中循环。TTL默认初始值如下:
    Linux 64
    Windows 128
    Unix 256
    可以根据TTL值粗略判定对方是什么系统。
    (1)PING,因特网包套所起,用于测试网络连接量的程序。ping发送一饿ICMP回声请求消息给目的地并报告是否收到所希望的ICMP回声应答。
    (2)ping指端对端联通,通常用作可用性检测,但是某些病毒会强行大量远程执行ping命令抢占你的网络资源,导致系统网速变慢。严禁ping入侵作为大多数防火墙的一个基本功能提供给用户进行选择。
    (3)如果打开IE浏览器访问网站失败,可以通过ping命令测试到Internet的网络连通,可以为你排除网络故障提供线索。

    3.ping和pathping命令
    QQ能登上,网页打不开是为什么? 网络层没有问题,域名解析有问题。
    pathping 能跟踪数据包路径,发现出问题的位置。
    Windows上跟踪数据包路径的命令:tracerert 10.7.1.53
    路由器上跟踪数据包路径的命令:traceroute 12.0.0.3

    五、IGMP协议和多播组播

    1.广播:目标MAC地址全是F,目标IP地址全是255,也就是全是1.全网广播不能跨越路由器。
    组播=多播:分组广播。

    2.访问多播视频节目
    使用多播一般用于直播,网络会议,能够节省带宽。
    IGMP协议的作用就是周期性扫描本网段内有没有主机在访问多播数据包。

    六、IP数据包的结构
    首部:第一部分是固定长度,20字节,是所有IP数据包必须具有的。后一部分是可选字段,4字节,长度可变。

    (1)版本:用来表示TCP/IP是哪个版本,ipv4还是ipv6.
    (2)区分服务:确定更高的传输优先级。
    (3)总长度:确定数据部分长度。一共是16位,最多有2^16-1=65535字节。
    注意,网络层,数据包最大65535字节;而数据链路层数据最大是1500字节,是不一样的。所以说,一旦超过数据链路层的最大要求时(网络层数据部分超过1480字节),数据包会分片。最大传输单元MTU。

    数据包分片:把数据分割,分别添加IP地址,通过网络发给目标MAC地址。目标在通过网络层拼接。传送过程中可能会丢包,或者后发的先到(泪滴攻击就是利用目标机发送破坏的IP包(重叠的包货过大的包负荷)可以通过TCP/IP协议来瘫痪各种不同的操作系统)。所以需要编号。
    (4)标识:如果出现数据包分片,那么标识用来确定哪些数据包是需要组合的。
    (5)标志:确定该数据包是完整的还是分片中的一部分。占3位,只有前两位有用,标志字段最低位是MF(More Fragment),MF=1表示后面还有分片,MF=0表示最后一个分片。标志字段中间一位是DF(Don’t Fragment),只有DF=0才允许分片。
    (6)片偏移:偏移等于当前字节在数据部分的第几个再除以8.(下图是一个举例)

    (7)生存时间:就是TTL,time to live,每过一个路由器就减1。8位二进制。防止数据包在网络中循环。
    (8)协议:用协议号标识数据部分是什么数据。

    ICMP协议号:1;
    IGMP协议号:2;
    TCP协议号:6;
    UDP协议号:17;例如:DNS解析
    IPv6协议号:41;
    OSPF协议号:89;
    (9)首部检验和:16位,只检验数据报的首部,不检验数据部分。这里不是采用CRC检验码而是采用简单的计算方法。每经过一个路由器就会检验一次。

    (10)源地址和目的地址都是IP地址,32位,只符合IPv4。IPv6是128位。
    (11)可变部分:一般没用。

    七、路由

    1.静态路由

    需要管理员告诉路由器所有没有直连的网络下一跳给谁。
    适合于小规模网络,不能自动调整路由。

    2.动态路由

    (1)RIP协议
    周期性广播(30s)路由表,选择路径的依据是最少的跳数,最大跳数是15跳,所以一般不适合大网络。
    (2)OSPF协议
    根据带宽选择路径。

    参考文献:

    1.https://blog.csdn.net/iwanderu/article/details/103812967

    2.https://www.bilibili.com/video/av9876107?p=36

  • 相关阅读:
    客户端rsyslog配置文件详解
    logstash插件配置-codec插件说明json和multiline
    Linux流量监控工具
    单线程 Redis 为什么这么快,看看这篇就知道了
    RabbitMQ Network Partitions 处理策略
    inux 下配置网卡的别名即网卡子IP的配置 转
    Prometheus的监控解决方案(含监控kubernetes)
    Prometheus+Grafana监控Kubernetes
    python输入一维数组(输入以空格为间隔的一行)
    用gdb来理解:值传递/指针传递/引用传递
  • 原文地址:https://www.cnblogs.com/bbcfive/p/12201111.html
Copyright © 2020-2023  润新知