因特网与网络互联技术
网络层协议
****网络互联原理:****采用统一的IP协议,进而实现大规模、异构网络的互联互通
IPv4协议
IP地址定义: IP地址是一个逻辑地址,可以修改,用于标识网络设备。网络中的设备都有IP地址并通过IP地址实现网络连接
IP地址表示: 机器中用32位的二进制代码表示IP地址,并每隔8位插入一个空格,提高可读性
IP地址的组成:网络位+主机位 ,例:IP地址192.168.3.31/24,其中24是掩码的表示形式之一,表示该IP地址中前24位为网络位;网络掩码:区分一个IP地址中的网络位与主机位;++++若网络位取值相同,则代表属于同一网段,同一网段的主机可以二层直接通信,不同网段的主机需要网络层路由通信++++
++++IP地址编址三阶段:分类的IP地址、子网划分、CIDR++++
IP地址的分类:
A类:1-126 B类:128-191 C类:192-223 D类:224-239
E类240.0.0.0-255.255.255.255
网络地址;用于标识一个网络(主机号全0)
广播地址:用于向该网络中的所有主机发送数据的特殊地址(主机号全1)
可用地址:可分配给网络中的节点或网络设备接口的地址(主机号既不全0也不全1)
|------|--------------|------------------------|
| 地址类型 | 含义 | 特点 |
| 单播地址 | 表示某一个特定的接口 | ABC类地址中,主机位非全0和非全1 |
| 广播地址 | 表示所有接口的IP地址 | 直接广播地址:ABC类地址中主机位全1 |
| 广播地址 | 表示所有接口的IP地址 | 本地广播地址:255.255.255.255 |
| 组播地址 | 表示某一组接口的IP地址 | D类地址 |
组播(多播)地址
组播IP地址:224.0.0.0到239.255.255.255。
组播MAC地址:01-00-5E -00-00-00到01-00-5E-7F-FF-FF,高25位固定(另外23位由组播IP地址后23位映射)
不管一个组播组包含多少个成员,当组播服务器发送信息时只需要发送1个分组。
组播和广播地址只能用于目的地址,不能用于源地址。
常见组播地址分类
224.0.0.0---224.0.0.255供++++路由协议++++使用
224.0.0.1---网段中所有支持组播的++++主机++++
224.0.0.2---网段中所有支持组播的++++路由器++++
224.0.0.5---所有的OSPF路由器
224.0.0.6---OSPF指定路由器(DR/BDR)
224.0.0.9---所有RIPv2 路由器
224.0.1.0---224.0.1.255公用组播地址,用于Internet
224.0.2.0---238.255.255.255,全网范围内的临时可用组播地址
239.0.0.0---239.255.255.255,为本地管理组播地址,仅在特定的本地范围内有效
特殊的IP地址
|---------|--------|-------|--------|-------------------------|
| 网络号 | 主机号 | 源地址使用 | 目的地址使用 | 代表的意思 |
| 全0 | 全0 | 可以 | 不可 | 在本网络上的本主机 |
| 全1 | 全1 | 不可 | 可以 | 在本网络上进行广播 |
| Net-ID | 全1 | 不可 | 可以 | 对net-ID上的所有主机广播 |
| 127 | 非全0或全1 | 可以 | 可以 | 用作本地软件环回测试之用 |
| 169.254 | 非全0或全1 | 可以 | 可以 | DHCP服务器故障时操作系统分配(APIPA) |
公有地址 :由Inter NIC负责,通过它可直接访问因特网
私有地址 :属于非注册地址,专门为组织机构内部使用
公有地址和私有地址的对比
|------|-----------|---------------------------------|
| | 使用场合 | 特点 |
| 公有地址 | 在因特网公网中使用 | 全网唯一 不能重复使用 |
| 私有地址 | 在组织机构内部使用 | 在某一个内网中唯一使用 不同内网中可以重复使用 |
| 私有IP的主机要访问因特网,需要将私有IP转换为公有IP,可采用NAT技术实现 |||
规定的私有地址范围
|----|------------------------------|------------------------|-----|
| 类别 | IP地址范围 | 网络号 | 网络数 |
| A | 10.0.0.0~10.255.255.255 | 10 | 1 |
| B | 172.16.0.0~172.31.255.255 | 172.16~172.31 | 16 |
| C | 192.168.0.0~192.168.255.255 | 192.168.0~192.168.255 | 256 |
子网划分
背景:分类的IP地址存在问题
一个网络里多余没有被使用的IP地址不能再次分给其它有需要的使用,因而存在严重的地址浪费问题,并且不能灵活应对用户的需求
作用 :通过将一个大网络按需划分成多个不同的小网络,进而解决IP地址空间利用率低、两级IP地址不够灵活的问题
实现过程 :通过借用IP地址的主机位来充当子网位(号),进而生成多个不同的子网网络
例:C类网络192.168.10.0/24划分为两个子网;步骤:向主机借1位,变成子网位,从而形成两个子网:192.168.10.0/25和192.168.10.128/25
子网划分后的IP地址=(<网络号>,<子网号> ,<主机号>)由子网号取不同的值,得到不同的子网网络
子网掩码:用来分辨IP地址中的网络位和主机位;子网掩码长度=32位,某位=1:IP地址中对应位为网络位;某位=0:IP地址中对应位为主机位
CIDR
****优点:****能够精简路由器中路由条目的数量,提升转发效率
规则: 将IP地址中最大的相同的位 作为汇聚后的网络位,不同 的位则归为汇聚后的主机位 ,从而实现将多个网段汇聚成一个新的超网网段
****特点:****将多个小网络,汇聚成一个大网络
路由器中的最佳匹配原则 :使用路由汇聚时,路由表的项目主要由"网络前缀 "和"下一跳地址 "组成。因此查找路由表匹配报文中的目标IP地址时可能会得到不止一个匹配结果。则应当从匹配结果中选择具有最长网络前缀的路由:最长前缀匹配。
IP数据报
IP头部:固定长度20字节,可选长度0-40字节
若网络层数据报大小为1500B则其中数据部分最大为1480B(包含传输层头部20B)
图示(中文版见另一专栏同期):

