0%

深入理解计算机网络

Website

计算机网络学习

本文章记录着小劳的计算机网络学习, 从2020.11.22开始学习, 目标能够掌握概念, 对网络编程有一个偏底层的理解. 学习自韩立刚老师的b站课程.

传送门 : b站 韩立刚 计算机网络

custom

计算机网络 第一章

计算机网络第一章的主要内容是 : 概述

课程安排

第一章 : 概述

第二章 : 物理层

第三章 : 数据链路层

第四章 : 网络层

第五章 : 运输层

第六章 : 应用层

第七章 : 网络安全

第八章 : 因特网上的音频,视频服务

第九章 : 无线网络

第十章 : 下一代因特网

计算机网络在信息时代的作用

21世纪的特征 : 数字化, 网络化, 信息化

网络化 : 三网(电信网络, 计算机网络, 有线电视网络)

计算机网络 : 因特网, 其他网络(政府网络, 军用网络)

计算机网络的重要功能

连通性 : 彼此联通, 交换信息

共享 : 信息共享, 软硬件共享(软 : ssh ; 硬 : 打印机等设备)

因特网概述

终端到网络(路由器)的距离大约是100米, 路由器与路由器的连接扩展了网络的距离和接入网设备的数量.

概念

网络 : 许多计算机连接在一起

互联网 : 许多网络连接在一起 (internet)

因特网 : 全球最大的一个互联网 (Internet, 使用 TCP/IP 协议)

因特网发展的三个阶段

1st : ARPANET向互联网发展 (上世纪60年代 - 80 年代中期)

  • 1969年 分组交换网
  • 1975年 互联网
  • 1983年 TCP/IP (因特网起源)

2nd : 三级结构的因特网 (上世纪80年代中期 - 90 年代初期)

  • 分层次, 比如 : 学校网 - 区域网 - 主干网(带宽 : 45 M)

3rd : 多层次ISP结构的因特网

  • ISP : Internet Service Provider 因特网服务提供商
  • 第一层ISP - 第二层ISP - 第三层ISP(提供接入) - 校园网等
  • 如果服务器需要提供的客户范围较小, 应该接入越低层的ISP

因特网的标准化工作

因特网协会 : ISOC

因特网体系结构委员会 IAB :

  • 因特网研究部 IRTF :
    • 因特网研究指导小组 IRSG
  • 因特网工程部 IETF :
    • 因特网工程指导小组 IESG

因特网的组成

因特网的核心部分

因特网的边缘部分

主机之间的通信方式 :

  • 客户端服务器方式 (Client / Server 方式)
  • 对等方式 (Peer-to-Peer 方式)

数据交换方式 :

  • 电路交换 (Circuit Switching)
    • 交换机同时只能提供网络中的两个终端通信
    • 过程 : 申请占用通信资源, 一直占用通信资源, 释放通信资源
    • 适用于 : 实时性通信, 核心路由器之间可以使用电路交换
  • 报文交换 (Message Switching)
    • 报文一般比分组长的多
    • 报文交换的时延较长
  • 分组交换 (Packet Switching)
    • 完整的一个数据包称为报文, 需要分为多个组进行发送
    • 每一个分组带上一个首部
    • 分组的优势在于, 通信时路径可以复用
    • 接收端去电首部后, 拼接分组成报文
    • 路由器有存储转发功能
    • 优点 : 高效, 灵活, 迅速, 可靠
    • 问题 : 时延, 开销

计算机在我国的发展

中国在1994年4月20日正式接入互联网.

计算机网络的类别

计算机网络最简单的定义 : 一些互相连接的, 自治的计算机的集合

作用范围(使用的技术) :

