抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

本篇包含计算机网络和 TCP/IP 结构的重要知识点,以及华三设备的一些操作。

网络概述

两种数据交换方式:

  • 电路交换:基于电话网的电路交换

    主要通过交换机连接,两台计算机独占线路

  • 分组交换:以分组为单位存储转发

    原理:将大数据分隔为一个一个包传输,每个包都打上报文头(标有分组序号、源目 IP 等),接收端收到后按照分组序号进行拼接

衡量计算机网络的指标:

  • 带宽(一定时间内两个节点间数据量,单位 bps)
  • 延迟(数据在两个节点间传输的时间)

OSI 七层模型:

  1. 物理层:比特流传输,比特流与电子信号之间的转换,规定连接器与网线的规格

  2. 数据链路层:协商比特流一致性,数据帧与比特流之间的转换,流量控制,差错校验,编帧与识别

  3. 网络层:寻址,地址管理,路由选择,拥塞控制,异种网络互连

  4. 传输层:端到端逻辑连接的建立维护与断开、差错重传、数据排序、多路复用、流量控制、对应用层数据进行分段与封装

  5. 会话层:通信管理。主机间通信、建立维护及终止程序间会话、决定连接方式(SQL、NFS、RPC 等)

  6. 表示层:定义数据格式与结构、协议上层数据格式、将设备固有的数据格式转化为网络标准传输格式(编码格式、图片格式等)

  7. 应用层:为程序进程提供网络服务,针对特定应用

可路由协议:定义数据包内各个字段格式与用途,对数据进行网络层封装(即 IP 协议)

路由协议:在路由器间传递信息,计算并形成路由表,为可路由协议选择路径(RIP、OSPF、BGP)

面向连接的服务(可靠连接):

  1. 通信前建立连接,完成后断开连接
  2. 有序传递
  3. 应答确认
  4. 差错重传

无连接服务(不可靠连接):

  1. 尽力而为
  2. 无需建立连接
  3. 无序列号机制
  4. 无确认机制
  5. 无重传机制

TCP/IP 模型:

  1. 网络接口层:物理线路与链路层通信

  2. 网络层:数据包路由转发,路由表的维护 (IP、ICMP、IGMP)

  3. 传输层:端到端通信,数据完整性校验,差错重传,数据排序 (TCP、UDP)

  4. 应用层:处理特定应用细节 (Telnet、FTP、SMTP、HTTP 等)

局域网 CSMA/CD 载波侦听机制:用于防止总线型局域网冲突。

实现:先听后发,边听边发,冲突停发,退避再发

广域网三种连接方式:

  1. 专线:点到点永久独占线路,带宽固定,链路层使用 SDLC、HDLC、PPP 等协议

  2. 电路交换:按需拨号建立连接,独占线路,带宽固定,链路层用 PPP

  3. 分组交换:通过虚电路连接到多个对端,如帧中继、ATM 等

ARP(Address Resolution Protocol)地址解析协议,根据 IP 地址解析出 MAC 地址。

ARP 原理:

  • 请求:广播发送 ARP 请求报文,请求获取目标 IP 的 MAC 地址

  • 应答:单播回应,将自身 MAC 发送给请求方

RARP:反向地址转换协议,根据 MAC 地址解析出 IP 地址

代理 ARP:路由器充当 ARP 中间代理去广播 ARP 请求

ICMP 协议:Internet 控制报文协议,用于检测网络是否通畅、主机是否可达等

TCP 与 UDP 概述

TCP

Transmission Control Protocol 传输控制协议,协议号 6

特点:

  • 面向连接,可靠,基于字节流
  • 确认机制:应答接收
  • 端口号:多路复用
  • 序列号:丢失检测、乱序重排
  • 完整性校验:差错校验
  • 窗口机制:流量控制
  • 三次握手:可靠连接