Version(版本):IPv4:0100;IPv6:0110
Header Length(首部长度):(固定长度+可选长度)/4
Total Length(总长度):IP报文总长度
Identification(标识符):对IP分片做标识,用于分片在目的主机重装
Flags(标志):DF:是否允许分片(允许0不允许1);MF:是否是最后分片(是0不是1)
Fragment Offset(片偏移):指出分片中的数据在原报文中的相对位置
片偏移计算:偏移=字节编号/8(注:以太帧数据部分最大为1480B)
TTL(生存时间):代表可被路由设备转发的次数(每次转发-1)
Protocol(协议):表示上层(传输层)所用协议(TCP为6,UDP为17,ICMP为1)
Header Checksum(首部校验和):仅对首部进行校验
Options(选项):可选内容 Padding(填充字段):填充到4B的整数倍
ARP协议
通信使用地址:IP地址(网络层地址);MAC地址(数据链路层地址)
ARP协议:地址解析协议,实现IP地址到MAC地址的映射
RARP协议:逆向地址解析协议,实现MAC地址与IP地址的映射
网关:能够实现不同局域网间的互联,通常是一个三层设备,网关地址是此设备上的某个接口IP地址
转发过程中:IP数据报源、目地址保持不变,MAC帧源、目地址每段均不同(仅为当前段的源、目地址)(前提:没有NAT转换,若跨网段则先发向网关IP地址)
ARP协议原理 :ARP是网络层 协议,在IP协议之下,通过广播发送ARP请求报文来获取IP与MAC的映射关系(广播请求,单播回应)
ARP报文类型:
ARP请求分组:包含发送方硬件地址/发送方IP地址/目标方硬件地址(未知时填0)/目标方IP地址
ARP响应分组:包含发送方硬件地址/发送方IP地址/目标方硬件地址/目标方IP地址
|-------|------|----|-------|-----|
| 目的MAC | 源MAC | 类型 | ARP报文 | 帧校验 |
注:本地广播ARP请求(路由器不转发ARP请求),直接封装在帧中传输
ARP高速缓存(即ARP表):是ARP地址解析协议能够高效运行的关键,如果在表中有IP和MAC的映射,则直接获取MAC完成帧封装。如果没有查到IP对应的MAC,就会发广播ARP请求去获取并更新ARP缓存表,另外ARP缓存中每一项都被设置了生存时间,以保证ARP 表的正确性
主机ARP表常见命令:
arp -a:查看ARP缓存表
arp -d:清除ARP缓存
arp -s ip-address mac-address:ARP静态绑定
网络设备ARP常见命令:
display arp brief:查看ARP缓存表简要信息
reset arp all:清除ARP缓存
arp static ip-address mac-address:ARP静态绑定
基于ARP的二层攻击:ARP泛洪、ARP欺骗等
ARP欺骗攻击:攻击者通过发送伪造的ARP报文,恶意修改网关或网络内其他主机的ARP表项,造成用户或网络的报文转发异常。
防范方法:ARP表项严格学习;ARP报文合法性检测
ARP泛洪攻击:ARP泛洪攻击也叫拒绝服务攻击,攻击者向设备发送大量目的IP地址无法解析的伪造ARP请求报文或免费报文,造成设备上的ARP表项溢出,无法缓存正常用户的ARP表项,从而影响正常的报文转发。
防范方法:ARP表项限制;ARP速率抑制;ARP表项严格学习
免费ARP:设备主动使用自己的IP地址作为目的IP地址发送ARP请求
代理ARP:ARP请求从一个网络的主机发往同一网段但不在同一物理网络上的另一台主机,连接这两个网络的设备可以回答该ARP请求,这个过程称作ARP代理
ICMP协议
ICMP网际控制报文协议:
是网络层协议,封装在IP报文中传输
用于传输出错报告控制信息,提高IP报文交付的成功率