广域网 : WAN (花钱买服务, 花钱买带宽

城域网 : MAN

局域网 : LAN (自己购买设备, 带宽固定, 自己维护, 距离100米之内)

使用者 : 公用网, 专用网

拓扑结构 : 总线型, 环型, 星型, 树型, 网状

交换方式 : 电路交换, 报文交换, 分组交换

工作方式 : 资源子网, 通信子网, 接入网

计算机网络的性能

以下5点是性能指标 :

速率

速率是指连接在计算机网络上的主机在数字信道上传送数据位数的速率, 也称为 data rate 或者 bit rate. 单位是 b/s kb/s Mb/s Gb/s

一般来说, 运营商告诉的100M是指100Mbps, 转换成下行速率是 100 / 8 = 12.5 Mbit / s

带宽

带宽是指数据通信领域中, 数字信道所能传送的最高速率

吞吐量

吞吐量是指在单位时间内通过某个网络的数据量

时延

时延 = 发送时延 + 传播时延 + 处理时延 + 排队时延

发送时延 = 数据块长度(比特) / 信道带宽(比特/秒)

传播时延 = 信道长度(米) / 信号在信道上的传播速率(米/秒)

处理时延 = 网络节点存储转发处理时间

排队时延 = 网络节点缓存队列排队时间

利用率

信道利用率 = 有数据通过时间 / (有 + 无) 数据通过时间

网络利用率 = 信道利用率加权平均值

D = D0 / (1 - U) [D0 : 网络空闲时延 D : 网络当前时延 U : 信道利用率]

以下7点是非性能指标 : 费用, 质量, 标准化, 可靠性, 可扩展性, 可升级性, 管理与维护

计算机网络的体系机构

概念

ISO : 国际标准化组织

OSI/RM : 互联网法律上的国际标准

TCP/IP Suite : 因特网事实上的国际标准

Network Protocols : 数据交换遵守的规则, 标准或约定

网络体系结构 : 计算机网络各层及协议的集合

OSI 参考模型

OSI 是七层模型 :

​ 应用层 - 能够产生网络流量, 能够和用户交互的应用程序

​ 表示层 - 加密, 压缩, 编解码 (开发人员考虑)

​ 会话层 - 服务和客户端建立的会话 查木马 netstat -nb | more

​ 传输层 - 可靠传输建立会话, 不可靠传输不建立会话(QQ发消息, DNS解析), 流量控制

​ 网络层 - IP地址编址 选择最佳路径 动态路由

​ 链路层 - 数据如何封装 为数据包添加物理层地址(MAC地址)

​ 物理层 - 电压 接口标准

分层的作用 : 1.标准化 ; 2.降低耦合度

开发者考虑应用层到会话层, 网络工程师考虑传输层到链路层

网络排错 : 从底层往上检查(比如 : 先看网线, IP, 浏览器检查)

网络安全和OSI参考模型 :

​ 物理层安全 - 给别人提供了接入网络的机会

​ 链路层安全 - ADSL密码, 无线网卡密码

​ 网络层安全 - 网关设置内网中某些网段可以访问外网, 某一些不可以

​ 应用层安全 - SQL注入漏洞, 上传漏洞(文件类型检查)

TCP/IP模型

TCP/IP 是五层模型 :

​ 应用层

​ 传输层

​ 网络层

​ 链路层

​ 物理层

开放系统信息交换涉及的概念 :

实体 : 交换信息的硬件和软件的进程

协议 : 控制两个对等实体通信的规则

服务 : 下层向上层提供服务, 上层需要使用下层提供的服务来实现本层的功能

服务访问点 : 相邻两层实体间交换信息的地方

TCP/IP 模型的数据单元 :

​ 应用层 - 传输数据单元 PDU

​ 运输层 - 运输层报文

​ 网络层 - IP数据报(IP分组)

​ 数据链路层 - 数据帧

​ 物理层 - bits

计算机网络 第二章

由于是物理层, 暂时先跳过学习

计算机网络 第三章

第三章的主要内容是 : 数据链路层

数据链路层基本概念及基本问题

基本概念

数据发送模型 :

  • 主机1 - 电话网 - 路由器1 - 局域网 - 路由器2 - 广域网 - 路由器3 - 局域网 - 主机2.
  • 在路由器上数据上升到网络层, 再进行转发.

数据链路层的信道类型 :

  • 点对点信道
  • 广播信道

链路与数据链路 :

  • 链路 (link) 是一条点对点的物理线路段
  • 数据链路 (data link) 除了物理线路外, 还必须有通信协议来控制这些数据的传输

帧 :

  • 链路层传输的数据单元
  • 获得网络层的数据报增加帧头和帧尾, 传递给物理层

三个基本问题

  1. 封装成帧(一定要知道哪里开始哪里结束)

    封装成帧就是在一段数据的前后分别添加首部和尾部, 然后就构成一个帧, 确定帧的边界.

    首部和尾部的一个重要作用就是进行帧定界.

    帧的数据部分长度最大为1500字节.

    帧首部和帧尾部定界的作用 : 确保数据的完整性

  2. 透明传输(数据中存在开始和结束的标识, 进行转变)

    在帧数据部分出现了SOH帧首部或EOT帧尾部内容, 会出现提前结束.

    解决方法 :

    • 发送端的数据链路层在数据中出现控制字符”SOH”或者”EOT”的前面插入转义字符”ESC”(十六进制编码为1B).
    • 字节填充或字符填充——接收端的数据链路层在将数据送往网络层之前删除插入的转义字符.
    • 如果转义字符也出现在数据中, 那么应该在转义字符前插入一个转义字符. 当接收端收到连续的两个转义字符时, 就删除前面一个.
  3. 差错控制(检查帧的正确性)

    传输过程中可能会产生比特差错 : 1 可能会变成 0 , 0 可能会变成 1.

    在一段时间内, 传输错误的比特占所传输比特总数的比率称为误码率 BER (bit error rate).

    误码率与信噪比有很大的关系.

    为了保证数据传输的可靠性, 在计算机网络传输数据时, 必须采用各种差错检测措施.

    循环冗余检验 CRC :

    • 在数据链路层传送的帧中, 广泛使用了 CRC 的技术.
    • 在发送端, 先把数据划分为组. 假定每组为 k 个比特
    • 假设待传送的一组数据 M = 101001 (k = 6), 我们在 M 的后面再添加供差错检测用的 n 位冗余码一起发送.
    • 101001 - 000 (增加3位0, 要求除数是4位) / 1101 = 001 (FCS) , 把001加在101001后面, 组成 101001001 , 接收方除以相同的四位数 1101, 如果最终结果是 0 , 说明没有出错. 这个四位数 1101 或者更多位的数, 是链路层保证双方相同的.
    • 链路层的差错控制, 是无差错接收, 只接受没有比特差错的情况, 不需要重传.(重传是传输层的要求)

    帧检验序列 FCS :

    • 在数据后面添加上的冗余码称为帧检验序列 FCS.
    • 循环冗余检验 CRC 和帧检验序列 FCS 并不等同. (CRC 不是获得 FCS 的唯一途径)

两种情况下的数据链路层

使用点对点信道的数据链路层

PPP协议( Pointer-to-Pointer Protocol)

用户使用拨号电话线接入因特网的时候, 一般都是使用PPP协议. 具有拨号, 身份验证, 可以记账的特性.

PPP协议应该满足的要求 : 简单, 封装成帧, 透明性, 多层网络层协议, 多种类型链路, 差错检测, 检测连接状态, 最大传送单元, 网络层地址协商, 数据压缩协商.

PPP协议不需要满足的要求 : 纠错, 流量控制, 序号, 多点线路, 半双工或单工链路.

PPP协议的组成 :

  • 数据链路层协议可以用于异步串行或同步串行介质.
  • 它使用LCP(链路控制协议)建立并维护数据链路连接.
  • 网络控制协议(NCP)允许在点到点连接上使用多种网络层协议.

|3. 上层协议 : IP IPX AppleTalk |

|2. 网络控制协议 NCP 针对每一个网络层协议 |

|2. 链路控制协议 LCP |

|2. 高级数据链路控制协议 HDLC |

|1. 物理层 |

PPP协议帧格式 :

首部 : | F{1} | A{1} | C{1} | 协议{2} | . 其中, A,C = FF,03 是固定的. 一般 首部和尾部的 : F(=7E)

  • 协议{2} :
    • 0x0021 - PPP帧的信息字段就是IP数据报
    • 0xC021 - 信息字段是PPP链路控制数据
    • 0x8021 - 网络控制数据
    • 0xC023 - 安全性认证PAP
    • 0xC025 - LQR
    • 0xC223 - 安全性认证CHAP

数据部分 : IP数据报不超过1500字节.

尾部 : | FCS{2} | F{1} | . PPP协议的头尾的 F(=7E) 字段相同.

使用PPP协议以字节为单位还是以比特为单位发送数据时, 填充方案不相同, 具体如下 :

字节填充 :

  • 信息字段出现标志字段的值的问题 : 信息字段的 0x7E 被拆分称为0x7D 0x5E, 信息字段的 0x7D 被拆分成0x7D 0x5D, ASCII 控制符(数值小于0x20)前加一个 0x7D 字节.(因此实际传输的信息可能是达不到1500字节)

零比特填充方法 :

  • 避免出现和 0x7E 一样的比特序列, 0111,1110, 因此连续5个1补一个0
  • PPP协议用在SONET/SDH链路时, 是使用同步传输一连串的比特连续传送). 这时, PPP协议采用零比特填充方法来实现透明传输.
  • 在发送端, 只要连续发现5个连续的1, 就立即填充一个0. 接收端扫描时, 5个连续的1后删除1个0.(可以用于避免0x7E的出现)