TCP 报文头:

  1. Source Port(16 bit):源端口

  2. Destination Port(16 bit) :目的端口

  3. Sequence Number(32 bit):数据包中第一个字节的序列号,取值范围[0,2^32-1],是 mod2^32 运算的值

  4. Acknowledge Number(32 bit) :确认序列号,期望收到对方下一报文的第一个数据字段的序号

  5. Data Offset(4 bit) :数据偏移,值为 TCP 头的长度除以 4

  6. 标志位(6 bit) #主要字段:

    • URG:紧急,需要尽快传送
    • ACK:确认,建立连接后的报文确认
    • PSH:推送,接收方要尽快将此报文给上层处理
    • RST:复位,重新连接
    • SYN:同步,发起连接
    • FIN:终止,释放连接
  7. Windows Size(16 bit):接受缓冲区空闲空间,告诉对端自己能接收的最大数据长度

  8. Checksum(16 bit):校验和

常见服务:Telnet(23)、FTP(20\21)、SSH(22)、HTTP(80)、SMTP(25)

三次握手:连接建立

  1. A 向 B 发送 SYN(seq=x),进入 SYN_SEND 状态

  2. B 收到 SYN 报文,回应 SYN(seq=y)、ACK(ack=x+1)报文,进入 SYN_RECV 状态

  3. A 收到 B 的 SYN 报文,回应 ACK(ack=y+1)进入 Established 状态,TCP 连接建立

四次挥手:连接终止

  1. A 向 B 发送 FIN,表示数据传输完毕

  2. B 收到后执行被动关闭,确认回复 ACK

  3. B 关闭套接字,向 A 发送 FIN

  4. A 接收到后向 B 确认,发送 ACK

滑动窗口:限制每次发送的包数

1.A 向 B 以默认发包数发送数据包

2.B 回复 ACK 报文,其中除了 ack 外还带有 win 限制每次发送的数据长度

3.此后 A 便会按照要求长度发送数据包

UDP

User Datagram Protocol 用户数据报协议,协议号 17

特点:无连接,不可靠传输,无流量控制,直接封装应用层数据(不分段)

报文头:

  1. Source Port(16 bit) #源端口

  2. Destination Port(16 bit) #目的端口

  3. Length(16 bit) #数据包长度

  4. Checksum(16 bit) #校验和

常见服务:DNS(53)、TFTP(69)、SNMP(161)、NFS、DHCP(67\68\546)

IP 基本原理

IP 作用:

  1. 标识结点与链路

    • 用唯一 IP 地址标识每个节点
    • 用唯一 IP 网络号标识每个链路
  2. 寻址与转发

    • 确定节点所在网络位置进而确定节点位置
    • IP 路由器选择适当路径将 IP 包转发到目的节点
  3. 适应各种数据链路

    • 根据链路的 MTU 对 IP 包进行分片与重组(MTU:最大传输单元,能通过的最大数据包大小(以字节为单位))
    • 为了通过实际的数据链路传递信息,须建立 IP 地址到数据链路层地址的映射

IP 头(20 字节)

  1. Version(4 bit):当前 IP 版本

  2. IHL(4 bit) :IP 报文头长度,等同于数据字段的偏移量,最小为 5(即 5*32),最大为 15

  3. Type-of-Service(8 bit) :上层协议对处理当前数据报所期望的服务质量,并对数据报按照重要性级别进行分配,分配优先级、延迟、吞吐量以及可靠性。

  4. Total Length(16 bit) :整个 IP 数据包的字节长度(数据+IP 头),最大 65535 字节

  5. Identification(16 bit):用于识别当前数据包

  6. Flags(3 bit):低位控制分片,中位指出数据包是否可分片,高位保留

  7. Fragment Offset(13 bit):指出与源数据包的起始端相关的分片数据位置

  8. Time-to-Live(8 bit) :生存时间,每经过一节点就减少 1 直到为 0

  9. Protocol(8 bit) :指出接收数据包的上层协议

  10. Header Checksum(16 bit) :头部校验和,保证 IP 头完整

  11. Source Address(32 bit):源 IP

  12. Destination Address(32 bit) :目 IP

VLSM:可变长子网掩码。使同一 IP 地址能划分为多个子网,能按照子网要求定制,每个子网都可自定义大小。

CIDR:无类域间路由。基于 VLSM,CIDR 使用网络前缀,可有各种长度,由掩码标识。可进行网段聚合。

DHCP 概述

UDP 协议,采用 C/S 模式,服务器端口 67,客户端端口 68