|------------|-----------|----------------------|
| Type | Code | 描述 |
| 0 | 0 | Echo Reply |
| 3 | 0 | 网络不可达 |
| 3 | 1 | 主机不可达 |
| 3 | 2 | 协议不可达 |
| 3 | 3 | 端口不可达 |
| 5 | 0 | 重定向 |
| 8 | 0 | Echo Request |
| 11 | 0 | TTL超时 |
| 11 | 1 | 分片重组超时 |
| 12 | 0 | 参数问题 |
| ... | ... | ... |
不应发送ICMP差错报告报文的情况:
对ICMP差错报告报文不再发送ICMP差错报告报文
对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文
对具有多播地址的数据报都不发送ICMP差错报告报文
对具有特殊地址(如127.0.0.0/8或0.0.0.0)的数据报不发送ICMP差错报告报文
ICMP重定向报文:特定情况下,路由器检测到一台机器使用非最优路由时,向该主机发送一个ICMP重定向报文,请求主机改变路由
|----------|---------------|---------------------------------------------------|
| ICMP报文种类 | ICMP报文类型 | 说明 |
| 差错控制报文 | 目的不可达 | 当路由器或主机不能交付数据报时发送目的不可达报文(路由或端口不可达),Type=3 |
| 差错控制报文 | 时间超过 | TTL超时报文、分片重组超时报文,Type=11 |
| 差错控制报文 | 源点抑制 | 当网络出现拥塞,路由器处理不了时,Type=4 |
| 差错控制报文 | 参数问题 | 当收到的IP报文发现首部有问题时,Type=12 |
| 差错控制报文 | 重定向 | 当路由器发现去往某个目的地址的数据报有更佳的路径时,Type=5 |
| 询问报文 | 回送(Echo)请求或回答 | 用来测试目的站是否可达以及了解其有关状态,Type=8和Type=0 |
| 询问报文 | 时间戳请求或回答 | 请求某台主机或路由器回答当前的日期和时间,可用于时钟同步和时间测量,Type=13和Type=14 |
ICMP的应用
ping命令:用于测试网络连通性(应用回送请求和回答的ICMP询问报文)
路由跟踪命令:用于目标地址的路径跟踪(通过向目标发送一连串TTL值依次加1且端口不可达的IP数据报,实现对到达目标地址的路由跟踪)
Tracert:基于Windows系统使用,采用时间超过和ICMP回送请求和回答报文
显示request time out说明IP报文丢失
TTL表示到达目的主机时的TTL字段值,进而可求到达目的主机经过的跳数
Ping 127开头的地址可用于测试本机TCP/IP协议栈是否工作正常
Traceroute:基于路由器、Unix、Linux系统使用,采用时间超过和目的不可达报文
除了封装端口不可达的报文以外,还可以直接发送ICMP回送请求数据包再结合时间超过来实现路由跟踪。(应用时间超过和回送请求或回答的ICMP报文,取决于设备的操作系统类型)
QoS服务质量
目的:针对各种业务的不同需求,提供端到端的服务质量保证,允许不同流量不平等的竞争网络资源
QoS度量标准:带宽、时延、抖动、丢包率
|------------------------|---------------------|---------------------------------------------------------------------|
| 应用 | QoS需求 | QoS处理 |
| 网络协议和管理协议 | 要求低时延和低丢包率,但对带宽要求不高 | 可通过优先级映射功能,为此类报文标记较高的服务等级,使网络设备优先转发此类报文 |
| 视频会议实时业务 | 要求高带宽、低时延和低抖动 | 可通过流量监管功能,为视频报文提供高带宽;通过优先级映射功能,适当调高视频报文的优先级 |
| VOIP实时业务 | 要求低丢包率、低时延和低抖动 | 可调整语音报文的优先级,使其高于视频报文;另一方面通过流量监管功能,为语音报文提供最大带宽,在网络产生拥塞时,可以保证语音报文优先通过 |
| 大数据量业务(FTP、数据库备份、文件转储) | 尽可能低的网络丢包率 | 可为这类报文配置流量整形功能,通过数据缓冲区缓存从接口发送的报文,减少由于突发流量导致拥塞而产生的丢包现象 |
| 流媒体(视频点播) | 降低了对网络时延、丢包和抖动的要求 | 通过优先级映射功能,适当提高对应报文的优先级 |
| 普通业务(HTML网页浏览、邮件) | 对网络无特殊要求、重要性也不高 | 不需要额外部署QoS功能 |
使用目的:区分流量,保证重要流量及时被转发
|---------------------------------|----------------------------------------------------------------------------------------------------|
| QoS服务模型 | 说明 |
| Best-Effort service (尽力而为的服务模型) | 先来先服务原则(因特网默认) |
| Integrated service (综合服务模型) | 使用RSVP ( 资源预留协议 ****)****提前申请网络资源,各节点预留资源 接收方向网络中的路由器,申请资源预留 提供保证服务和负载控制服务 |
| Differentiated service (区分服务模型) | 不预留资源,通过多种方法指定报文的QoS(如区分服务字段) 并根据业务的不同服务等级约定,有差别地进行流量控制和转发来解决拥塞问题 |
IPv6协议
特点:充足的地址空间:128位;简化的报文头格式;层次化的地址结构;地址自动配置;内置安全性:IPSec作为它的标准扩展头;支持QoS;支持新技术发展:SRv6
报文格式:
基本首部:

Traffic Class(符类型/流量类型):区分服务字段
Flow Label(流标签):对统一业务的数据流进行标识(v6特有)
Payload Length(载荷长度):除基本首部外的字节数
Next Header(下一个报文首部):若无扩展首部,则指向TCP/UDP首部
Hop Limit(跳数限制):相当于TTL
地址长度:128bit
相对IPv4改进:
取消三层校验:协议栈中二层和四层的已提供校验,因此IPv6直接取消了IP的三层校验,节省路由器处理资源
取消中间节点的分片功能:中间路由器不再处理分片,只在产生数据的源节点处理,省却中间路由器为处理分片而耗费的大量CPU资源
定义定长的IPv6报头:有利于硬件的快速处理,提高路由器转发效率。首部长度必须是8字节的整数倍
安全选项的支持:IPv6提供了对IPSec的完美支持,如此上层协议可以省去许多安全选项
增加流标签:提高QoS效率
扩展首部:
|----------|------|----------|
| IPv6基本报头 | 扩展报头 | 上层协议数据单元 |
|------------|--------------------------------------------------------------------------------------------------------|
| IPv6扩展报头类型 | 描述 |
| 逐跳选项报头 | 该选项主要用于为在传送路径上的每跳转发指定发送参数,传送路径上的每台中间节点都要读取并处理该字段 |
| 目的选项报头 | 目的选项报头携带了一些只有目的节点才会处理的信息。目前,目的选项报头主要应用于移动IPv6 |
| 路由报头 | 路由报头能够被IPv6源节点用来强制数据包经过特定的设备 |
| 分段报头 | 同IPv4一样,IPv6报文发送也受到MTU的限制。当报文长度超过MTU时就需要将报文分段发送,在IPv6中,为了减少中间转发设备的处理压力,中间转发设备不对IPv6报文进行分片,报文的分片将在源节点进行 |
| 认证报头 | 该报头由IPsec使用,提供认证、数据完整性以及重放保护。它还对IPv6基本报头中的一些字段进行保护 |
| 封装安全净载报头 | 该报头由IPsec使用,提供认证、数据完整性以及重放保护和 IPv6数据报的保密,类似于认证报头 |
地址表示
长度为128bit,用冒号分为8段,每段16bit,段内用十六进制表示
压缩规则:每段前导0可以省略,但是如果该段为全0,则至少保留一个"0"字符;拖尾的0不能省略。一个或多个连续的段为全0时,可用"::"表示,整个IPv6地址缩写中只允许有一个"::"
网络前缀:nbit,相当于v4中的网络ID
接口标识:(128-n)bit,相当于v4中的主机ID
常用IPv6地址或前缀:
|-----------|-----------------------------|
| IPv6地址或前缀 | 含义 |
| 2001::/16 | 用于IPv6 Internet,类似于IPv4公网地址 |
| 2002::/16 | 用于6to4隧道 |
| FE80::/10 | 链路本地地址前缀,用于本地链路范围内的通信 |
| FF00::/8 | 组播地址前缀,用于IPv6组播 |
| ::/128 | 未指定地址,类似于IPv4中的0.0.0.0 |
| ::1/128 | 环回地址,类似于IPv4中的127.0.0.1 |
| ... | ... |
地址类型
单播 ( unicast ):传统的点对点通信。
多播 ( multicast ):一点对多点的通信(也叫组播地址)。
任播 ( anycast ):IPv6特有的地址类型,能描述一组接口,但数据报在交付时只交付其中的一个,通常是距离最近的一个。
|------|--------|--------------------|-------------------|
| 地址类型 || 地址前缀 | IPv6前缀标识 |
| 单播地址 | 全球单播地址 | 全球路由选择前缀(48bit) | 前三位固定为001 |
| 单播地址 | 链路单播地址 | 1111111010 | FE80::/10 |
| 单播地址 | 站点单播地址 | 1111111011 | FEC0::/10 |
| 多播地址 || 11111111 | FF00::/8 |
| 任播地址 || IPv6特有的地址类型,描述一组接口,但只交付给其中一个接口 ||
全球单播地址:

Global routing prefix:全球路由前缀,由提供商(Provider)指定给一个组织机构,通常全球路由前缀至少为48位。目前已经分配的全球路由前缀的前3bit均为001。
Subnet ID:子网ID,组织机构可以用子网ID来构建本地网络(Site)。子网ID通常最多分配到第64位。子网ID和IPv4中的子网号作用相似。
Interface ID:接口标识,用来标识一个设备(Host)。
链路本地地址:

IPv6中的应用范围受限制的地址类型,只能在连接到同一本地链路的节点之间使用。它使用了特定的本地链路前缀 FE80::/10,同时将接口标识添加在后面作为地址的低64比特。
当一个节点启动IPv6协议栈时,启动时节点的每个接口会自动配置一个链路本地地址(其固定的前缀+ EUI-64 规则形成的接口标识)
站点本地地址:
无法访问Internet的本地网络,可以使用站点本地地址,类似于IPv4的私有地址。它的第一个bit是1111 1110 11,最后是16bit的Subnet ID和64bit 的Interface ID,它的前缀是FEC0::/48。由于存在一定的问题,在RFC4193中被ULA取代。
唯一的本地IPv6单播地址(ULA):唯一本地地址使用FC00::/7地址块,目前仅使用了FD00::/8地址段。FC00::/8预留为以后拓展用。
特殊IPv6地址:
未指定地址:0:0:0:0:0:0:0:0/128或::相当于IPv4的0.0.0.0
环回地址:(0:0:0:0:0:0:0:1/128或::1/128)标识一个环回接口,相当于IPv4的 127.0.0.1
兼容地址:
IPv4兼容地址:0:0:0:0:0:0:w.x.y.z或::w.x.y.z
IPv4映射地址:0:0:0:0:0:FFFF:w.x.y.z或::FFFF:w.x.y.z
6to4地址用于在IPv4的网络上传送IPv6的包:2002:WWXX:YYZZ:SLA ID:Interface ID。
6over4地址:用于6over4隧道技术的地址:64bit-prefix:0:0:WWXX:YYZZ,其中的WWXX:YYZZ是w.x.y.z IPv4公共地址的十六进制点号表示法。
ISATAP地址:用于ISATAP隧道技术的地址:64bit-prefix:0:5EFE:w.x.y.z
接口标识符生成方法:
由扩展唯一标识符EUI-64派生出来的64位接口标识符。
随机生成的接口标识符随时间而更改,以提供一定的隐蔽性。
在有状态地址自动配置过程中分配的接口标识符(DHCPv6)。
ICMPv6:IPv6的基础协议之一,具有差错报文和信息报文两种,用于IPv6节点报告报文处理过程中的错误和信息;用于消息传递:地址解析、重复地址检测(DAD)、无状态地址配置、NDP协议、路径MTU发现
ICMPv6差错报文类型:
目的不可达错误报文(Type=1)
数据包过大错误报文(Type=2)
时间超时错误报文(Type=3)
参数错误报文(Type=4)
邻居发现协议NDP:替代了IPv4的ARP和ICMP路由器发现,定义了使用ICMPv6报文实现地址解析、邻居不可达性检测、重复地址检测、路由器发现以及重定向等功能。
协议类型:
邻居请求消息NS(Neighbor Solicitation,Type=135)
邻居通告消息NA(Neighbor Advertisement,Type=136)
路由器请求消息RS(Router Solicitation,Type=133)
路由器通告消息RA(Router Advertisement,Type=134)
重定向消息(Redirect,Type=137)
IPv4到IPv6基础过渡方案
双协议栈
主机或路由器支持IPv4也支持IPv6,记为IPv6/IPv4,通常具有两个地址,一个IPv4一个IPv6,基础技术
隧道技术
通常用于IPv4和IPv6网络边界,借助于IPv4网络来建立通信隧道,实现IPv6点对点访问。隧道的建立是把IPv6数据报整个封装在IPv4数据报的数据部分实现的
|------|----------------------|---------------------------------------------------------------------------------|
| | 隧道技术 | 特殊地址 |
| 自动隧道 | ISATAP隧道 | ::0000:5EFE:w.x.y.z |
| 自动隧道 | IPv4兼容IPv6自动隧道 | 0:0:0:0:0:0:w.x.y.z或::w.x.y.z |
| 自动隧道 | 6 to 4隧道 | 完整的6 to 4主机地址由6 to 4地址的48位格式前缀(2002:A.B.C.D::/48)和其后面的子网标识符ID及64位接口ID组成 |
| 手动隧道 | IPv6-OVER-IPv4 GRE隧道 | 手动指定隧道终点地址 |
网络地址转换技术(NAT-PT)、NAT64和DNS64:IPv4--IPv6访问转换
IPv6前缀:IPv6业务数据转发到NAT64设备时,不管是发往IPv4网络的报文还是发往IPv6网络的报文,其报文的目的地址均为IPv6地址。此时,NAT64设备判断的依据就是IPv6前缀,该前缀是设备预先为需要进行NAT64处理的报文定义的,知名前缀为:64:FF9B::/96。
DNS64主要是将DNS查询信息中的A记录(IPv4 地址)合成到AAAA记录(IPv6 地址)中,返回合成的AAAA记录给IPv6侧用户。
NAT64前缀长度为32、64和96位时,IPv4地址作为整体添加到IPv6地址中;NAT64前缀长度为40、48和56位时,IPv4地址被拆成两部分,分别添加到64~71位前后

传输层协议
传输层 :通过端口号确定上层应用(端口寻址),实现了真正的端到端的传输
处理单位:报文/段
****IP+端口:****可唯一确定某一应用
UDP协议:用户数据报协议;TCP协议:传输控制协议
|------|-----------|----|-----------|-----------|
| 协议类型 | 面向连接 | 可靠 | 开销 | 效率 |
| TCP | 是 | 是 | 大 | 低 |
| UDP | 否 | 否 | 小 | 高 |
UDP协议
特点 :无连接 ;面向报文;首部开销小 (8B );尽最大努力交付,不提供拥塞控制
报文格式

最大大小65535B,最大载荷65527B
TCP协议
特点 :面向字节流;面向连接 的传输层协议;每一条TCP连接只有2个端点;可靠交付;全双工通信
报文格式

序列号=上一次发送的序列号+ len(数据长度)。特殊情况,如果上一次发送的报文是 SYN报文或者FIN报文,则改为上一次发送的序列号+ 1
确认号=上一次收到的报文中的序列号+ len(数据长度)。特殊情况,如果收到的是SYN 报文或者FIN报文,则改为上一次收到的报文中的序列号+ 1
数据偏移:TCP数据报首部长度,最小值为5(0101),即TCP报头长度最小为20B
URG:紧急位,置为1时,代表有紧急数据要发送
ACK:确认位,置为1时,确认字段有效,代表肯定应答
PSH:推送位,置为1时,立即发送TCP报文
RST:重置位,置为1时,表明TCP连接有严重错误 ,需要重新建立连接 ,也可用来拒绝一个连接
SYN:同步位,置为1时,表明正在建立TCP连接
FIN:终止位,置为1时,表明释放TCP连接
窗口:接收空闲窗口值,表示本主机还可处理的数据大小
紧急指针(URG指针):指出要被紧急发送的数据
面向连接(三次握手)