PPP协议的工作状态 :

  • 当用户拨号接入ISP时, 路由器的调制解调器对拨号做出确认, 并建立一条物理连接.
  • PC机向路由器发送一系列的LCP分组(封装成多个PPP帧).
  • 这些分组及其响应选择一些PPP参数, 和进行网络层配置, NCP给新接入的PC机分配一个临时的IP地址, 使PC机称为因特网上的一个主机.
  • 通信完毕时, NCP释放网络层连接, 收回原来分配出去的IP地址. 接着, LCP释放数据链路层连接. 最后释放的是物理层连接.

使用广播信道的数据链路层

补充知识 : 局域网的特定与优点

局域网最主要的特点是 : 网络为一个单位所拥有, 且地理范围和结点数目均有限.

局域网具有如下的一些主要优点 :

  • 具有广播功能, 从一个站点可以很方便地访问全网. 局域网上的主机可以共享连接在局域网上的各种硬件和软件资源.
  • 便于系统的扩展和逐渐地演变, 各设备的位置可灵活调整和改变.
  • 提高了系统的可靠性, 可用性和生存性.

共享通信媒体

静态划分信道 : 频分复用, 时分复用, 波分复用, 码分复用.

动态媒体接入控制(多点接入) : 随机接入(被以太网采用), 受控接入(已不被采用)

