网络协议总复习
第一章——TCP/IP协议
1.为什么要进行网络互连?
- 没有一种单一的网络硬件技术可以满足所有的要求
- 用户期待一种通用的互连
- 网络互连的目的就是要隐藏底层网络硬件的细节,同时提供一般的服务通信
2.网络互联的方式
- 应用级互连:应用程序直接建立在物理网络上,无任何中间协议。
- 缺点:
- 每台机器都要有所需应用程序
- 硬件变动后,应用程序也要变动
- 代码重复
- 缺点:
- 网络级互连:在低层网络技术与高层应用程序之间增加一个中间层软件,屏蔽硬件细节,向用户提供通用网络服务。
- 优点:
- 系统更加灵活
- 出现新的网络技术,只要修改或者增加新的网络层软件
- 把数据通信活动从应用程序中分离出来,允许中间的计算机直接处理网络通信
- 优点:
3.为什么需要TCP/IP
不同网络通信会出现下面的问题:
- 不同的网络地址不同
- 不同的网络数据格式不同
解决办法:
引入IP层,屏蔽不同物理网络技术的差别。由路由器来对不同网络进行连接,进行地址和数据格式的转换。
4.数据传输过程中选路、控制和可靠性问题
- 选路:路由协议(RIP、OSPF、BGP等)
- 控制:ICMP
- 可靠性:TCP/UDP传输层协议
5.TCP/IP分层模型
分层的优点:简化问题,分而治之,有利于软件升级换代
分层缺点:效率低
- 处理效率低:各层之间相互独立,都要对数据进行分别处理
- 通信效率低:每层处理完毕都要增加一个头结构,增加通信数据量
分层原则:对等层通信,即信宿机和信源机对等层收发的数据完全一致。
模型结构
- 应用层:提供通用的应用程序
- 传输层:提供程序间端到端的通信
- 格式化信息流
- 提供可靠传输
- 识别不同应用程序
- IP层:负责点到点通信
- 处理TCP分层发送请求
- 为数据报寻径
- 处理ICMP报文
- 组播服务
- 网络层接口:接收IP数据报并通过选定的网络发送
6.列出TCP/IP参考模型中各层间的接口数据单元(IDU)
- 应用层/传输层:应用层报文
- 传输层/IP层:TCP报文或UDP分组
- IP层/网络接口层:IP数据报
- 网络接口层/底层物理网络:帧
7.路由器的基本功能
- 连接不同的物理网络
- 维护、更新路由表
- IP数据报的选路转发
第二章——点到点协议PPP
1.PPP协议
PPP协议的概念
- PPP协议即点到点协议
- PPP协议属于网络接口层
- PPP协议主要用于拨号接入因特网的场合
- PPP协议的对等端是客户和ISP
PPP协议应满足的条件(功能)
- 封装成帧
- 支持多种类型链路
- 检测链路状态
- 差错控制
- 设置最大传送单元(MTU)
- 支持多种网络层协议
- 支持数据压缩协商
- 简单
PPP协议组成
- HDLC封装:
- PPP的封装格式类似HDLC
- 定义了将IP数据报封装到串行链路的方法,明确地定界一个帧的结束和下一个帧的开始,其帧格式允许进行错误检测。
- 数据链路控制LCP:负责线路建立、配置、测试和选项协商,并在它们不再被需要时,稳妥地把它们释放。
- 网络控制协议NCP:建立和配置不同的网络层协议
- 认证协议PAP/CHAP:用接入ISP时进行客户身份验证
PPP协议流程
- 发起方(客户)利用LCP配置请求报文,配置链路参数(比如认证协议,最大传送单元,压缩协议等),创建PPP链路;
- 回应方(ISP)若同意则返回确认报文
- 发起方利用PAP或者CHAP进行身份验证
- 回应方验证身份成功后返回确认报文
- 发起方利用NCP协商网络层协议
- 回应方返回确认,其中包含分配给发起方的IP地址
- 发起方发送LCP终止链路请求
- 回应方返回确认,链路终止
2.PPP协议帧格式——HDLC封装
3.链路控制协议LCP和网络控制协议NCP
LCP流程
- 发起方向接收方发送Request报文并携带协商参数选项
- 若接收方对Request报文中每个选项都能识别并接受,则回应ACK报文
- 若接收方对Request报文中每个选项都能识别但只有部分能接受,则回应NAK报文
- 若接收方对Request报文中部分选项不能识别,则回应Reject报文
NCP流程
- 和LCP一样
4.口令认证协议PAP和询问握手认证协议CHAP
PAP流程
发生时机:仅在建立连接的阶段发生
流程:
- 完成链路连接阶段之后,被验证方(发起通信的一方)将自己的用户名和口令发送给验证者。
- 认证端检查是否有此用户和口令是否正确,正确则返回一个ACK报文,验证成功进入下一阶段。
CHAP流程
发生时机:建立连接时和连接建立之后的任何时间
流程:
- 链路建立阶段结束之后,认证者向对端发送“challenge”和用户名信息
- 对端收到“challenge”后使用之前双发协商好的一种算法(哈希算法)生成应答后送回。
- 认证者收到应答后将和本端通过哈希算法计算的结果进行检查,如果匹配则认证成功,否则终止连接。
PAP和CHAP的优缺点
- PAP简单,要求将密钥信息在通信信道中明文传输,因此容易被监听而泄露, 安全性差
- CHAP相对安全,但是开销大, 且需要通信双方首先共享密钥
第三章——Internet地址及地址解析协议
1. Internet地址
为什么要进行编址?:统一思想,屏蔽物理地址差异
什么是地址?:是一种标识符
标识哪些东西?:名字、地址、路径
Internet地址要具备哪些性质?:能地位、要唯一、好计算
物理地址能作为Internet地址吗?:不能,物理地址具有多样性和多义性*(mac的话不同厂商的规范都不一样 mac地址很难记住的,而且和硬件相关,ip地址和硬件不相关)*
TCP/IP Internet 编址方式如何?:IP地址
IP地址
地址类型
- A类:0——8位网络号。
- A类网络个数:
- 每个A类地址可以连接主机个数:
- B类:10——16位网络号
- B类网络个数:
- 每个B类地址可以连接主机个数:
- C类:110——24位网络号
- B类网络个数:
- 每个B类地址可以连接主机个数:
- D类:1110——组播地址
- E类:11110——保留未用
特殊地址类型
- 网络地址:主机号全0
- 广播地址:主机号全1
- 有限广播地址:32位全1
- 回送地址:
127.*.*.*
,通常为127.0.0.1
IP地址实质:实质上标识的是到一个网络的一条连接
网络字节顺序
- 小端点机:端点机高位存放地址低位
- 大端点机:端点机高位存放地址高位
- 发送数据时发送端点机的高位数据
IP编制的缺陷
- 限制网络的平滑升级:如果号码空间不足的话,必须要升位,并改变号码的位长
- 对主机的移动性支持不够:标识设备的IP仅仅标识了设备位置,并没有标识设备本身
2.地址转换——ARP协议
为什么要进行地址转换?:必须根据IP地址找到物理地址才能进行实际的数据传送
如何进行地址转换?:
- 直接映射:空间较小且容易配置的物理地址
- 动态绑定:空间巨大且固定的物理地址
ARP步骤
广播请求,单播响应:
- 源端A广播包含目标B的IP地址的ARP请求报文,请B回答自己的物理地址;
- 网络上的主机将与自身的IP地址比较,若相同,则转步骤三,否则忽略;
- B将封装在ARP应答报文中,之后发送给A;
- A从应答报文中提取和,从而获得和之间的映射关系
ARP cache——提高ARP效率
- 设置ARP cache,存放最近解析出来的IP/MAC对
- 请求解析时,把自己的IP/MAC地址也放在报文中
- 收到ARP请求的所有主机都缓存其中的IP/MAC
- 主机入网时,主动广播它的IP/MAC
一条IP/MAC映射记录失效怎么办?:使用超时机制(20分钟),如果在超时到来前都没有使用某条记录,则删除该记录
3.反向地址转换——RARP
无盘工作站启动时,如何确定它的IP地址?:用它的物理地址在网上广播,请求RARP服务器告诉IP地址。
- 无盘工作站所在网络必须有RARP服务器
4.路由器转发流程
第四章——互连网协议IP
IP层特点
- 不可靠:分组可能丢失,乱序等,不做确认
- 无连接:每个分组都独立对待
- 尽力投递:不随意放弃分组
- 点到点传输
IP层主要功能
- 无连接的数据报投递
- 数据寻径
- 差错与报文控制
IP数据报的分片控制
分片
为什么要数据分片?:每个网络有固定的MTU,若IP报文长度大于MTU,则需要进行数据分片
如何分片?:
- 如何标识同一个数据报的各个分片?
- 每个IP数据报有唯一值的标识字段(ID),标识同一个数据报的各个分片
- 如何标识同一个数据报分片的顺序?
- 片偏移量字段标识该分片在原数据报中的位置
- 如何标识同一个数据报分片的结束?
- MF字段为0时表示为最后一片分片,为1时不是最后一片
分片首部如何设置?:第一个分片的首部复制原IP数据报的首部,并修改总长度字段,之后的分片首部重新设置(如ID、片偏移量,校验和等需要重新设置)。
分片重组
在哪重组分片?:在目的主机处重组分片
- 优点:
- 不会反复分片/重组
- 各分片可独立选路
- 路由软件简化
- 缺点:
- 可能浪费带宽
- 丢失可能性增加
为什么需要存储第一个分片报头的内存缓冲区:该分片的首部将作为重组后的数据报的首部
如何判断一个数据报是否需要重组:当MF字段和片偏移量都为0时表明不需要重组
IP只对数据报首部计算校验和,不对数据计算校验和,有什么优缺点:
- 优点:
- 简化IP软件的计算量,提高处理速度.
- 某些高层协议已经有计算校验和的功能, 可以避免重复劳动
- 缺点:
- 高层协议需要保证可靠性,必须实现校验功能
对于包含记录路由选项的数据报进行分片时,是否应该将该选项复制到各分片中?为什么:不必, 每个分片独自选路,即便记录,每个分片记录的信息也不同.
为什么中间路由器转发数据报之前要重新计算校验和:因为路由器对数据报进行了处理,部分字段值发生了变化:TTL 值减‘1’,包含选项时选项的内容也要发生更改。因此,必须针对变化后的内容重新计算校验和。
为什么一个数据报在传输过程中可能会被多次分片:在 IP 数据报的投递过程中可能会经过多个物理网络,每个网路的 MTU 不尽相同。只要转发过程中后一个网络的 MTU 小于之前网络的 MTU,数据报就会被分片。
IP数据报的选路
路由表的特殊条目:
- 默认路由:信息隐藏、保持路由表更小的技术。
- 特定主机路由:为某个指定主机在路由表中单设一项。
路由选择依据:
- 网络负载
- 服务类型
- 报文长度
选路总控算法:
1 | 从数据报中提取目的IP地址D,并计算网络前缀N; |
IP软件对数据报的处理:
- 主机
- 主机不转发数据报。
- 是自己的:交上层;
- 不是自己的:丢弃。
- 路由器
- 若是自己的,交上层;
- 若是邻网,直接投递;
- 其它的转发。
第五章——Internet控制报文协议ICMP
为什么需要ICMP报文?它的作用是什么?
- 数据报在传送过程中可能会遇到各种异常:需要ICMP报文提供差错报告
- IP层需要控制功能,例如拥塞和差错控制:需要ICMP报文传递网络控制信息
为什么ICMP要把传递控制报告和提供差错报告两者合二为一?
- 控制和差错报告都是特殊报文
- 差错报告与差错控制总是密切相关的
ICMP工作机制?
- 路由器(主机)向其他路由器(主机)发送ICMP报文
- 只能向源端路由器报告差错,不能向中间路由器报告差错
- 路由器收到 IP 数据报时,如果该数据报不包含记录路由、源路由选项,则不体现任何中间路由器信息,仅能体现源IP信息。因此,必须向源站报告差错。此外,路由器发现数据发生差错时,无法判断究竟是在投递过程中的哪一步发生差错,因此,仅能向源站报告差错。
ICMP和IP的关系
- ICMP协议是IP协议的一部分
- 功能不独立,是IP的补充
- ICMP报文封装在IP数据报中传送(数据部分)
- 不是上层协议赖以存在的基础
一些不产生ICMP报文的情况:
-
如果携带ICMP报文的IP数据报出现差错,则不应产生新的ICMP报文
- 防止无休止地循环发送差错报告报文
-
对于分片的数据报,如果不是第一个分片,则不产生ICMP差错报文
- 因为IP数据包的校验和只检验首部不检验数据部分,(每个分片首部除部分参数都是一样的)所以知道第一个分片的首部就足够了。
-
对于具有多播地址的数据报,不产生ICMP差错报文
- 不知道具体是发往哪个地址的报文出现错误
-
对于具有特殊地址(如127.0.0.0或0.0.0.0)的数据报,也不产生ICMP差错报文
三类ICMP报文
1.ICMP请求与应答报文
1.回送请求与应答报文
- 可测试网络的可达性
- 可查看记录路由选项
- 可指定松散源路由和严格源路由
2.地址掩码请求/应答报文
- 获得子网掩码
3.时戳请求/应答报文
-
时钟同步与传送时间估计
-
网络时间协议NTP
4.路由器恳求和路由器通告报文
- 路由器恳求报文由主机主动发送,寻找默认路由器
- 1.路由器通告报文是对恳求报文的回应;**2.**路由器定期向相邻网络主机发送通告报文,告诉可使用的路由器
- 为什么路由器通告报文的发送周期是10分钟,而一条路由的存活时间是30分钟?:
- 考虑到通告报文可能丢失,存活时间必须大于发送周期
2.ICMP差错报告报文
- 只向源站提供报告,本身不处理差错
- 差错报告报文作为一般数据传输
- 差错报告报文出错时,放弃数据报
3.ICMP控制报文
- 1.源站抑制报文:
- 抑制信源发出数据报的速率,解决拥塞控制
- 2.重定向报文:
- 主机的路由表如何更新:当路由器发现一台主机使用非优化路由时,向主机发一重定向报文,请求主机改变路由
问题
路由器是否应该优先处理ICMP报文:
- 不。ICMP 报文封装在 IP 报文中,和其它 IP 报文一样在路由器的队列中进行排队,路由器则按照先入先出的规则处理报文。对路由器而言,与优先权有关的不是 IP 数据报中封装的报文类型,而是 IP 首部中的 QoS 字段。
在ICMP目的站不可达报文中,有一类错误是“需要分片(但DF置位不能进行分片),基于此,请给出一个路径MTU的测量算法:
- 发送 IP 数据报并强制该数据报不能分片,如果收到该类错误报告,说明该报文尺寸过大,则继续调小尺寸并继续发送该种 IP 数据报;如果未收到该类报告,说明尺寸偏小或正好,此时可以增大 IP 数据报的尺寸。为了较快地逼近实际值,可以首先将第一个探测报文的尺寸设置为最大 IP 数据报长度,之后利用二分算法的思想调整探测报文尺寸。
第六章——用户数据报协议UDP
描述一个进程的标识是什么?
通信5元素:
- 源IP地址和目的IP地址:区分不同主机
- 源端口号和目的端口号:区分不同主机中的不同进程
- 协议:区分UDP协议还是TCP协议
什么应用适合使用UDP
- 不太关系数据丢失,如传输视频
- 每次发送少量的数据
- 有自己的全套差错控制机制
- 实时性要求较高,差错控制要求不高
既想用UDP又想可靠传输:
- 应用层自己实现可靠性
UDP的功能和特点
- 提供无连接服务,简单快捷
- UDP的主机不需要维持复杂的连接状态表
- UDP报文只有8个字节的首部开销。
- 网络出现的拥塞不会使源主机的发送速率降低
问题
传输层的作用:
- 承上启下, “加强”和“弥补”通信子网服务
- 加强,指提高服务的可靠性
- 弥补:对服务类型要提供端到端进程通信
- 特色:提高可靠性
利用端口号而不是进程标识符来指定一台机器的目的进程,有什么优点 :
- 进程标识符是动态变化的,每次应用程序重启都会对应不同的标识符,而端口号是相对固定的。网络通信中的客户端需要主动与服务器建立连接,其连接的目标必须是固定的,因此,必须用端口号来标识
为什么UDP校验和独立于IP校验和?你是否反对这样一个协议:对包括UDP报文在内的整个IP数据报使用一个校验和:
- IP 仅针对首部计算校验和,UDP 报文封装在 IP 数据报中作为数据报的数据区,因此单独计 算校验和。这样整个 IP 数据报都可以被校验。
- 反对。IP 和 UDP 属于不同的协议模块和层次,合并校验不利于区分错误来源。
假定一台主机连接在以太网上,它要发送总长度8192字节的UDP报文。该报文最终被分成多少个IP数据报投递:
- 以太网 MTU 为 1500 字节。假设 IP 不使用选项,则其长度为20字节,所以预留给 UDP 的长度为 1480 字节。所以最终的分片数为|8192/1480|+1=6,其中“||”标识取整。
从网络安全的角度看,使用知名端口号会不会存在安全风险:
- 单看这种行为,不会存在风险。但是知名端口与一些知名应用相关,这些应用可能存在安全缺陷,比如协议本身有缺陷,或者实现有安全漏洞。因此,黑客攻击的第一步往往是实施端口扫描,为随后的攻击步骤奠定基础。
第七章——传输控制协议TCP
要实现可靠的数据流传输,要解决哪些问题?
- 可靠性
- 防丢失:确认与重传
- 防重复:报文段序号
- 传输效率和流量控制:滑动窗口机制
- 拥塞控制:加速递减与慢启动技术
- 建立连接:三次握手协议
- 关闭连接:改进的三次握手协议
1.可靠性
1.1防丢失——带重传的肯定确认技术
传输过程:
- 发送方向接收方发送报文段,并创建该报文段的重传定时器(重传时间RT0)
- 接收方收到数据后向源站发送确认(ACK)
- 接收方若在定时器到期前收到ACK则撤销定时器
- 否则重传报文段并复为定时器
如何设置定时器时限:
- RTT:往返时间
- 自适应重传算法:
- :RTT的估计值
- :本次测量的RTT值
- :定时时限
1.2防重传——可稍带的累计确认技术
- 为每一分组赋值序号
- 确认时指明确认哪个分组
- 序号保证分组的顺序
2.传输效率和流量控制——滑动窗口机制
一般滑动窗口机制
允许发送方不必等确认到来就可继续发送下面的分组,但规定一个上限。若多个分组的确认未到时,则暂停发送。
窗口大小可变技术——流量控制
- 目的主机缓冲区变小而不能接收源主机更多的数据时,就要进行流量控制。
- 可随时改变窗口大小。目的主机在确认时,还向源主机告知目的主机接收缓冲区的大小。
- 使用0窗口通告停止所有传输,除了紧急数据和窗口试探报文
死锁问题
问题:
- 发送方接收到0窗口通告后停止传输数据,等待接收方发送窗口不为0的确认报文;
- 当接收方发送窗口不为0的确认报文丢失时,导致接收方死锁
解决:
- 持续计时器
- 当发送方接收到窗口为0的确认,停止发送数据并启动持续计时器
- 当持续计时器到期,发送窗口试探报文
- 接收方返回的确认报文中窗口值不为0则开始传输数据,否则复为持续计时器,继续等待
糊涂窗口综合征问题——传输效率
发送端的应用程序产生数据很慢,或者接收端的应用程序消耗数据很慢,或者两者都有。不管是哪种情况,都使得发送数据的报文段很小,引起操作效率的降低
- 发送方出现症状:
- Nagle算法
- 接收方出现症状:
- Clark算法
- 推迟确认
3.拥塞控制
所谓拥塞
交换节点(如路由器)数据报负载过重的现象
拥塞控制技术
- 拥塞窗口cwnd
- 加速递减技术
- 慢启动技术
- 快重传
- 快恢复
1.拥塞窗口
- 接收方承认的窗口(允许窗口/通告窗口awnd)
- 拥塞窗口cwnd
- 增减以MSS为单位
- 初始时MSS=1
- 有效窗口:min(cwnd,awnd)
- 拥塞窗口是发送方的流量控制,通告窗口是接收方的流量控制
2.慢启动
- 指数递增:每次成功发送1个MSS长度的报文段,则发送方拥塞窗口加倍;
- 线性递增:增长到临界值后,每次增加1个MSS(拥塞避免)
3.加速递减
- 指数级递减:出现超时重传时,将临界值设为当前拥塞窗口的1/2,拥塞窗口恢复为1个MSS大小
4.快重传和快恢复
- 接收方收到三条重复的确认报文段后,就立即重传确认报文段后面的报文
- 为了保险起见,防止可能真的发生了网络拥塞,所以采用了快恢复算法。快恢复的执行就是将ssthresh设置为减半的大小。CWND设置和ssthresh一样,然后执行拥塞避免算法。
4.TCP连接的建立和关闭
三次握手——连接建立
连接建立时需要协商的内容
- 同意连接协商,做好传数据的准备
- 协商各自报文段ISN(初始序列号)
- 协商MSS
过程:
- 客户端,发送(SYN seq = x)
- 服务器,接收SYN,发送(SYN seq=y, ACK x+1)
- 客户端,接收SYN+ACK, 发送(ACK y+1)
- 服务器, 接收ACK
四次握手——连接关闭
过程:
- 半关闭阶段是当A没有数据向B发送时,A向B发出释放连接请求,B收到后向A发回确认。这时A向B 的TCP连接就关闭了。进入半关闭状态。
- 但B仍可以继续向A发送数据。当B也没有数据向A发送时,这时B就向A发出释放连接的请求,同样,A收到后向B发回确认。至此B向A的TCP连接也关闭了。当B收到来自A的确认后,就进入了全关闭状态。
问题
在什么样的时延、带宽、负载以及报文丢失的情况下,TCP没有必要重传大量的数据?
- 时延低且稳定,带宽高,负载低,分组丢失率低 的情况下。
主机A和B使用TCP通信。在B发送过的报文段中,有这样两个先后到达的报文段:ACK=120和ACK=100,即前一个报文段的确认序号大于后一个。试解释原因
- ACK=120 的报文 比 ACK=100的先到。虽然ACK=100 是先发出来的,但是路径开销比ACK=120 的报文要大。
建立TCP连接时,通信双方要交换ISN。ISN可各自随机选取,但不能为1.请给出本章所讨论的原因以外的其他原因。
- TCP初始化序号不能是一个固定的值,因为这样容易被攻击者猜到后续序号,从而被攻击
你认为TCP协议软件应该自动关闭长时间的空闲连接(未传送数据)吗?
- TCP协议中有长连接和短连接之分。短连接在传输玩数据后会自动断开,而长连接还会保持一段时间连接,即存活定时器功能。
总结TCP使用的窗口及时钟。
- 滑动窗口:允许发送方不必等确认到来就可继续发送下面的分组,但规定一个上限。若多个分组的确认未到时,则暂停发送。
- 拥塞窗口:只要网络没有出现拥塞,拥塞窗口就再增大一些,以便把更多的分组发送出去。但只要网络出现拥塞,拥塞窗口就减少一些,以减少注入到网络中的分组数。实际的发送窗口为拥塞窗口和通告窗口中的较小值。
- 重传计时器:TCP为了保证数据可靠传输,就规定在重传的“时间片”到了以后,如果还没有收到对方的ACK,就重发此包,以避免陷入无限等待中。
- 坚持计时器:当发送TCP收到窗口大小为0的确认时,就启动坚持计时器。当坚持计时器期限到时,发送TCP就发送一个特殊的报文段,叫做探测报文。探测报文段醒接收TCP:确认已丢失,必须重传。
- 保活计时器:每当服务器收到客户的信息,就将计时器复位。通常设置为两小时。若服务器过了两小时还没有收到客户的信息,他就发送探测报文段。若发送了10个探测报文段(每一个相隔75秒)还没有响应,就假定客户出了故障,因而就终止了该连接。
时间等待计时器:时间等待计时器用于TCP"四次挥手”阶段。当客户端向服务器发送最后一次确认报文时,就设定一个时间等待计时器,等待2MSL时间后再结束连接。
主机甲和主机乙间已建立一个TCP连接,主机甲向主机乙发送了两个连续的TCP段,分别包含300字节和500字节的有效载荷,第一个段的序列号为200,主机乙正确接收到两个段后,发送给主机甲的确认序列号是什么?
- 第一次确认序号:200+300=500
- 第二次确认序号:500+500=1000
一个TCP连接总是以1KB的最大段发送TCP段,发送方有足够多的数据要发送。当拥塞窗口为16KB时发生了超时,如果接下来的4个RTT(往返时间)时间内的TCP段的传输都是成功的,那么列出接下来4个RTT时间拥塞窗口大小的变化情况。
- 1KB 》2KB
- 2KB 》4KB
- 4KB 》8KB
- 8KB 》9KB
主机甲和主机乙之间已建立一个TCP连接,TCP最大段长度为1000字节,若主机甲的当前拥塞窗口为4000字节,在主机甲向主机乙连接发送2个最大段后,成功收到主机乙发送的第一段的确认段,确认段中通告的接收窗口大小为2000字节,则此时主机甲还可以向主机乙发送的最大字节数是多少?阐明原因
- 1000字节。第一段确认段通告缓存还有2000字节,此时第二段最大段确认还未接收,需要预留第一段的缓存1000字节。则还可以发送2000 - 1000 = 1000字节的最大字节数。
主机甲和主机乙新建一个TCP连接,甲的拥塞控制初始阈值为32 KB,甲向乙始终以MSS=1 KB大小的段发送数据,并一直有数据发送;乙为该连接分配16 KB接收缓存,并对每个数据段进行确认,忽略段传输延迟。若乙收到的数据全部存入缓存,不被取走,则甲从连接建立成功时刻起,未发生超时的情况下,经过4个RTT后,甲的发送窗口是什么?阐明原因。
- 初始:awnd=16KB,cwnd=1KB,发送窗口=min(awnd,cwnd)=1KB
- 第一个RTT:awnd=15KB,cwnd=2KB,发送窗口=2KB
- 第二个RTT:awnd=13KB,cwnd=4KB,发送窗口=4KB
- 第三个RTT:awnd=9KB,cwnd=8KB,发送窗口=8KB
- 第四个RTT:awnd=1KB,cwnd=16KB,发送窗口=1KB
- 故此时发送窗口为1KB
什么是RTT?
- 往返时延。是指数据从网络一端传到另一端所需的时间。通常,时延由发送时延、传播时延、排队时延、处理时延四个部分组成。
什么是TCP中的累计确认?
- 如果发送方发了包1,包2,包3,包4;接受方成功收到包1,包2,包3。那么接受方可以发回一个确认包,序号为4。那么发送方就知道包1到包3都发送接收成功,必要时重发包4,一个确认包确认了累积到某一序号的所有包。而不是对每个序号都发确认包。
TCP发现分组丢失有哪两种方法?
- 超时
- 接收到重复的确认
为什么TCP采用三次握手,而不是两次或四次握手?
- 不采用两次握手的原因:为了防止失效的连接请求报文段被服务端接收,从而产生错误。
- 三次握手就可以确保通信双方建立可靠的全双工连接,四次握手是不必要的。
第八章——Internet地址扩展技术
问题
要解决的问题
- IP地址不足,特别是B类地址不足
- 网络数目增长过快造成路由表急剧膨胀
解决办法
- 子网编址
- 超网编址和CIDR
- NAT
- 静态NAT
- 动态NAT
- PAT
1.子网编址
思想
从IP地址的主机部分借位用在网络部分,解决IP地址“主机号浪费,网络号缺乏”的问题
如何划分子网?如何确定子网数?
等长子网划分:
- 确定子网位数和主机数
- 子网数:
- 主机数:,减去了网络号和广播号
变长子网划分:看例题吧(36条消息) 变长子网划分VLSM_爱养身的程序员的博客-CSDN博客_变长子网划分方法
2.超网编址和CIDR
超网
- 超网(supernetting),也称无类别域间路由选择(CIDR)。CIDR消除了传统的A类、B类和C类地址以及划分子网的概念,CIDR使用各种长度的“网络前缀”来代替分类地址中的网络号和子网号,CIDR不再使用“子网”的概念而使用网络前缀,使IP地址从三级编址又回到了两级编址,即无分类的两级编址。
- IP=网络前缀+主机号
表示方法
- CIDR也使用“斜线记法”,即在IP地址后写上斜线“/”,然后写上网络前缀所占的位数(对应子网掩码中1的个数)。例如:192.168.1.0/22。网络前缀为22位,也代表掩码前22位为1
子网和超网的区别
- 通过左移子网掩码合并多个网段,右移子网掩码将一个网段划分成多个子网,使得IP地址打破了传统的A类、B类、C类的界限。
- 判断一个网段到底是子网还是超网,就要看该网段是A类网络、还是B类网络、还是C类网络,默认A类子网掩码/8,B类子网掩码是/16,C类子网掩码是/24。
- 如果该网段的子网掩码比默认子网掩码长,就是子网,如果该网段的子网掩码比默认子网掩码短,则是超网。
- [划分超网/子网的问题转贴]_洛晨光_新浪博客 (sina.com.cn)
网络地址转换NAT
作用
- 解决IP地址不足,多台内部机器共享一个外部IP地址
- 出于安全考虑,隐藏内部IP地址
静态NAT
- 一对一转换,每个内部IP地址对应唯一一个固定的外部IP地址
- 缺点:没有节省IP地址
动态NAT
- 多对多转换:将一组内部IP地址映射到一组外部IP地址(通常较少)。 映射关系动态建立
- 缺点:每台机器仍是一个外部IP地址。当同时要求外联的机器超过外部IP地址个数时,则不能满足需求
PAT端口地址转换
- 在ip地址的基础上,在加上端口号,加以区分。
- 如果端口号刚好也相同,则连端口号一起转换
问题
对一个C类网络地址,划分子网是否有意义?
- 有意义,可以将不同子网间的通信区分开来,方便不同子网独立工作、避免差错等
考虑一个B类网络号的定长子网划分,使它能适应至少76个网络。每个网络上能有多少台主机?
- 要有76个网络,则需要,从主机借7位长度
- 则每个子网可以有主机台主机
第九章——路由协议
路由协议解决的问题
- 如何获得路由表
路由表的建立和维护
- 静态配置:管理员手工配置和更新路由表
- 优点:节省路由器的处理时间、存储空间以及网络带宽
- 缺点:对于链路故障及拓扑结构变化的响应速度慢
- 适合拓扑稳定的小规模网络
- 动态路由信息交换:利用路由协议交换路由信息,并根据拓扑结构的变化动态更新路由表
- 优点:自动适应链路故障及拓扑结构的变化
- 缺点:耗费路由器的处理时间、存储空间以及网络带宽
- 适合大规模网络
选路
两个问题:
- 路径存在性:如何确保各个路由器维护信息的一致性?
- 不同路由器更新路由表的信息是一致的,使得它们对网络拓扑结构有着一致性的认识。
- 路径最优性:如何确定一条路径是最优的?
- 基于跳数
选路算法:
-
非自适应算法:
- 拓扑发生变化时,由管理员操作中心路由器,更新路由表
- 适用于规模小,拓扑结构变化少的网络
-
自适应算法:
-
矢量距离算法:
- 原理:以跳数作为度量值,通过交换路由表,计算出所有已知的最短路由,更新路由表
- 优点:效率高,算法简单
- 缺点:容易出现环路,收敛速度慢
- 原理:以跳数作为度量值,通过交换路由表,计算出所有已知的最短路由,更新路由表
-
链路状态算法——最短路径优先SPF
- 原理:通过交换链路状态,让AS中的每个路由器都有一张该AS的网络拓扑结构图
- 优点:具有良好的收敛性
- 缺点:具有较好的规模可扩展性
-
Internet路由体系
自治系统AS
AS(自治系统):
- 出于选路目的,处于一个管理机构控制之下的一组网络和路由器
AS的作用:
- AS自治的主要内容是选路自治,AS可自由地选择路由算法;
第十章——选路信息协议RIP
网关协议
- 内部网关协议:在AS内部范围使用,实现域内路由选择
- RIP
- OSPF
- 外部网关协议:在AS之间使用,实现域间路由选择
- BGP
RIP路由信息协议——距离矢量算法
路由信息的组成——三元组:
- 目的地址
- 最短路径
- 下一节点
路由信息表的生成:
- 每隔一个周期与相邻路由器交换全部的路由信息(路由表)
- 路由器的路由表在交换过程中不断完善、收敛,最终所有路由器都获得正确完整的路由表
RIP算法:
三个定时器:
- 跟新定时器30秒:用于广播路由
- 路由超时定时器180s:超时未收到相关报文,则认为路由无效
- 路由刷新定时器120s:某路由超时120s后从相应表项删除
RIP1的慢收敛问题:
- 由于链路发生故障,造成RIP选路环路问题,直到距离值达到距离极限
- 解决办法
- 简单分割范围法:不把关于某路由的信息传回给发送者。
- 抑制法:要求所有路由器在收到某个网络不可达的消息后,将相应表项的距离值设为16,并将此信息保留一段时间
- 带毒性逆转的分割范围法:当路由器向一个接口发送路由更新报文时,如果某个条目是从该接口获得的,则将该条目的距离设置为无穷大
- 触发更新法:一旦发现网络连接消失,就将改网络设置为不可达,并立即发送路由更新报文
RIP1的额外跳问题:
- 如果一个自治系统中既实用RIPv1,又使用其他内部网关协议,将会产生额外跳问题
RIP1不广播掩码问题:不能传播变长子网地址和CIDR型地址
RIP的缺点:
- 收敛速度慢,
- 支持的最大网络直径为15跳,
- 仅能以距离作为路由性能度量标准,
- 健壮性和可扩展性较差
第十一章——开放式最短路径优先OSPF
OSPF为什么不会产生路由循环?
- 每台OSPF路由器都维护一个全网一致的链路状态数据库,所以不会产生路由循环
OSPF的特点:
- 收敛速度快
- 不产生路由循环
- 体系化路由,降低开销
- 提供服务类型路由
- 负载均衡
- 提供安全性
- 适合大规模网络
为什么采用多区域技术:
- 当自治系统中路由器数目大量增加时,会导致链路状态数据库规模的急剧膨胀,使得路由维护及路径选择非常低效。因此,OSPF将一个大规模网络划分为多个易于管理的区域,从而缩小了交换链路状态数据的路由器群组规模
OSPF将一个自治系统划分为多个区域后,所有的路由器是否对网络拓扑结构有着相同的认识?
- 每个区域熟悉自己区域内的网络连接状况,也知道网络的拓扑,但不知道其他区域内的路由状况
第十二章——边界网关协议BGP
BGP的作用
- 为每个AS实现与其他AS之间的路由信息交换提供了途径。
- 两个相邻AS之间交换路由信息时,要选择相邻的BGP路由器作为发言人。每个发言人向外通告经过聚类后的可达性路由信息,以降低表规模和隐藏网络拓扑结构。
在传递路由信息时,RIP、OSPF和BGP分别使用UDP、直接基于IP和TCP,它们各有什么优点?是否有特殊的理由让它们进行这样的选择?
- RIP只和邻站交换信息,使用UDP无可靠保障,但开销小,可以满足RIP要求;
- OSPF直接使用IP,灵活、开销小;
- 而BGP需要交换整个路由表和更新信息,TCP提供可靠交付以减少带宽消耗。