|------|--------------------------|-------------|---------------------|
| TCP | 标志位 | 状态 | 说明 |
| 三次握手 | SYN=1 Seq序号 ack确认号 ACK=1 | SYN-SENT | 发送了SYN请求,建立TCP连接第一步 |
| 三次握手 | SYN=1 Seq序号 ack确认号 ACK=1 | LISTEN | 监听SYN报文的状态 |
| 三次握手 | SYN=1 Seq序号 ack确认号 ACK=1 | SYN-RCVD | 接收到SYN请求报文后的状态 |
| 三次握手 | SYN=1 Seq序号 ack确认号 ACK=1 | ESTABLISHED | TCP连接建立成功的状态 |
| 作用 | 避免产生错误的连接 |||
四次断开

|------|--------------------------|------------|---------------------|
| TCP | 标志位 | 状态 | 说明 |
| 四次断开 | FIN=1 Seq序号 ack确认号 ACK=1 | FIN-WAIT-1 | 发送了第一个FIN请求,等待对方确认 |
| 四次断开 | FIN=1 Seq序号 ack确认号 ACK=1 | FIN-WAIT-2 | 等待对方的FIN请求 |
| 四次断开 | FIN=1 Seq序号 ack确认号 ACK=1 | CLOSE-WAIT | 等待自己进程发出断开连接的命令 |
| 四次断开 | FIN=1 Seq序号 ack确认号 ACK=1 | LAST-ACK | 等待对方的最后一次确认 |
| 四次断开 | FIN=1 Seq序号 ack确认号 ACK=1 | TIME-WAIT | 等待足够的时间,以确保对方接收到了确认 |
| 四次断开 | FIN=1 Seq序号 ack确认号 ACK=1 | CLOSED | 关闭状态 |
流量控制 :基于可变大小的滑动窗口机制实现
重传计时器:++++防止主机通信时报文丢失++++。主机A发送数据时同步启用重传计时器,若主机A在计时器超时前接收到ack,则取消重传;若超时未收到,则重传数据
往返时间RTT计算:新的RTTs=(1-α)×(旧的RTTs)+α×(新的RTT样本)
RFC 2988推荐的α值为1/8,即0.125
坚持计时器:++++防止零窗口死锁++++。主机A接收到win=0的数据后启用坚持计时器,若主机A在计时器超时前接收到新的win数据,则取消坚持;若超时未收到,则主机A进行数据探测确认
保活计时器:++++防止两个TCP之间的连接长时间空闲++++。建立TCP连接后,服务器端开启保活计时器,连接空闲时服务器发送探测数据段,若发送了10个数据段均未响应,则断开连接
|------|---------------------------|-----------------|
| TCP | 字段 | 说明 |
| 流量控制 | Win窗口(16bit) Seq序号 ack确认号 | 基于可变大小的滑动窗口机制实现 |
拥塞控制 :防止过多的数据流入到网络中
常见拥塞控制方法:慢开始 ;拥塞避免;快重传;快恢复
拥塞窗口cwnd:发送方维持的一个状态变量,其大小取决于网络的拥塞程度,并且动态变化。
慢开始门限ssthresh:为了防止拥塞窗口cwnd的增长过大引起网络拥塞所设置的一个门限值。
|------|----------------------------|--------------|
| 拥塞控制 | 说明 | 特点 |
| 慢开始 | 每经过一个传输轮次,cwnd值就加倍 | 从小到大逐渐增大发送窗口 |
| 拥塞避免 | 每经过一个传输轮次,cwnd值就加1 | 让cwnd值缓慢增大 |
慢开始门限ssthresh用法:
当cwnd****<**** ssthresh:使用慢开始算法
当cwnd****≥**** ssthresh:使用拥塞避免算法
|------|----------------------------------------------------------|
| 拥塞控制 | 说明 |
| 乘法减小 | 只要出现超时(即可能有拥塞),则ssthresh减半(当前cwnd值的一半),同时执行慢开始算法 |
| 加法增大 | 执行拥塞避免算法,使cwnd值缓慢增大 |
快重传:接收方每收到一个失序报文段后就立即发出重复确认ACK,若发送方一连收到三个重复确认,就会立即重传对方尚未收到的报文段。因此能尽早重传未被确认的报文,而不是等待超时。
快恢复:当发送方连续收到三个重传确认ACK时,就执行乘法减小算法,把门限值减半****(**** 当前cwnd值的一半 ) ,同时把cwnd的值设为减半后的门限值,并执行拥塞避免算法。
传输层端口号
端口取值:0~65535;作用:确定具体的上层应用进程(端口寻址)
端口分类:熟知端口:0~1023;登记窗口:1024~49151;客户端口:49152~65535
|---------|----------------------|---------|----------------|
| 端口 | 服务 | 端口 | 服务 |
| TCP 20 | FTP文件传输协议(数据) | UDP 53 | 域名服务器(DNS) |
| TCP 21 | FTP文件传输协议(控制) | UDP 67 | DHCP(服务端) |
| TCP 22 | SSH安全外壳协议 | UDP 68 | DHCP(客户端) |
| TCP 23 | Telnet终端仿真协议 | UDP 69 | 简单文件传输协议(TFTP) |
| TCP 25 | SMTP简单邮件发送协议 | TCP 143 | IMAP3因特网信息访问协议 |
| TCP 110 | POP3服务器(邮箱接收服务器) | UDP 161 | SNMP(轮询) |
| TCP 80 | 超文本传输协议(HTTP) | UDP 162 | SNMP(陷阱) |
| TCP 179 | BGP路由协议 | TCP 443 | 安全超文本传输HTTPS |
| UDP 500 | isakmp互联网安全关联和密钥管理协议 | UDP 520 | RIP路由协议 |
QUIC协议(快速UDP)
特点:快速连接建立;无队头阻塞的多路复用;无歧义重传;支持连接迁移;前向纠错(FEC)(额外带宽消耗)
应用层协议
常见协议:
DNS协议:实现域名解析出IP地址
DHCP协议:实现主机地址动态分配
HTTP协议:实现WEB访问
FTP协议:实现文件传输服务
电子邮件协议:实现电子邮件传输的协议
Telnet协议:实现远程登录的协议
DNS协议
名称解析:
Hosts文件
主机本地文件
手动添加名称和IP地址的映射关系
更新困难
DNS系统
客户端/服务器模式
是一个树状 层次的联机分布式数据库系统 ,名称到IP的解析工作可以由系统中的多台域名服务器共同完成,同时主机名称(域名)也采用树状结构
域名结构
最大的域是根域 (最高级别),根域名用". "表示。每一级域名都由英文字母 、数字组成,不区分大小写,但长度一般不超过63字节,一个完整的域名长度不能超过255字节
接入因特网中的主机或服务器等设备都可以有一个唯一的完全合格的域名
层次结构:
根域-顶级域名-二级域名-三级域名-四级域名
域名空间的结构就像是一棵倒过来的树(也叫分层结构)
注意:域名中还可以采用连接符 ---,但不能在一个域名的最前面或最后面
|----------|-------------------------------|
| DNS | 说明 |
| 传输层 | UDP 53号端口和TCP 53号端口 |
| 功能 | 实现域名到IP的映射,主机hosts文件也可以实现域名解析 |
| 特点 | 树状层次的联机分布式系统 |
| 域名的组成 | 字母、连接符、数字 |
| 优先级最高的域名 | 根域 |
域名解析
功能 :实现将域名 转换为对应的IP地址
DNS在解析时传输层采用UDP协议 ,默认端口号为53
服务器类型:
辅助域名服务器:主域名服务器的备份
转发域名服务器:负责所有非本地域名的查询,当设置了转发器时,会把查询请求发送给转发域名服务器而非根域名服务器
缓存域名服务器:只用于缓存的DNS服务器,没有自己的区域数据库文件
本地域名服务器:即主机的TCP/IP属性中设置的DNS服务器。主要负责某个区域的域名解析,离DNS客户端近。也称为主域名服务器/权威域名服务器
查询方式:
****递归查询:****A问B,B问C,C问D......
****迭代查询:****A问B,A问C,A问D......
|------|-----------------------|
| 查询方式 | 说明 |
| 迭代 | 告知请求者下一步应该找谁 |
| 递归 | 代替请求者进行查询工作,并返回最终解析结果 |
++++查询顺序:本地缓存-host表-DNS服务器++++
对象类型与资源记录
|-------------|---------------------------------------------------------|
| 资源记录 | 说明 |
| SOA(起始授权机构) | 权威记录的开始、定义了该区域中的哪个名称服务器是权威名称服务器 |
| NS(域名服务器) | 表示该区域的域名服务器(包含SOA中指定的主服务器和辅助服务器) |
| A(主机) | 列出了区域中域名到IPv4地址的映射 |
| AAAA(主机) | 列出了区域中域名到IPv6地址的映射 |
| PTR(指针) | PTR记录把IP地址映射到域名 |
| MX | 邮件交换记录,指向邮件服务器地址,MX记录有优先级的概念,优先级0-99,数字越小,优先级越高 |
| CNAME(别名记录) | 基于A记录的主机,作出一个别名 |
DHCP协议
连接网络的计算机需配置的项目:
IP地址;子网掩码;网关地址;本地DNS服务器地址
工作过程(首次接入网络):