认识以太网

最初的以太网是将许多计算机都连接在一根总线上. 当初认为这样的链接方式既简单又可靠, 因为总线上没有有源器件. 问题是, 同时只有一个设备发送数据, 而且所有的设备都可以接收到数据包, 不够安全.

以太网协议 :

以太网使用的是CSMA/CD协议 (带冲突检测的多点接入技术)

多点接入 : 表示许多计算机以多点接入的方式连接在一根总线上

载波监听 : 是指每一个站在发送数据之前先要检测一下总线上是否有其他计算机在发送数据, 如果有, 则暂时不要发送数据, 以免碰撞.

(P35 以太网的冲突检测暂时跳过)

以太局域网

以太网的两个标准 :

  1. DIX Ethernet V2 是世界上第一个局域网产品(以太网)的规约.
  2. IEEE 的 802.3 标准.

以太网与数据链路层的两个子层 :

为了使数据链路层能更好地适应多种局域网标准, 802 委员会就将局域网的数据链路层拆成两个子层 :

  1. 逻辑链路控制 LLC 子层
  2. 媒体接入控制 MAC 子层

以太网提供的服务 :

以太网提供的服务是不可靠的交付, 即尽最大努力的交付.

当接收站收到有差错的数据帧时就丢弃此帧, 其他什么都不做. 差错的纠正由高层来决定.

如果高层发现丢弃一些数据而进行重传, 但以太网并不知道这是一个重传的帧, 而是当做一个新的数据帧来发送.

(集线器部分暂时跳过)

以太网的信道利用率 :

以太网的信道被占用的情况 :

争用期长度为 2tao , 即端到端传播时延的两倍. 检测到碰撞后不发送干扰信号.

帧长为 L (bit) , 数据发送速率为 C (b/s) , 因而帧的发送时间为 L/C = T0 (s)

信道利用率的最大值 : 各站发送数据都不发生碰撞的话, Smax = T0 / (T0 + tao)

MAC层 :

在局域网中, 硬件地址又称为物理地址, 或 MAC 地址.

MAC地址一共是48位二进制位, 其中高24位为厂家地址段, 低24位由厂家自行指派.

适配器检查MAC地址 :

适配器从网络上每收到一个MAC帧就首先用硬件检查MAC帧中的MAC地址 :

  • 如果是发送往本站的帧则手下, 然后再进行其他的处理.
  • 否则就将此帧丢弃, 不再进行其他的处理.