三种分配方式:

  1. 手动分配:静态绑定固定 IP,这些 IP 固定给特定设备使用(打印机,DNS,web 服务器等)

  2. 自动分配:服务器给客户端分配租期无限长的 IP 地址,只有客户释放,其他客户才能使用该地址

  3. 动态分配:服务器给客户端分配租期有限长的 IP 地址,一旦租期到期而未续约,地址就会释放。

基本原则:尽可能为客户端分配原来使用的地址。

分配顺序:

  1. 静态分配的
  2. 客户端曾经会用过的
  3. 最先找到的可用 IP

DHCP 报文:

  1. Discover:客户端第一次向服务器发送的请求报文,广播发送

  2. Offer:服务器对客户端 Discover 的回应,包含分配的 IP、掩码、网关等信息,广播或单播发送

  3. Request:客户端发送给服务器的请求报文,包括服务器的选择与租期更新等,单播或广播发送(根据客户端状态)

  4. Release:客户端若想释放当前地址,则单播发送给服务器

  5. Ack/Nak:服务器对客户端的回应,请求报文正确时回复 Ack,否则回复 Nak

  6. Decline:客户端收到服务器的 Ack 后,对获取的 IP 进行确认,使用 ARP,若发现该 IP 已被使用,则广播向服务器发送 Decline 报文,拒绝使用该 IP。

  7. Inform:当客户端通过其他方式已获取了 IP,若还需要向服务器索取其他配置信息时,会向服务器发送 Inform,若服务器能根据要求分配则会回复 Ack,否则不操作。

DHCP 续约:

  1. 更新状态:使用时间达到租约的 50%,客户端进入更新状态,单播向服务器发送 Request,服务器若同意续约则回复 Ack,否则回复 Nak

  2. 重新绑定状态:使用时间达到租约的 87.5%,客户端进入重新绑定状态。客户端广播 Request 请求,请求对有效租期进行更新。

    进入该状态的原因:客户端未收到服务器对续约 Request 的回应。

    若 Request 未收到回应,客户端会在一定时间内重发 Request 报文,若直到租期结束也未更新租期,则被迫释放 IP 地址。

DHCP 中继:DHCP 只适用于客户端与服务器在同网段(原因:广播请求)。可以通过中继使客户端可向其他网段的 DHCP 服务器请求。

​ 实现:中继路由器收到请求广播报文,便向服务器单播发送,同理服务器也单播回应中继,中继再广播回应客户端。

FTP 概述

TCP 协议,采用 C/S 模式,控制连接端口 21,数据连接端口 20

控制连接:负责 FTP 客户端与服务器交互命令与信息的传输,在整个会话过程中始终打开。

数据连接:负责客户端与服务器数据的传输,传输完毕就会关闭

文件传输模式:

  1. ASCII:默认模式,发送方将文件转为 ASCII 码传输,适合文本文件传输

  2. 二进制:也称图像文件传输模式,按比特流传输,适合程序文件传输

数据传输方式:

  1. 主动 PORT

    过程:

    1. 首先客户端(随机端口)与服务器(21 端口)TCP 三次握手建立连接,建立控制连接通道
    2. 客户端向服务器发送 PORT 命令,告知服务器使用主动模式。

    其中 PORT 命令携带参数(客户端 IP 地址, P1, P2),P1 与 P2 用于标识客户端数据连接的临时端口号,具体为 256*P1+P2,IP 地址也是四段,每段用逗号分隔

    1. 服务器收到 PORT 命令后按照参数用 20 端口与客户端指定端口三次握手建立数据传输通道。
    2. 数据传输完毕,发送方发送 FIN 报文,关闭数据连接

    问题:若客户端在防火墙内部网络,主动方式会出现问题,因为客户端提供的端口是随机的,防火墙若未放行该端口,则无法建立 FTP 连接。

    此时需要使用被动方式建立连接

  2. 被动 PASV

    过程:

    1. 首先客户端(随机端口)与服务器(21 端口)TCP 三次握手建立连接,建立控制连接通道
    2. 客户端向服务器发送 PASV 命令,参数与 PORT 一致。但 IP 是服务器的,标识的是服务器端的临时端口号。
    3. 客户端用随机端口与服务器的指定临时端口 TCP 三次握手建立数据连接通道。
    4. 数据传输完毕,发送方发送 FIN 报文,关闭数据连接