工作过程(非首次接入网络):

分配过程中的异常:
若由于DHCP服务器故障,或线路故障导致客户端主机迟迟未能获得DHCP服务器分配的IP地址,则客户端会在计时器到时前,一共重发4次DHCP的地址租用请求报文,如果始终未能获得IP地址,则主机操作系统会给自己分配一个169.254.0.0/16网段的一个地址
当客户端发现服务器分配的IP地址无法使用(如IP地址冲突时),将发出DHCP DECLINE 报文,通知服务器禁止使用该IP地址
基本分配步骤:
发现阶段DHCP DISCOVER(广播)
提供阶段DHCP OFFER(单播/广播)
选择阶段DHCP REQUEST(广播)
确认阶段DHCP ACK(单播/广播)
客户机收到DHCP ACK报文前,始终使用0.0.0.0地址
DHCP中继
功能:实现为不同网段的主机分配IP地址
查看主机获得的地址
ipconfig /all :显示本机TCP/IP配置的详细信息。
ipconfig /release :DHCP客户端手工释放IP地址。
ipconfig /renew :DHCP客户端手工向服务器刷新请求(重新向DHCP服务器申请IP地址)
DHCP snooping
功能:抵御针对DHCP的各种攻击,一般部署在接入层交换机上
主要防御机制:信任端口;DHCP snooping绑定表
端口:可设置为trust或untrust
HTTP协议
用于在因特网上传输web页面的应用层协议,采用TCP ,端口号80
URL(统一资源定位符):
一般形式:http://<主机>:端口/<路径>/文件名
HTTP通信过程