“发往本站的帧” 包括以下三种类型的帧 :

  1. 单播帧 (一对一)
  2. 广播帧 (一对全体) (MAC地址全1)
  3. 多播帧 (一对多)

以太网帧格式 :

MAC帧 : | 目的地址{6} | 源地址{6} | 类型{2} | IP数据报{46 - 1500} | FCS{4} | 最短是64字节

物理层 : | 前同步码{7} | 帧开始定界符{1} | MAC帧 |

无效的MAC帧 :

  • 帧的长度不是整数个字节;
  • 用收到的帧检验序列 FCS 查出有差错;
  • 数据字段的长度不在 46 ~ 1500 字节之间;
  • 有效的MAC帧长度为 64 ~ 1518 字节之间;
  • 对于检查出的无效的MAC帧就简单地丢弃. 以太网不负责重传丢弃的帧.

帧间最小间隔 :

帧间最小间隔为 9.6 us , 相当于 96 bit 的发送时间.

一个站在检测到总线开始空闲时, 还要等待 9.6 us 才能再次发送数据.

这样做是为了使刚刚收到的数据帧的站的接收缓存来得及清理, 做好接收下一帧的准备.

扩展以太网

集线器扩展 : 主机使用光纤和一对光纤调制解调器连接到集线器. 使用集线器连接最好低于30台机器, 冲突域变少, 冲突增大.

网桥扩展 : 在一个较小的冲突域里收发数据, 网桥不会转发到其他冲突域中, 可以减少冲突. 网桥有自学习算法并且建立转发表.

透明网桥使用了生成树算法 : 为了避免产生转发的帧在网络中不断地兜圈子.

交换机(多接口的高速网桥)扩展 : 安全, 效率高, 10M的交换机指的是每一个端口都是10M, 每一个端口都是全双工

交换机学习到的转发表格式 : | Vlan | Mac Address | Type | Ports |

虚拟局域网

LAN和VLAN :

交换机的使用使得VLAN的创建成为可能.

虚拟局域网 VLAN 是由一些局域网网段构成的与物理位置无关的逻辑组.

  • 这些网段具有某些共同的需求.
  • 每一个 VLAN 的帧都有一个明确的标识符, 指明发送这个帧的工作站是属于哪一个 VLAN.

虚拟局域网其实只是局域网给用户提供的一种服务, 而不是一种新型局域网.

一个 VLAN = 一个广播域 = 逻辑网段(子网)

ISL 标记(思科方式) :

ISL 干道使 VLAN 能够跨骨干

  • 通过特定集成电路来实现
  • 不需要再客户计算机上采取配置, 客户机不能够看到ISL头
  • 在交换机之间, 路由器和交换机, 交换机和支持ISL网卡的服务器之间配置

ISL 封装 : | DA | Type | User | SA | LEN | AAAA03 | HSA | VLAN | BPDU | INDEX | RES | 以太网帧 | CRC |

虚拟局域网帧格式 :

虚拟局域网协议允许在以太网的帧格式中插入一个4字节的标识符, 称为 VLAN 标记 (tag) , 用来指明发送该帧的工作站属于哪一个虚拟局域网.

格式 : | 目的地址{6} | 源地址{6} | VLAN标记{4} | 类型{2} | 数据{46 ~ 1500} | FCS{4} |

高速以太网

速率达到或超过 100 Mb/s 的以太网称为高速以太网.

100BASE-T 以太网 : 可以全双工方式下工作而无冲突发生. 因此, 不使用 CSMA/CD 协议. MAC帧格式仍然是 802.3 标准规定的. 帧间时间间隔从 9.6 us 变成了 0.96 us.

吉比特以太网 : 允许在1 Gb/s 下全双工和半双工两种方式工作. 使用 802.3 协议规定的帧格式. 在半双工方式下使用 CSMA/CD 协议, 全双工不需要. 与 10BASE-T 和 100BASE-T 技术向后兼容.

10吉比特以太网 : 以太网的工作范围已经从局域网(校园网, 企业网)扩大到城域网和广域网, 从而实现了端到端的以太网传输. 这种工作方式的好处是 : 成熟的技术, 互操作性好, 在广域网中使用以太网时价格便宜, 统一的帧格式简化了操作和管理.