TFTP 简单文件传输协议

UDP 协议,端口 69

特点:

  1. 仅提供简单文件传输功能(上传,下载)
  2. 无存取授权与认证机制,无目录功能
  3. 由客户端发起

下载过程:

  1. 客户端向服务器发送读请求

  2. 服务器根据请求回应数据报文(块编号从 1 开始)

  3. 客户端收到数据后回应确认报文。

    重复 2.3 步直至完成下载

上传过程:

  1. 客户端向服务器发送写请求

  2. 服务器回应确认报文(块编号为 0)

  3. 客户端发送数据报文(块编号从 1 开始)

  4. 服务器收到后回应确认报文。

    重复 3.4 步直至上传完成

文件传输时,将文件分成多个文件块,封装到数据报文中并打上文件块编号

传输文件模式:

  1. netASCII:对应 FTP 的 ASCII 模式
  2. octet:对应 FTP 二进制模式

协议报文:

  1. RRQ 读请求
  2. WRQ 写请求
  3. 数据报文
  4. 确认正确/错误报文

报文的头两个字节是操作码字段,1 为读请求,2 为写请求,3 为数据报文,4 为确认正确,5 为错误。

文件传输过程中读写出错就发送差错报文,数据传输就停止,差错报文不会被确认也不会重传

TFTP 每次传输的数据报文中文件块大小固定为 512 字节,若文件大小刚好是 512 字节的整数倍,则传完文件后还要再发一个空文件块的数据报文表明文件传输完成。

DNS 概述

TCP 或 UDP(基本是 UDP)协议,端口号 53,采用 C/S 模式,解析域名与 IP 映射。

查询方式:

  1. 递归:服务器收到请求时,若不能解析,则把请求转发到下一台服务器直到有一台解析成功

  1. 迭代:服务器收到请求时,若不能解析,则按根域 -> 一级域名 -> 二级域名 -> 三级域名依次询问,直到解析成功

反向查询:根据 IP 解析域名,使用特殊域 in-addr.arpa 域,该域的子域是按照点分十进制表示法编号的 IP 地址相反顺序构造,即 IP 地址的四段倒置形成该域。

域名服务器类型:

  1. 本地域名服务器:自行管理的域名服务器,与客户端很近

  2. 根域名服务器:管理顶级域,本身不对域名解析,但知道相关域名服务器的地址

  3. 授权域名服务器:每个主机都必须在某个授权域名服务器上注册,通常该服务器就是本地域名服务器,最好有两个以防单点故障

  4. 主域名服务器:完成一个或多个域的域名解析的主用域名服务器

  5. 辅助域名服务器:协助主域名服务器,分担主服务器的压力,且能作为冗余服务器,本身不建立区域地址信息文件,而是获取主服务器上最新副本(两种获取方式:1.辅服务器启动或配置刷新时间到期后主动向主服务器获取 2.主服务器启动通知功能,区域数据变化后,将变化通知给辅服务器,辅服务器更新副本)

DNS 既可以 TCP 查询也可以 UDP 查询的原因:

DNS 响应报文中有特殊位–删减标志位 TC,当响应报文采用 UDP 封装且长度大于 512 字节时,服务器仅回复前 512 字节,同时 TC 置位,表示报文进行了删减。当客户端收到 TC 置位的报文,客户端将用 TCP 重新封装请求报文并发送,此时服务器返回 TCP 封装的回应。

DNS 特性

  1. 静态域名解析

    设备上手动建立域名与 IP 的映射关系

  2. 动态域名解析

    设备查询 DNS 服务器,由服务器完成解析

  3. DNS 代理

    在客户端与服务器间转发 DNS 请求与应答报文。客户端将 DNS 代理当做服务器,代理再将请求转发给服务器,应答同理。

Telnet 概述

基于 TCP,端口号 23,采用 C/S 模式。使用 Telnet 进行远程访问设备进行配置维护。

telnet 安全问题:无安全认证机制,数据以明文传输。