访问过程:
浏览器分析超链接指向页面的URL
浏览器向DNS请求解析域名指向的IP地址
域名系统DNS解析出服务器的IP地址
浏览器与服务器建立TCP连接
浏览器发出取文件命令
服务器给出响应,把文件发给浏览器
TCP连接释放
浏览器显示文件中的所有文本
常用请求方法:
|----------|-----------|-------|
| HTTP请求方法 | GET | POST |
| 缓存 | 能 | 否 |
| 历史 | 保留在浏览器历史中 | 不会被保存 |
| 长度限制 | 有,默认1024B | 无 |
| 可见性 | URL中可见 | 不会显示 |
| 安全性 | 不安全 | 安全 |
HTTP1.1开始支持持久连接、管道机制
HTTP2.0二进制协议、多工、头信息压缩、服务器推送
HTTP3.0基于QUIC协议
FTP协议
功能:用于在远程服务器和本地主机之间传输文件
支持匿名访问,用户名为"anonymous"
两个TCP连接:FTP控制连接 和FTP数据连接
主动方式 :默认方式,FTP服务器主动 使用TCP20端口与客户端建立数据通道,完成数据传输
被动方式 :由客户端主动发起数据通道的连接
无论主被动,控制连接均由客户端主动建立
原理及模式
|-------|-------|-------------|-----------|
| FTP协议 | 控制连接 | 数据连接 | 支持匿名访问 |
| 主动模式 | TCP21 | TCP20 | anonymous |
| 被动模式 | TCP21 | 高位端口(≥1024) | anonymous |
| 相关命令 | get:下载 put:上传 |||
电子邮件协议
格式:user@server.com
User:代表用户邮箱账号;
@:分隔符;
server.com :用户邮箱的邮件 接收服务器域名
常见电子邮件协议:
IMAP邮件访问协议 :也是接收邮件 的协议(端口号143 ),是POP3的替代版本,区别在于POP3允许将邮件从邮件服务器下载到本地主机进行查看和编辑,这样用户在本地主机上对邮件的操作就不会反馈到邮件服务器上,而使用IMAP用户对邮件的操作都会反馈到邮件服务器上。
MIME 即多用途互联网邮件扩展:图像、声音、动画 等二进制文件都可方便的通过电子邮件来进行传递,极大地丰富了电子邮件的功能。
|----------------------|--------------|-------------|-------------|
| 邮件协议 | 功能 | 传输层协议 | 端口号 |
| SMTP简单邮件传输协议 | 发送邮件 | TCP | 25 |
| POP3邮局协议 | 接收邮件 | TCP | 110 |
SMTP传输报文采用ASCII格式表示
Telnet协议
传输层使用TCP 协议,默认端口号为23
使用NVT格式传输字符
使用命令:telnet IP地址
|--------|-------|--------|-----|
| 远程登录协议 | 传输层 | 安全性 | 格式 |
| Telnet | TCP23 | 低,明文传递 | NVT |
| SSH | TCP22 | 高,加密传递 | |
互联网新技术
大数据 :巨量资料,分为三层:数据存储,数据处理,数据分析;对数据进行分析产生价值
云计算 :分布式计算的一种,服务模式:公有云、私有云、混合云
云管理网络优势:安全可靠、支持多种认证;即插即用、极简结构、自动升级;大数据分析;云网规、云管理、云排障
物联网 :实现任何时间、任何地点,人、机、物的互联互通
特点:广覆盖、大连接、低功耗、低带宽、低成本
区块链 :起源于比特币,是一种去中心化 的分布式账本数据库
特点:去中心化、匿名性、透明性、不可篡改
区块链的不可篡改性由工作量证明机制与共识机制共同保证,最长的链条才被公认。篡改会产生链条分叉
SDN软件定义网络 :网络虚拟化的一种实现方式,核心技术是将网络设备的控制平面与数据平面分离开来,从而实现网络流量灵活控制,使网络更加智能,架构包含:控制层、转发层、应用层
价值:网络业务快速创新;简化网络;网络设备白牌化;业务自动化;网络路径优化和流量调优
人工智能
芯片类型:GPU图形处理器、FPGA现场可编程门阵列、ASIC专用集成电路、TPU张量处理器、NPU神经网络处理器、CPU中央处理器
模型:卷积神经网络CNN、循环神经网络RNN、生成对抗网络GAN、转换器、强化学习RL、预训练模型、autopilot