Cisco建网3层模型

普通的交换机 : 连接计算机, 需要接口数量多

汇聚层交换机 : 连接普通的交换机, 一般单位是整栋楼

核心层交换机 : 连接汇聚层交换机, 一般单位是一个一个区域

交换机安全

交换机可以设置某一个端口只能和指定的MAC地址的主机交换数据, 保证链路层安全. 也可以设置某个端口只能连接一台计算机. 否则, 关闭端口.

计算机网络 第四章

第四章的主要内容是 : 网络层

网络层提供的两种服务

网络层关注的是如何将分组从源端沿着网络路径送达目的端.

两种服务 :

  1. 虚电路服务
  2. 数据报服务

虚电路(专线,固定. 不需要写IP地址)

虚电路表示这是一条逻辑上的连接, 分组都沿着这条逻辑连接按照存储转发方式传送, 而并不是真正建立了一条物理连接. 电路交换的电话通信是先建立一条真正的连接. 因此分组交换的虚连接和电路交换的连接只是类似, 并不完全一样.

数据报(灵活,低耦合. 需要写IP地址)

网络层向上只提供简单灵活的, 无连接的, 尽最大努力交付的数据报服务. 网络在发送分组时不需要先建立连接. 每一个分组(IP数据报)独立发送, 与其前后的分组无关. 网络层不提供服务质量的承诺. 即所传送的分组可能出错, 丢失, 重复和失序, 当然也不保证分组传送的时限.

尽最大努力交付的好处 :

  • 由于传输网络不提供端到端的可靠传输服务, 这就使网络中的路由器可以做的比较简单, 而且价格低廉.
  • 如果主机中的进程通信需要是可靠的, 那么就由网络的主机中的运输层负责(包括差错处理, 流量控制等).
  • 采用这种设计思路的好处是 : 网络的造价大大降低, 运行方式灵活, 能够适应多种应用.
  • 因特网能够发展到今日的规模, 充分证明了当初采用这种设计思路的正确性.

虚电路服务和数据报服务的比较

虚电路

思路 : 可靠通信应当由网络来保证

连接的建立 : 必须有

终点地址 : 仅在连接建立阶段使用, 每个分组使用短的虚电路号

分组的转发 : 属于同一条虚电路的分组均按照同一路由进行转发

当结点出故障时 : 所有通过出故障的结点的虚电路均不能工作

分组的顺序 : 总是按发送顺序到达终点

端到端的差错处理和流量控制 : 可以由网络负责, 也可以由用户主机负责

数据报

思路 : 可靠通信应当由用户主机来保证

连接的建立 : 不需要

终点地址 : 每个分组都有终点的完整地址

分组的转发 : 每个分组独立选择路由进行转发

当结点出故障时 : 由故障的结点可能会丢失分组, 一些路由可能会发生变化

分组的顺序 : 到达终点时不一定按发送顺序

端到端的差错处理和流量控制 : 由用户主机负责

网际协议 IP

虚拟互联网

网络互连的设备

中间设备又称为中间系统或者中继系统.

  • 物理层中继系统 : 转发器 或者 集线器
  • 数据链路层中继系统 : 网桥 或者 交换机
  • 网络层中继系统 : 路由器
  • 网络层以上的中继系统 : 网关

当中继系统是集线器或网桥时, 一般不称为网络互连, 因为这仅仅是把一个网络扩大了, 而这仍然是一个网络.

网关由于比较复杂, 目前使用的较少.

互联网都是指用路由器进行互连的网络.

由于历史原因, 许多有关 TCP/IP 的文献将网络层使用的路由器称为网关.

网络互联的问题

互联在一起的网络要进行通信, 会遇到许多问题需要解决, 如 : 不同的寻址方案, 不同的最大分组长度, 不同的网络接入机制, 不同的超时控制, 不同的差错恢复方法, 不同的状态报告方法, 不同的路由选择技术, 不同的用户接入控制, 不同的服务, 不同的管理与控制方式.

IP协议简介

网际协议IP 是 TCP/IP 体系中两个最主要的协议之一. 与 IP协议配合使用的还有四个协议 :

  1. 地址解析协议 ARP (Address Resolution Protocol)
  2. 逆地址解析协议 RARP (Reserve Address Resolution Protocol)
  3. 网际控制报文协议 ICMP (Internet Control Message Protocol)
  4. 网际组管理协议 IGMP (Internet Group Management Protocol)