实现 Telnet 的条件:

  • 服务器端:

    1. 内核命令行接口:操作系统内核与虚拟终端间的适配层
    2. 虚拟终端:类似实体终端的驱动程序。通过虚拟终端与内核交换信息
    3. Telnet 服务器进程
    4. TCP/IP 协议栈
  • 客户端:

    1. Telnet 客户端程序
    2. TCP/IP 协议栈

工作过程:

  1. 客户端与设备端 23 端口进行 TCP 连接
  2. 系统将客户端命令以 NVT 网络虚拟终端格式传送到服务器并执行
  3. 服务器端将 NVT 格式的命令执行结果再转化为客户端接受的格式传回客户端
  4. 客户端发送命令进行 TCP 断开连接。

华三路由器的 Telnet 默认关闭。

华三设备操作

实验环境:两台交换机(需要配 IP 地址)或路由器

SW2 作为 telnet server,SW1 作为 telnet client

SW2:
[sw2]interface Vlan-interface 1
[sw2-Vlan-interface1]ip address 192.168.1.2 24

SW1:
[sw1]interface Vlan-interface 1
[sw1-Vlan-interface1]ip address 192.168.1.1 24

配置 telnet

SW2:
[sw2]telnet server enable # 开启telnet
[sw2]user-interface vty 0 10 # vty用户界面。
# 两个数字是确定vty号的范围第一个数字范围0-63,第二个范围1-63
[sw2-line-vty0-10]authentication-mode scheme # 设置验证方式,这里选了用户名密码方式
[sw2-line-vty0-10]set authentication password simple 123456 #设置验证密码
[sw2-line-vty0-10]user-role level-3 # 设置用户权限,权限等级0-15
[sw2]local-user zhangsan # 创建用户zhangsan
New local user added.
[sw2-luser-manage-zhangsan]service-type telnet # 设置为telnet服务,不设置无法登录
[sw2-luser-manage-zhangsan]password simple 123456 # 设置提权密码

从 SW1 登录 SW2

telnet 192.168.1.2

SSH 概述

基于 TCP,端口号 22,安全的远程登录协议

特点:

  1. 数据机密性:支持 DES、3DES 加密算法,会对用户名与密码及数据进行加密。
  2. 支持多种认证方式:支持公钥验证方式(必支持)、密码验证方式(可选支持)、不验证方式(可选)
  3. 支持 RSA 认证:RSA 非对称加密

SSH 协议基本框架:

主要包含三个协议:1.传输层协议 2.用户认证协议 3.连接协议

连接建立过程:

  1. 版本号协商:

    1. 客户端与服务器端 22 端口 TCP 连接。连接建立后,服务器向客户端发送报文,包含版本标志字符串(SSH-<主协议版本号>.<次协议版本号>-<软件版本号>)
    2. 客户端收到后解析报文,若版本号比自己的低,就使用低版本号
    3. 客户端回应服务器,包含客户端决定的协议版本号
    4. 服务器端比较版本号,若协商成功,则进入密钥算法协商阶段,否则断开 TCP 连接
  2. 密钥与算法协商:

    1. 客户端与服务器端互相交换密钥算法协商报文,包含支持的公钥算法列表、加密算法列表、MAC(消息验证码)算法列表、压缩算法列表
    2. 通过对比双方都得出最终使用的算法
    3. 双方通过 DH 算法交换,生成会话密钥与会话 ID
  3. 认证:

    1. 客户端向服务器发送认证请求,包含用户名、认证方式等
    2. 服务器端对客户端进行认证,若失败发送失败信息,包含可再次认证的方法列表
    3. 失败的情况下:客户端从认证方法中选一种再次认证
    4. 直到认证成功或次数达到上限服务器关闭连接为止

    两种认证方式:

    1. password 认证:客户端向服务器发送 password 认证请求并将用户名密码加密后发送,服务器收到解密并比对,返回成功或失败信息
    2. publickey 认证:采用数字签名认证。
  4. 会话请求:

    认证通过后,客户端向服务器发送会话请求,服务器若成功处理请求就回复 SUCCESS 包,否则回复 FAILURE 包

  5. 交互会话:

    会话请求通过后,进行双向数据传输,客户端发送加密的命令,服务器接收解密处理命令,将结果加密返回

SFTP:安全文件传输协议。建立在 SSH 基础上,默认采用加密方式传输数据。