Linux------网络层与链路层

网络层

  • 功能: 负责地址管理和路由选择(为一条数据在复杂网络中选择一条合适的路径)

IP协议

  • 基本概念

    • 主机: 配有IP地址, 但是不进行路由控制的设备
    • 路由器: 既配有IP地址, 又能进行路由控制
    • 节点: 主机和路由器的统称
  • 协议头格式
    -Linux------网络层与链路层_第1张图片

    • 4位版本:IPV4/IPV6
    • 4为首部长度: 标记IP报头有多长 20~60
    • 8位服务类型(TOS)—3位弃用 , 1位保留, 4位服务类型(tos):如最小延时,最大吞吐量,最小成本,最高可用性
    • 16位总长度—IP报文长度,包含IP报头--------进行数据分片—udp数据段最大长度 64K-20 -8
      • 若udp数据报长度<64k-20-8 但是大于MTU大小,则需在网络层进行数据分片
    • 16位分片标识符 (id)----udp数据报有可能在网络层进行分片,标识当前分片所在的原始数据报
    • 3位标志----1位保留, 1位表示是否禁止分片-1位表示是否还有更多分片 如果有置为0 , 如果没有置位1
    • 13位偏移量—标记片段相较以前原始片段偏移位置, 以八个字节为单位,分偏大小都是8的整数倍
    • 8位生存时间(TTL):当前数据所能经过的路由器跳数
    • 8位的上层协议: 数据分用时,决定数据使用传输层哪个协议解析
    • 16位头部校验和:校验数据一致性
    • 32位源/目的IP地址:标识数据从哪个主机来到哪个主机去(哪里来到哪里去)
    • 40选项(如若有)
  • 地址管理
    Linux------网络层与链路层_第2张图片

    1. IP地址的组成: 网络号+主机号
      • 网络号:每一个路由器想自己子网中的主机分配地址的时候,这些地址中都应该包含这个网络标记,这个标记用于区分每一个网络. 每一个网络的网络号只要不一样,则分配的IP地址则不会冲突
      • 主机号: 每一主机的IP地址不但要具备网络的标识(网络号) ,还需要能够在局域网中唯一标识, 这个唯一标识称之为主机号
  • 网段划分
    Linux------网络层与链路层_第3张图片

    1. 早期划分方式将IP地址划分为5类

      • A类 :高8位中高一位: 0, 低7位是网络号;剩下是主机号: 0.0.0.0~127.255.255.255
      • B类:高16位中高两位: 10 ;低14位网络号; 剩下主机号 128.0.0.0 ~ 191.255.255.255
      • C类 :高24位中高三位: 110 低21位网络号,剩下主机号 192.0.0.0~223.255.255
      • D类: 224.0.0.0~239.255.255.255
      • E类240.0.0.0~247.255.255.255
    2. 新的网络划分方式: CIDR—对网络划分借助了一个字段:子网掩码

      1. 引入一个子网掩码来区分网络号和主机号
        • 子网掩码:uint32_t 类型数据,数据又连续的二进制1组成 255.255.255.0
      2. 作用:
        • 子网掩码取反可以得到局域网中的主机号范围
        • 子网掩码与&IP地址可以得到网络号 192.168.122.132&255.255.255.0 =192.168.122.0
      3. 有网络192.168.122.132/24;现在公司有四个部门需要将当前网络平均划分为四个子网,如何划分,以及划分后各子网的网络号及子网掩码及主机IP地址范围
        • 思路:192–c类地址: c类网络只有256个主机号,平均划分四个字网,每个子网64个主机号 , 每个子网的子网掩码:255.255.255.11000000(192) 256-64 63取反
      4. 特殊IP地址
        • 主机号全为0 —网络号
        • 主机号全为1----udp局域网广播地址
        • 127.0.0.1----虚拟回环网卡-用于本机网络测试 0.0.0.0 :本机任意地址
        • 并不是所有网络号都能用于建立局域网-RFC1918中规定只有一下几种网络号能用于组建私网: A类10...* B类172.16..~172.31.. C类 192.168..
        • 组建局域网时相邻的网络不能使用相同的网络号, 会造成地址分配冲突
    3. 路由选择:

      • 每个路由器上都有一张路由表,记录当前路由器所相连的网络: 网络号, 子网掩码. 网卡名称
      • 当路由器接收到一个数据,则取出目的IP地址, 通过路由表判断当前数据的目的主机数据与哪一个相连的网络(使用目的地址与子网掩码进行相与, 然后与目的网络的网络号进行判断
      • 若属于某个链接的网络,则使用对应网卡,将数据发送出去
      • 若路由表匹配失败,则将数据发送到下一层网络设备(对于局域网来说就是当前路由器的网关设备)
      • 路由表的生成算法
        Linux------网络层与链路层_第4张图片
        Linux------网络层与链路层_第5张图片

链路层

  • 用于两个设备(同意中数据链路节点)之间进行传递
  • 认识以太网
    Linux------网络层与链路层_第6张图片
    • mac地址: 相邻设备定位的地址----物理网卡的硬件地址
      Linux------网络层与链路层_第7张图片
      1. 无符号6个字节的整数 uint8_t mac[6] -----网卡出场时设定, ----早期不能更改\
    • Ethernet协议实现: 源mac地址,目的mac地址, 上层协议类型,数据,帧尾(检验和)
    • arp协议:通过IP地址获取mac地址
      • 通过广播arp请求, 以IP地址获取指定相邻设备的mac地址
        1. ARP局域网欺骗攻击
  • MTU(最大传输单元;限制链路层数据帧中所能传输的最大数据大小
    • 对TCP协议的影响
      1. tcp在传输层进行数据传输时会自动进行数据分段,分段大小称为MSS(最大数据段大小) , 通信双防在三次握手时计算自身MSS, 计算方法MTU - IP报头 - TCP报头;传递给对方,双方取较小的一方为最大数据端的传输大小
      2. 因为TCP在传输层会进行自动数据分段, 因此不会在网络层进行数据分段
    • 对UDP协议的影响
      1. UDP数据报在网络层的时候若数据包大小>MTU 且< 64k-28 ;则会在网络层进行数据分片
        • UDP数据分片传输过程中任意一个分片出现问题, 整个UDP数据包都会被丢弃; 意味着UDP数据分片越多则越容易出现丢包;
        • 因此用户在应用层进行udp数据分包时 , 需注意mss的计算;
  • 其他典型协议及技术: DNS/ICMP/NAT(网络地址转换)
    • DNS:域名系统
      • 域名:一串由点分割的名字所组成的互联网上的一个主机/机组的名称
        • 作用:便于查找服务器,便于记忆服务器 ;
        • 最终通过域名来访问一个服务器时,首先需要将容易记忆的域名转换为服务器的IP地址
        • 发展背景: 分布式存储; 根据域名服务器分布在世界各地 ;分摊访问压力;进行容灾处理;
          • 世界只有13组域名服务器
          • 域名服务器是有层级划分的
            • 根域名服务器->顶级域名服务器->二级域名服务器
            • 顶级域名: .com 商业域名/.org公益组织/.gov政府/.edu教育
            • 二级域名: .baidu.com/.qq.com/
            • 三级域名: .baike.baidu.com
      • 域名的解析流程
        • 通过域名访问服务器最终转换为通过服务器地址访问服务器;
        • 域名的解析就是:将域名进行解析转换得到服务器的IP地址
          • 解析流程(从大到小—查看浏览器缓存->本机的host文件->3.本地域名服务器->根域名服务器->顶级域名服务器…迭代至三级域名)
          • 解析过程中从本地域名服务器往下有两种解析过程:迭代/递归
          • 问题:当浏览器中输入url回车后会发生了什么
            • 域名解析流程进行域名解析, 得到服务器IP地址
            • 根据HTTP协议格式, 根据url组织HTTP协议格式的请求数据
            • 基于socket流程搭建一个tcp客户端,向得到的服务器地址发送http请求数据
    • ICMP协议: 网络层协议:主要实现网络状况探测功能—ping工具就是通过ICMP实现的
      • telnet:端口号23 ssh: 22 ping :不用端口,使用ICMP协议实现,因此没有使用端口
    • NAT技术: 网络地址转换服务 NAPT: 在NAP的基础上建立通信映射表
      • NAT服务通常部署在网关设备上,对流经网关设备的数据替换IP包头的源地址信息,实现数据的转发
        • 网关设备:通过设备转发, 实现多个主机共用同一个公网IP地址上网
    • 代理服务:实现技术
      • 与NAT的区别:
        • .代理服务工作在应用层,可以部署在任意设备上,其他主机请求服务器时 ,首先请求代理服务器
        • NAT服务工作在网络层; 对IP报文头地址替换;通常部署在网关设备上

你可能感兴趣的:(Linux------网络层与链路层)