IP地址

IP层次结构

层次化IP地址 : 层次化IP地址将32位的IP地址分为网络ID和主机ID

网络地址

网络地址唯一指定了每一个网络. 同一网络中的每台计算机都共享相同的网络地址, 并用它作为自己IP地址的一部分.

A类地址 : 8位网络号 (net-id : 0…….)

  • 最大网络数 126 第一个可用的网络号 1 最后一个可用的网络号 127 每个网络的最大主机数 16777214

B类地址 : 16位网络号(net-id : 10…… ……..)

  • 最大网络数 16383 第一个可用的网络号 128.1 最后一个可用的网络号 191.255 每个网络的最大主机数 65534

C类地址 : 24位网络号(net-id : 110….. …….. ………)

  • 最大网络数 2097151 第一个可用的网络号 192.0.1 最后一个可用的网络号 223.255.255 每个网络的最大主机数 254

D类地址 : 组播 (1110 28.)

E类地址 : 研究 (1111 28.)

特殊的几个地址 : ****

127.0.0.1 本地回环地址

169.254.0.0 无法自动分配地址时,分配这个网段

RFC1918指明的专用地址(private address):

  • 10.0.0.0 - 10.255.255.255
  • 172.16.0.0 - 172.31.255.255
  • 192.168.0.0 - 192.168.255.255

子网掩码

子网掩码的作用是确定IP地址的网络号的位数.

划分子网和构造超网

划分子网

划分子网可以让一个网络号继续拆分出多个子网, 使得使用更加地充分.

比如, 一个C类地址的网络号是24位, 可以容纳254台主机, 可以进一步使用第25位主机号用于子网络号, 拆分126台和126台主机的两个子网.同时, 子网掩码也要往后移动一位.

划分四个子网时, 取2位作为子网络号, 因此可以用的主机号范围是 :

A: (0网络) 1 - 62 (63广播)

B: 65 - 126

C: 129 - 190

D: 192 - 254

网关是主机号为1的IP地址, 是路由器的出口IP地址.

广播是主机号为最大的IP地址.

最小划分到, 网络号为24位,子网络号为6位,主机号为2位: 00网络,01网关,02主机,03广播.

构造超网

将网络号左移若干位, 可以构造超网.

IP地址与硬件地址

使用IP地址通信, 而不是直接使用MAC地址通信, 是因为, IP地址可以确定源地址和目标地址, 而MAC地址在每一次转发的时候都需要改变. 除非没有网络层设备, 所有主机全部使用超大的交换机相连, 每一次广播都可以得知目标MAC地址的主机进行转发.

ARP协议

IP地址 → ARP → MAC地址

ARP欺骗: 在同一个网段里的计算机在需要知道一个IP地址的MAC地址时,会进行广播, 这个时候本应只有网关会回复你, 但是有其他主机告诉你MAC地址的话, 你就会受到ARP欺骗, 他把他自己作为”网关”, 可以控制每一个主机的带宽.

RARP协议

MAC地址 → RARP → IP地址(地址请求的过程)

IP数据报格式

首部{20} | 数据部分

首部{20} :

| 版本{4b} | 首部长度{4b} | 区分服务{1} | 总长度{2} |

| 标识{2} | 标志{3b} | 片偏移{29b} |

| 生存时间{1} | 协议{1} | 首部检验和{2} |

| 源地址{4} |

| 目的地址{4} |

可变部分 : | 可选字段 | 填充至4字节的整数倍 |

| 数据部分 |

版本 : 4位,指定IP协议版本(IPv4, IPv6)

首部长度 : 4位,除数据部分以外的首部有多长(4位能够表示0-15,一个数代表4个字节,因此最大值为60字节)

区分服务 : 8位,只有使用区分服务,该字段才起作用.

总长度 : 16位,首部和数据之和的长度.(因此最大值为65535字节,不能超过最大传送单元MTU)

标识 : 16位,计数器,用来产生数据报的标识,不是序号,每产生一个数据包+1

标志 : 3位,目前只有前两位有意义,标志字段的最低位是MF.MF=1标识后面还有分片,MF=0标识后面没有分片.标识字段中间位是DF,只有DF=0才允许分片.

