zoukankan      html  css  js  c++  java
  • 计算机网络-网络层2

    IP 协议-CIDR 与路由聚合

    CIDR

    无类域间路由(CIDR: Classless InterDomain Routing)

    • 消除传统的 A 类、B 类和 C 类地址界限
      • NetID+SubID→Network Prefix (Prefix)可以任意长度
    • 融合子网地址与子网掩码,方便子网划分
      • 无类地址格式:a.b.c.d/x,其中x为前缀长度

    CIDR 与路由聚合

    无类域间路由(CIDR: Classless InterDomain Routing)

    • 提高IPv4 地址空间分配效率
    • 提高路由效率
      • 将多个子网聚合为一个较大的子网
      • 构造超网(supernetting)
      • 路由聚合(route aggregation)




    层级编址使得路由信息通告更高效:

    DHCP 协议

    如何获得IP 地址?

    动态主机配置协议(DHCP)

    • 主机广播 “DHCP discover”(发现报文)
    • DHCP服务器利用 “DHCP offer” (提供报文) 进行响应
    • 主机请求IP地址: “DHCP request” (请求报文)
    • DHCP服务器分配IP地址: “DHCP ack” (确认报文)


    • DHCP协议在应用层实现

      • 请求报文封装到UDP数据报中
      • IP广播
      • 链路层广播(e.g. 以太网广播)
    • DHCP服务器构造ACK报文

      • 包括分配给客户的IP地址、子网掩码、默认网关、DNS服务器地址

    网络地址 转换 换(NAT)


    动机:

    • 只需/能从ISP申请一个IP地址
      • IPv4地址耗尽
    • 本地网络设备IP地址的变更,无需通告外界网络
    • 变更ISP时,无需修改内部网络设备IP地址
    • 内部网络设备对外界网络不可见,即不可直接寻址(安全)

    实现:

    • 替换
      • 利用(NAT IP 地址, 新端口号)替换每个外出IP数据报的( 源IP 地址, 源端口号)
    • 记录
      • 将每对(NAT IP 地址, 新端口号) 与( 源IP 地址, 源端口号)的替换信息存储到NAT转换表中
    • 替换
      • 根据NAT转换表,利用( 源IP 地址, 源 源 端口号)替换每个进入内网IP数据报的( 目的IP 地址, 目的端口号),即(NAT IP地址, 新端口号)
    • 16-bit端口号字段:
      • 可以同时支持60,000多并行连接!
    • NAT主要争议:
      • 路由器应该只处理第3层功能
      • 违背端到端通信原则
        • 应用开发者必须考虑到NAT的存在,e.g., P2P应用
      • 地址短缺问题应该由IPv6来解决

    NAT 穿透问题

    • 客户期望连接内网地址为10.0.0.1的服务器

      • 客户不能直接利用地址10.0.0.1直接访问服务器
      • 对外唯一可见的地址是NAT地址: 138.76.29.7
    • 解决方案1: 静态配置NAT,将特定端口的连接请求转发给服务器

      • e.g., (138.76.29.7, 2500) 总是转发给(10.0.0.1, 25000)
    • 解决方案2: 利用UPnP(Universal Plug and Play)互联网网关设备协议 (IGD-Internet Gateway Device )自动配置:

      • 学习到NAT公共IP地址(138.76.29.7)
      • 在NAT转换表中,增删端口映射
    • 解决方案3: 中继(如Skype)

      • NAT内部的客户与中继服务器建立连接
      • 外部客户也与中继服务器建立连接
      • 中继服务器桥接两个连接的分组

    互联网控制报文协议(ICMP)

    +互联网控制报文协议 ICMP (Internet Control MessageProtocol)支持主机或路由器:

    • 差错(或异常)报告
    • 网络探询
    • 两类ICMP 报文:
      • 差错报告报文(5种)
        • 目的不可达
        • 源抑制(Source Quench)
        • 超时/超期
        • 参数问题
        • 重定向 (Redirect)
      • 网络探询报文(2组)
        • 回声(Echo)请求与应答报文(Reply)
        • 时间戳请求与应答报文

    ICMP报文

    例外情况

    • 几种不发送 ICMP差错报告报文的特殊情况:
      • 对ICMP差错报告报文不再发送 ICMP差错报告报文
      • 除第1个IP数据报分片外,对所有后续分片均不发送ICMP差错报告报文
      • 对所有多播IP数据报均不发送 ICMP差错报告报文
      • 对具有特殊地址(如127.0.0.0 或 0.0.0.0)的IP数据报不发送ICMP 差错报告报文
      • 几种 ICMP 报文已不再使用
      • 信息请求与应答报文
      • 子网掩码请求和应答报文
      • 路由器询问和通告报文
    • 几种 ICMP 报文已不再使用
      • 信息请求与应答报文
      • 子网掩码请求和应答报文
      • 路由器询问和通告报文

    ICMP 报文式

    ICMP 差错 报告

    ICMP 的应用: 举例:Traceroute

    IPv6 简介

    • 最初动机: 32位IPv4地址空间已分配殆尽

    • 其他动机: 改进首部格式

      • 快速处理/转发数据报
      • 支持QoS
        I+ Pv6数据报格式:
      • 固定长度的40字节基本首部
      • 不允许分片
    • 优先级(priority): 标识数据报的优先级

    • 流标签(flow Label): 标识同一“流”中的数据报

    • 下一个首部(next header): 标识下一个选项首部或上层协议首部(如TCP首部)

    其他变 改变 vs IPv4

    • 校验和(checksum): 彻底移除,以减少每跳处理时间
    • 选项(options): 允许,但是从基本首部移出,定义多个选项首部,通过“下一个首部”字段指示
    • ICMPv6: 新版ICMP
      • 附加报文类型,e.g. “Packet Too Big”
      • 多播组管理功能

    IPv6 地址表示形式

    IPv6 基本地址类型

    IPv4 向IPv6过渡

    • 不可能在某个时刻所有路由器同时被更新为IPv6
      • 不会有 “标志性的日期”
      • IPv4和IPv6路由器共存的网络如何运行?
    • 隧道(tunneling): IPv6数据报作为IPv4数据报的载荷进行封装,穿越IPv4网络

    隧道(tunneling

  • 相关阅读:
    Protocol Buffer使用
    uImage、zImage、bzImage、vlinzx区别
    nginx学习之一
    Android屏幕底部弹出DialogFragment(3)
    C++11 | 正则表达式(4)
    Android绘图之渐隐动画
    Android动态Java代码调整window大小
    Spring Boot交流平台
    Java日志实战及解析
    Android WindowManager悬浮窗:不需要申请权限实现悬浮
  • 原文地址:https://www.cnblogs.com/ygjzs/p/12626429.html
Copyright © 2011-2022 走看看