片偏移 : 13位,较长的分组在分片后,某片在原分组中的相对位置,片偏移以8个字节为偏移单位.比如1400/8 = 175

生存时间 : 8位,记为TTL,经过路由器的C++最大跳数

协议 : 8位,标记数据报携带的数据使用的协议

首部校验和 : 16位,用于检错,反码算术运算求和

可变部分 : 支持排错,测量以及安全等措施,1字节-40字节,很少被用到.

IP转发分组的流程

数据路由: 路由器在不同网段转发数据报

网络畅通的条件: 能去能回,沿途的路由器都必须知道到源地址和目标地址网络下一跳给哪个接口

网际控制报文协议 ICMP

ICMP简介

为了提高IP数据报交付成功的机会,在网际层使用了网际控制报文协议ICMP(Internet Control Message Protocol)

ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告

ICMP不是高层协议,而是IP层协议

ICMP报文作为IP层数据报的数据,加上数据报的首部,组成IP数据报发送出去.

ICMP种类

ICMP报文的种类有两种,即ICMP差错报告报文和ICMP询问报文.

ICMP的前4个字节是统一的格式,共有三个字段: 即类型,代码和检验和.接着的4个字节的内容与ICMP的类型有关.

差错报告报文(ping指令收到的是差错报告)

有五种: 终点不可达,源点抑制,时间超过,参数问题,改变路由(重定向)

询问报文(ping指令发送的是询问)

有两种: 回送请求和回答报文,时间戳请求和回答报文

ping的过程

A —ping—> B

A 创建一个数据报, 格式如: | IP数据报首部 | 8字节 | IP数据报的数据字段(前面的8字节也属于IP数据报数据) |

B 收到ICMP询问报文后, 丢弃8字节以外的IP数据报的数据字段,组装ICMP的前8字节, 格式如: | 首部 | ICMP前8字节 | IP数据报首部 | 8字节 | 再发送给 A

因特网的路由选择协议

RIP动态路由协议

RIP协议最早, 每30秒周期性地广播, 每一个目的地告诉相邻路由器0跳能到自己,路由器告诉相邻路由器1跳能到,然后不断地告诉其他路由器,如果某一条路径断开,30秒之后又能重新选择到一条通路.(依据跳数不一定是最佳路径,有一些跳数大的路径带宽大)

OSPF内部网关协议

向本自治系统中所有路由器发送信息,这里使用的方法是洪泛法. 发送的信息就是与本路由器相邻的所有路由器的链路状态, 但这是路由器所知道的部分信息. 只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息.

相比RIP协议,OSPF是触发式更新路由表.

OSPF维护三个表:

  1. 邻居表 hello包(局域网2s一次)
  2. 链路状态表 互相交换邻居表,构造网络拓扑图
  3. 计算路由表 迪杰斯特拉算法来计算最短路径,路径值是带宽

BGP外部网关协议

BGP是不同自治系统的路由器之间交换路由信息的协议.边界网关协议BGP只能是力求寻找一条能够到达目的网络且较好的路由(不能成环),而非寻找一条最佳的路径.每一个自治系统的管理员要选择至少一个路由器作为该自治系统的BGP发言人.

虚拟专用网 VPN

VPN: 在互联网上传输私网数据, 因为私网数据不能在广域网上传输,所以在数据报前面再增加一个目标网络网关的目标地址和自己的网关源地址. 目标网关获得数据报之后解析得到一个数据报,目标地址是私网中的某个主机.

例如:

局域网数据报: | 10.0.0.2 | 10.0.0.8 | 数据 |

广域网数据报: | 23.23.2.2 | 23.23.2.20 | 10.0.0.2 | 10.0.0.8 | 数据 |

网络地址转换 NAT

1994年提出.

需要在专用网连接到因特网的路由器上安装NAT软件. 装有NAT软件的路由器叫做NAT路由器.它至少有一个有效的外部全球地址IPg. 所有使用本地地址的主机和外界通信时都要在NAT路由器上将其本地地址转换成IPg才能和因特网连接.

私网里的IP和端口号都被NAT路由器进行了转换,端口使用的是NAT的端口,存储一张IP与端口映射表即可.

-------------本文结束, 感谢您的阅读, 如有问题欢迎联系我-------------