C1引言
典型交换方式及其优缺点
- 电路交换:面向连接方式,电路交换连接建立后,物理通路被通信双方独占,资源专有。传输性能好,但若传输中发生故障,则传输中断,无法应对互联网中广泛存在的“突发流量”,难以实现灵活复用
- 分组交换(包交换):存储-转发,时延小,具有更好的灵活性,是和大量数据传输
- 报文交换:存储-转发,收到完整的整个数据报文后,才能开始向下一跳发送
分层结构及网络协议
-
网络协议:为进行网络中的数据交换而建立的规则、标准或约定,三要素:语法、语义、时序
-
协议分层结构:
层次栈:层次结构的协议栈(每层的协议),每一层都使用其下一层所提供的服务,并为上层提供自己的服务
对等实体:不同机器上构成相应层次的实体
接口:在每一对香菱层次之间的是接口,接口定义了下层向上层提供哪些服务原语
网络体系结构:层和协议的集合
服务原语:原语告诉服务执行某些操作或报告对等实体所采取的操作
六个核心服务原语:连接请求、接受响应、请求数据、应答、请求断开、断开连接
服务与协议的关系:协议是水平的,服务是垂直的;实体通过协议来实行服务;上层实体通过接口使用下层的服务
网络参考模型
-
OSI参考模型:
七层:
- 物理层:定义如何在信道上传输
- 数据链路层:实现相邻网络实体间的传输
- 网络层:将数据包跨越网络从源设备发送到目的设备
- 传输层:将数据从源端口发送到目的端口
- 会话层
- 表示层
- 应用层:通过应用层协议,提供应用程序便捷的网络服务调用
-
TCP/IP参考模型
-
网络接口层
-
互联网层
-
传输层
-
应用层
两种模型的比较:
网络接口层->物理层、数据链路层
互联网层->网络层
应用层->应用层、表示层、会话层
OSI:
- 先有模型后又设计协议,不局限于特定协议,明确了服务、协议、接口等概念,更具通用性
- 从未被真正实现
- 技术实现糟糕
- 非技术因素
TCP/IP:(用的更多)
- 仅仅是对已有协议的描述
- 核心概念未能体现
- 不具备通用性
- 混用接口与分层设计
- 模型欠缺完整
无连接与面向连接:OSI网络层两种都支持,TCP/IP网络层只支持无连接
-
计算机网络主要度量的含义
有这些单位:比特率、带宽、包转发率、时延、往返时间RTT、时延带宽积、吞吐量、丢包率、利用率、时延抖动
C2物理层
功能:最底层,如何在连接各计算机的传输媒体上传输数据比特流。数据链路层将数据比特流传输给物理层,物理层将比特流按照传输媒体的需要进行编码后将信号通过传输媒体传输到下一个节点的物理层
作用:尽可能屏蔽掉不同传输媒体和通信手段的差异
物理层接口特性:
标准化的DTE(数据终端设备)DCE(数据电路终结设备)接口具有:
-
机械特性:接口的物理结构,如接线器的形状和尺寸、引线数目和排列、固定和锁定装置
-
电气特性:规定了DTE/DCE之间多条信号线的电气连接及有关电路特性,如:普通电话交换网口
-
功能特性:描述执行接口的功能,定义接线器每一引脚的作用
-
过程特性:指明对于不同功能的各种事件可能的出现顺序
物理层协议:DTE和DCE之间的约定,规定了两者的接口特性
物理层常用标准:
广播通信电路:一条公共通信线路连接多个结点
多路复用技术:
概念:允许用户使用一个共享信道进行通信,避免干扰,降低成本,提高利用率
-
频分复用(FDM):将整个带宽分为多份,所有用户在同样的时间占用不同的带宽资源
-
时分复用(TDM):将时间划分为一段段等长的时分复用帧(TDM帧),所有用户在不同的时间占用同样的频带宽度,不足在于用户对分配到的子信道的利用率一般是不高的
-
统计时分复用(STDM):按需分配共用信道
-
波分复用(WDM):利用多个激光器在单条光纤上同时发送多束不同波长激光的技术
-
码分复用(CDMA):码分多址指利用码序列相关性实现的多址通信,靠不同的地址码来区分地址,有很强的抗干扰能力
码片序列各不相同,互相正交
在实用的系统中使用伪随机码序列
1为发送1,-1为发送0,0为未发数据
C3数据链路层基础
数据链路层在网络体系结构中的位置及基本功能和服务
位置:向下:利用物理层提供的位流服务 向上:向网络层提供明确的服务接口
基本功能:成帧,差错控制,流量控制
差错检测和纠正的基本原理和典型的编码方法
-
差错检测的基本原理:增加冗余信息(校验信息)
-
目标:保证能检测和纠错的前提下,尽量减少冗余信息的量
-
主要策略:
- 检错码
在被发送的数据块中,包含一些冗余信息,但这些信息只能使接收方推断是否发生错误,不能推断哪位发生错误,接收方可以请求发送方重传数据
高可靠、误码率较低的信道上使用,如:光纤链路
- 纠错码
发送方在每个数据块中加入足够的冗余信息,使得接收方能够判断接收到的数据是否有错,并纠错(定位出错的位置)
错误发生频繁的信道上使用,如:无线链路
也常用于物理层,以及更高层
使用纠错码的技术通常称作向前纠错(FEC)
-
基础概念:
码字:包含m个数据位和r个校验位的n位单元,写作(n,m)码,n=m+r
码率:m/n
海明距离:两个码字之间不同对应比特的数目:如:0000和0011海明距离为2
若两个码字的海明距离为d,则需要d个单比特错就可以把一个码字传换成另一个码字
为了检查出d个错,可以使用海明距离为d+1的编码
为了纠正d个错,可以使用海明距离为2d+1的编码
-
典型检错码
-
奇偶校验:
1位奇偶校验,增加1位校验位,检查奇数位错误
偶校验:保证1的个数为偶个
奇校验:保证1的个数为奇数个
-
校验和:
发送方:进行16位二进制补码求和运算,计算结果取反,随数据一同发送
接收方:进行16位二进制补码求和运算(包含校验和),结果非全1则为错误
-
循环冗余校验(CRC):数据链路层广泛使用的校验方法
校验码:设原始数据D为k位二进制位模式,若要产生n位crc校验码,事先选定n+1位二进制位模式G,G的最高位为1,将原始数据D乘以2^n(在D后加n个0),产生k+n位二进制位模式,用G对该位模式做模2除,得到余数R位(n位,不足n位前面用0补齐),即CRC校验码
检错码:
四个国际标准生成多项式:
CRC-12=x12+x11+x3+x2+x+1(则G为1100000001111,看要取几位就从右往左保留到几位哈)
CRC-16=x16+x15+x^2+1
CRC-CCITT=x16+x12+x5+1(我不写^了)
CRC-32=x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1 ,(以太网、无线局域网使用它,考试一般考的它
-
-
设计纠错码
- 要求:m个信息位,r个校验位,纠正单比特错
n+1<=2r,m+r+1<=2r
-
海明码:校验位为2的幂次位
偶校验:以每个校验位数字结尾的位为标准分组,使每组1的数目为偶数,填写校验位
无错通道和有错通道上停等协议的设计和实现方法
停等协议的性能问题及滑动窗口协议的基本思想
关键假设:分层进程独立假设,提供可靠服务假设,只处理通信错误假设
乌托邦式单工协议:数据单向传输,帧不会丢失或受损,始终就绪,瞬间完成,不处理任何流量控制或纠错工作
无错信道上的停等式协议:
通信信道不会出错,数据传输保持单向,需要双向传输链路(半双工物理通道),发送一帧后暂停,等待确认
- 发送方:完成一帧发送;等待确认到达;确认到达后,发送下一帧
- 接收方:完成一帧接收后;交给物理层一个哑帧;作为成功接收上一帧的确认
有错信道上的单工停等式协议:
假设通信信道可能会出错,增加一个计时器,如果一段时间没有收到确认,发送方将超时,于是再次发送该帧
- 发送方:初始化帧序号0发送帧;等待:正确的确认/错误的确认/超时;正确确认:发送下一帧;超时/错误确认:重发
- 接收方:初始化期待0号帧;等待帧到达;正确帧:交给网络层,并发送该帧确认;错误帧:发送上一个成功接收帧的确认
回退N和选择重传两种滑动窗口协议的工作机制
-
滑动窗口协议:对可以连续发出的最多帧数做限制,序号使用,流量控制,累计确认
-
回退N协议:出错全部重发
基本原理:当发送方发送了N个帧后,若发现该N帧的前一个帧在计时器超时后仍未返回其确认信息,则该帧被判为出错或丢失,此时发送方就重新发送出错帧及其后的N帧
适用场景:该策略对应接收窗口为1的情况,即只能按顺序接收帧
优缺点:优点:连续发送提高了信道利用率;缺点:按序接收,出错后即便有正确帧到达也丢弃重传
-
选择重传协议:只重传出错帧或计时器超时的数据帧
适用场景:接受窗口大于1的情况,即暂存接收窗口中序号在出错帧之后的数据帧
优缺点:优点:避免重传已正确传送的帧;缺点:在接收端需要占用一定容量的缓存
接收端收到的数据包的顺序可能和发送的数据包顺序不一样,因此在数据包里必须含有顺序号来帮助接收端进行排序
-
点到点链路层协议PPP和PPPoE
PPP协议:
- 由IETF制定,RFC1661(规范全球网络协议)
- 是目前使用最多的数据链路层协议之一
- 简单、灵活/安全性高/提供良好的访问控制和计费功能
PPPoE(overEthernet)
- 能对每一个发送帧、接收帧进行统计
- Ethernet优点:原理简单、应用广,设备成本低
- Ethernet缺点:安全性较低,不宜管理:使用广播信道造成安全性较低,无认证功能
- 使用C/S模型,服务器通常是接入服务器
C4介质访问子层
mac子层的位置和功能
- 数据链路层靠近物理层的那层,是MAC子层,另一层是LLC子层
- 功能:介质访问(LLC子层的作用是承上启下,弱层)
两种ALOHA协议的工作原理、CSMA工作原理及其核心所在
三大多路访问协议及其小分类:
-
随机访问协议:冲突不可避免
-
ALOHA
-
纯ALOHA
原理:想发就发
特点:冲突(两个或两个以上的帧),随时可能冲突,冲突的帧完全破坏,破坏的帧要重传
-
分隙ALOHA
原理:把时间分成时隙,时隙的长度对应一帧的传输时间,帧的发送必须在时隙的起点,冲突只发生在时隙的起点
-
-
CSMA(载波侦听多路访问协议):先听后发
-
持续式
-
1-持续(CSMA/CD)(是p持续式的特例)
先听后发,边发边听
经侦听,如介质空闲,则发送;如介质忙,持续侦听,一旦空闲立即发送;若发生冲突,等待一个随机分布的时间再重复步骤一
-
CSMA/CD概念模型
传输周期:一个站点使用信道,其他站点禁止使用
竞争周期:所有站点都有权尝试使用信道,争用时间槽
空闲周期:所有站点都不使用信道
-
-
p-持续
(1经侦听,若介质空闲,那么以p的概率发送,以1-p的概率延迟一个时间单元发送
(2如介质忙,持续侦听,一旦空闲重复1
(3如果发送已推迟一个时间单元,再重复1
-
-
非持续式
特点:经侦听,若介质空闲,开始发送;若介质忙则等待一个随机分布时间然后重复上一步骤
好处:等待一个随机时间可以减少再次碰撞冲突的可能性
缺点:等待时间内介质上如果没有数据传送,这段时间是浪费的
-
性能比较
以太网采用了CSMA/CD
- 吞吐量:比ALOHA高,比P-持续式低
- 冲突:比ALOHA少,比P-持续式多
- P-持续式付出了高延迟的代价
-
-
-
受控访问协议:克服了冲突
-
有限竞争协议:利用二者优势
以太网的拓扑
-
经典以太网
- 使用曼彻斯特编码,使用同轴电缆和中继器连接,主要运行CSMA/CD协议
- 硬件地址又称为物理地址或mac地址,mac帧中的源地址和目的地址长度均为6字节(目的地址/源地址/(协议)类型/数据/校验和)
- 带宽10Mbps
-
快速以太网
- 带宽100Mbps
- 保留原来的工作方式(帧格式,接口,过程)
- 自动协商
- 线缆类型(双绞线,光纤)
-
千兆以太网
-
1000Mbps
-
保留原来的工作方式
-
全双工和半双工两种方式工作
-
半双工,使用CSMA/CD(为了向后兼容),增加载波扩充和帧突发
-
全双工,不需要使用CSMA/CD(缺省方式)
-
-
流量控制和巨型帧
-
线缆类型(光纤,2对STP,2对UTP)
-
-
万兆以太网
-
只支持全双工,不再使用CSMA/CD
-
保持兼容性
-
重点是超高速的物理层
-
常见的局域网拓扑:总线、星型、环形,共同点是共享一根信道(别称:广播信道、多路访问信道、随机访问信道)
以太网的帧结构
交换以太网的特征
- 核心:交换机
- 工作在数据链路层,检查mac帧的目的地址对收到的帧进行转发
- 交换机通过告诉背板把帧传送到目标端口
- 每个端口都有独立的冲突域,在全双工模式下端口可以同时收发,则不需要CSMA/CD
- 可以实现并行传输
数据链路层交换的原理
-
物理层设备扩充网络:扩大了冲突域,性能降低,安全隐患
-
数据链路层设备扩充网络
- 网桥或交换机
- 分隔了冲突域
-
数据链路层交换原理
-
理想的网桥是透明的:即插即用,网络中的站点无需感知网桥的存在与否
-
mac地址表的构建-逆向学习源地址
记录帧到达时间,设定老化时间,当老化时间到期时,该表项会被清除
发送帧的站MAC地址被学习(主机向外发送数据时,其MAC地址就会被学习)
网桥发现MAC地址表中已存在某站点的MAC地址,则更新该表项的帧到达时间,重置老化时间
总结:
- 增加表项:帧的源地址对应的项不在表中
- 删除表项:老化时间到期
- 更新表项:帧的源地址在表中,更新时间戳
-
交换原理
转发:逆向学习源地址并根据目的地址查询mac地址表,找到匹配项,从对应端口转发出去
过滤:找到匹配项,入境口=出境口,丢弃
泛洪:找不到匹配表项,从所有端口(除入境口)发送出去,一个网段的数据被发送到无关网段,存在安全隐患,浪费网络资源。广播帧和未知单播帧需要泛洪
-
C5网络层
无连接和面向连接服务,数据包和虚电路网络
-
接口层:包括数据链路层和物理层
-
网络层服务实现
- 网络层实现端系统间多跳传输可达
- 发送端:将传输层数据单元封装在数据包中
- 接收端:解析接收的数据包中,去除传输层单元,交付给传输层
- 路由器:检查数据包首部,转发数据包
-
网络层关键功能:
路由(控制面):选择数据包从源端到目的端的路径,核心:路由算法与协议
转发(数据面):将数据包从路由器的输入接口传送到正确的输出接口
-
无连接服务的实现:
无连接服务:如寄信,不需要提前建立连接
数据包服务:
- 网络层向上提供灵活简单无连接的、尽最大努力交付的数据包服务
- 发送分组时不需先建立连接,每个分组独立发送
- 数据包独立转发,相同源-目的数据包可能经过不同的路径
- 网络层不提供服务质量的承诺
尽力而为交付
- 不提供端到端的可靠传输服务:丢包、乱序、错误
- 优点:网络的造价大大降低,运行方式灵活,能够适应多种应用
IPv4/IPv6,ICMP,DHCP,NAT,ARP
internet协议执行两个基本功能:寻址、分片
-
IPv4:无连接,最广泛的网络协议版本,互联网的核心
- 版本:4bit
- 首部长度:4bit
- 区分服务:8bit
- 总长度:16bit
- 标识:16bit,用来标识同一片分片
- 标志:3bit,目前只有两位有用,MF=1表示后面还有分片,DF=1表示不能分片
- 片偏移:13bit
- 生存时间(TTL):8bit
- 协议:标识上层协议8bit
- 首部校验和:16bit
- 源地址:32bit
- 目的地址:32bit
- 选项:可扩充部分
- 填充:用全0的填充字段补齐为4字节的整数倍
-
数据包分片:
MTU:最大传输单元
分片策略:
允许途中分片:根据下一链路的MTU实施分片
不允许途中分片:发出的数据包长度小于路径MTU
重组策略:
途中重组,实施难度太大
目的端重组(互联网采用的策略)
重组所需的信息:原始数据包编号、分片偏移量、是否收集所有分片
-
IP协议功能及报头字段总结
网络层基本功能:
- 支持多跳寻路将ip数据包送达目的端:目的IP地址
- 表明发送端身份:源IP地址
- 根据IP头部协议类型,提交给不同上层协议处理:协议
其他相关问题:
- 数据包长度大于MTU的问题,通过分片机制解决:标识、标志、偏移量
- 防止循环转发浪费网络资源,通过跳数限制解决:生存时间TTL
- IP报头错误导致无效传输,通过头部机校验解决:首部校验和
-
5类IP地址
共32位,每8位一个点,写成十进制
- A:0开头,1.0.0.0~127.0.0.0
- B:10开头,128.0.0.0~191.255.255.255
- C:110开头,192.0.0.0~223.255.255.255
- D:1110开头
- E:1111开头
-
子网划分方式
- 在网络内部将一个网络块进行划分以供多个内部网络使用,对外仍是一个网络。划分得到的一系列网络称为子网。
- 子网掩码,32bit,置1为网络位,置0为主机位
- 减少了ip地址的浪费、网络的组织更加灵活、便于维护和管理
- 计算:将地址写成二进制,逐位进行and操作。得到结果的后6位为主机位,主机位全0为子网地址,全1为广播地址。子网拥有的主机数量=2^n-2(n为主机位的位数)
-
无类域间路由(CIDR)
-
将32位的ip地址划分为前后两个部分,并采用斜线记法,即在ip地址后加上"/"然后再写上网络前缀所占位数
ip地址={<网络前缀>,<主机号>}
-
路由聚合:一个CIDR块可以表示很多地址,这种地址的聚合称为路由聚合,也称为构成超网。聚合技术允许前缀重叠,最长前缀匹配
-
-
IP与MAC地址的区别与联系,给定B的IP地址如何获取MAC地址?
- 区别与联系:ip地址放在ip数据包的首部,而硬件地址放在mac帧的首部,ip数据包经过不同的链路时,ip数据包中封装的ip地址不变,而mac帧中的硬件地址是发生改变的。
- 路由到另一个局域网:1.源主机在路由表中找到路由器的ip地址 2.根据ip地址在arp表中找到mac地址,创建数据帧,封装,发送。
- 由ip地址获取mac地址:
- arp表中缓存有B的ip地址和mac地址的映射关系,则直接从arp表中获取
- 未缓存则A广播包含B的ip地址的arp查询分组,此时局域网上的所有节点都可以接收到arp查询分组,B接收到后将自己的mac地址发给A,A在arp表中缓存B的ip地址和mac地址的映射关系
-
网络地址转换(NAT)的工作机制,优缺点
-
用于解决IPv4地址不足的问题,将私有(保留)地址转化为公有地址
-
私有ip地址:A:10.0.0.010.255.255.255;B:172.16.0.0172.31.255.255;C:192.168.0.0~192.168.255.255
-
工作机制:
nat转换表:广域网地址及端口及局域网地址及端口的映射关系
出数据包:外出数据包用NAT IP地址(全局),新port# 替代 源IP地址(私有),port#
入数据包:和出相反
-
优点:节省合法地址,减少地址冲突;灵活连接internet;保护局域网的私密性
-
缺点:违反了ip的结构模型,路由器传输层协议;违反了端到端的原则;违反了最基本的协议分层原则;新型网络应用的设计者必须要考虑NAT场景,比如P2P应用程序
-
-
DHCP(动态主机配置协议)工作过程
- 工作模式:C/S模式,基于UDP工作,服务器:67号端口,客户端:68号端口
- 工作过程:
- DHCP客户从UDP端口68以广播形式向服务器发送发现报文
- DHCP服务器以广播形式发送提供报文
- DHCP客户从多个DHCP服务器中选择一个,向其以广播形式发送请求报文
- 被选择的DHCP服务器以广播形式发送确认报文
链路状态,距离矢量等路由算法
-
优化原则的核心思想:
汇集树:所有源节点到一个指定目标结点的最优路径集合构成一棵以目标节点为根的树
-
路由算法需满足的特性:正确性、简单性、鲁棒性(强壮性)、稳定性、公平性
-
最短路径算法(dijkstra算法):
- 建立网络图:节点表示路由器,边表示通信线路/链路,链路代价表示链路上的距离、信道宽度或通信开销等参数
- 每次都选最短的那条路
-
距离向量算法
- Dx(y)=min{c(x,m)+Dm(y)}
- 算法特点:迭代的、分布式的、好消息传播快,坏消息传播慢
-
链路状态路由
1.发现邻居,了解他们的网络地址
2.设置到每个邻居的成本度量
3.构造一个分组,分组中包含刚才收到的所有信息
4.将此分组发送给其他路由器
5.计算到其他路由器的最短路径
OSPF、RIP、BGP
-
OSPF-内部网关路由协议
-
基本思想:
- 向本自治区系统中所有路由器洪泛信息
- 发送的信息就是与本路由器相邻的所有路由器的链路状态
- 只有当链路状态发生变化时才洪泛发送此信息
-
OSPF链路状态:采用分布式的链路状态算法
链路状态:说明本路由器与哪些路由器相邻,以及该链路的度量(费用、时延、距离、带宽)
-
路由器角色:内部路由器IR、边界路由器ABR、自治边界路由器ASBR
-
-
RIP-内部网关路由协议
- 基本思想:基于距离矢量算法
- 仅和相邻路由器交换信息
- 路由器交换的内容是自己的路由表
- 周期性更新
- 协议特点和适用场景
- 算法简单、易于实现
- 收敛慢
- 需要交换的信息量较大
- 适用:中小型网络
- 基本思想:基于距离矢量算法
-
BGP-外部网关路由协议
- eBGP:从相邻的AS获得网络可达信息
- iBGP:将网络可达信息传播给AS内的路由器
- BGP基础:
- BGP会话:两个BGP路由器通过TCP连接交换BGP报文
- 协议特点和适用场景
- 交换路由信息的节点数量级是自治系统的量级
- 每一个自治系统边界路由器的数目是很少的
- 在BGP刚刚运行时,BGP的邻站交换整个的BGP路由表;以后只需在变化时更新有变化的部分
- BGP为每个AS提供:
- 从邻居AS获取网络可达信息(eBGP)
- 传播可达信息给所有的域内路由器(iBGP)
- 根据“可达信息”和“策略”决定路由
路由器工作原理:控制层和数据层,报文转发机制,交换结构
C6传输层
复用和分用
复用:发送方传输层将套接字标识置于报文段中,交给网络层
分用:接收方传输层根据报文段中的套接字标识,将报文段交付到正确的套接字
套接字标识:端口号(16bit)是套接字标识的一部分
-
UDP
分用:UDP套接字使用<ip地址,端口号>进行标识
检查报文段中的目的端口号,将UDP报文段交付到具有该端口号的套接字
<目的ip地址,目的端口号>相同的UDP报文段被交付给同一个套接字,与<源ip地址,源端口号>无关
<源ip地址,源端口号>被接收进程用来发送响应报文
比对:服务器使用一个套接字服务所有客户
-
TCP
使用<源ip地址,目的ip地址,源端口号,目的端口号>进行标识
监听套接字:等待客户连接的请求,该套接字具有众所周知的端口号
连接套接字:在收到客户请求后,创建一个连接套接字,使用临时分配的端口号
服务器同时创建一个新的进程,在该连接套接字上服务客户
每个连接套接字只与1个客户通信
比对:服务器使用一个监听套接字和多个连接套接字服务多个客户
可靠数据传输
-
无连接传输:UDP(了解即可)
-
报文段结构:报头(源、目的端口号,报文总长度,校验和)、载荷(携带上层数据)
-
校验和计算?
包括伪头(取自ip报头)、udp头、数据三个部分
-
适用于:容忍丢包但对延迟敏感的应用,e流媒体,以单次请求/响应为主的应用,如DNS,若应用要求基于UDP进行可靠传输:由应用层实现可靠性
-
-
面向连接的传输:TCP(重点)
在一对通信的进程之间提供一条理想的字节流管道
-
报文段结构
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-21Njxs3G-1641803952594)(D:\Desktop\image-20220105091324379.png)]
确认号:期望收到对方下一个报文段的第一个数字字节的序号,例如,B正确收到了A发送过来的一个报文段,其序号字段值是501,而数据长度是200字节(序号501~700),这表明B正确收到了A发送的到序号700为止的数据。因此,B期望收到A的下一个数据序号是701,于是B在发送给A的确认报文段中把确认号置是701。注意,现在确认号不是501,也不是700,而是701。
URG:紧急数据(通常未用)
ACK:为1标识确认序号有效
PSH:为1表示立即发送(通常未用)
RST,SYN,FIN:用于建立和终止连接
窗口:接收端还可以接受的字节数
-
重要的tcp选项
最大段长度(MSS)
选择确认(SACK):最初的TCP协议只是用累积确认,改进的引入选择确认,允许接收端指出缺失的数据字节
-
可靠数据传输
触发一次TCP传输需要满足三个条件之一:应用程序调用、超时、收到数据或确认(单向传输中的接收方,只有该条件能触发传输)
-
发送端:流水线式发送数据、等待确认、超时重传
- 定时器的使用:仅对最早未确认报文段使用一个重传定时器(与回退N协议类似)
- 重发策略:仅在超时后重发最早未确认的报文段(与选择重传协议类似,因为接收端缓存了失序的报文段)
- 需要处理的事件:
- 收到应用数据:创建并发送TCP报文段,若当前没有定时器在运行(即没有已发送、未确认的报文段),启动定时器
- 超时:重传包含最小序号的、未确认的报文段,重启定时器
- 收到ACK:如果确认序号大于基序号(已发送未确认的最小序号):
- 推进发送窗口(更新基序号)
- 如果发送窗口中还有未确认的报文段,重启计时器,否则终止计时器
-
接收端:进行差错检测,采用累积确认制
-
确认方式:累积确认,仅在正确、按序收到报文段后,更新确认序号;其余情况,重复前一次的确认序号(与回退N协议类似)
-
失序报文段处理:缓存失序的报文段(与选择重传协议类似)
-
需要处理的事件:
-
收到期待的报文段:
之前的报文段均已发送过确认:推迟发送确认
前一个报文段已被推迟确认:立即发送确认
-
收到失序的报文段(序号大于期待的序号):
立即发送确认,重复当前的确认序号
-
收到部分或全部填充间隙的报文段:
若报文段始于间隙的低端,立即发送确认(推进发送窗口),更新确认序号
-
为减小通信量,允许推迟确认:推迟确认时间最多为500ms,接收方至少每隔一个报文段使用正常方式进行确认
-
-
-
快速重传:在定时器到期前就重发丢失的报文段。当发送方收到对同一序号的三次重复确认时,立即重发包含该序号的报文段
-
减少不必要的重传:
只使用一个定时器:避免了超时设置过小时重发大量报文段
利用流水式发送和累积确认:避免重发某些丢失了ACK的报文段
-
-
流量控制
-
发送端
调节发送速率,不使接收端缓存溢出
-
发送方限制已发送、未确认的字节数不超过接收窗口的大小
-
当接收窗口为0时发送方必须停止发送
-
发送端的操作:
使用Nagle算法确定发送时机
使用接收窗口限制发送的数据量,已发送未确认的字节数不超过接收窗口的大小
-
-
接收端
接收端tcp将收到的数据放入接收缓存,应用进程从接收缓存中读取数据,进入接收缓存不一定被立即取走取完,因此后续到达的数据可能会因缓存溢出而丢失。
-
接收窗口:接收缓存中的可用空间,会放在接受方报头中
RcvWindow=RcvBuffer-[LastByteRcvd-LastByteRead]
-
当接收窗口变为非0时,接收方应通告增大的接收窗口
-
当发送方停止发送后,接收方不再收到数据,如何触发“非零窗口通告”?
发送方收到零窗口通告后,可以发送零窗口探测报文段,从而接收方可以发送包含接收窗口的报文段
-
接收端的操作:
使用显式的窗口通告,告知发送方可用的缓存空间大小
在接收窗口较小时,推迟发送确认
仅当接收窗口显著增加(窗口大小达到缓存空间的一半或一个MSS)时,通告新的窗口大小
-
-
-
连接管理
TCP的连接怎么建立和终止?
1.客户TCP发送SYN报文段(SYN=1,ACK=0)
- 给出客户选择的起始序号
- 不包含数据
2.服务器TCP发送SYNACK报文段(SYN=ACK=1)(服务器分配缓存和变量)
- 给出服务器选择的起始序号
- 确认客户的起始序号
- 不包含数据
3.客户发送ACK报文段(SYN=0,ACK=1)(客户端分配缓存和变量)
- 确认服务器的起始序号
- 可能包含数据
4.客户TCP发送连接释放报文段,停止再发送数据,主动关闭TCP连接(FIN=1,seq=x)
5.服务器TCP发送连接释放确认报文段(ACK=1,seq=X+1)
6.服务器TCP发送连接释放报文(FIN=1,seq=y)
7.客户TCP发送连接释放确认报文,告诉服务端可以关闭连接了(ACK=1,ACKnum=y+1)
如何选择起始序号?
必须避免新旧连接上的序号产生重叠
- 基于时钟的起始序号选取算法
-
拥塞控制
-
如何感知?
利用丢包事件感知拥塞:拥塞造成的丢包和分组延迟增大。无论是丢包还是分组延迟增大,对于发送方来说都是丢包
丢包事件包括:
- 重传定时器超时
- 发送端收到3个ACK
-
采用什么机制限制发送速率?
-
发送方使用拥塞窗口cwnd限制已发送未确认的数据量
rate=cwnd/RTT(往返时间) (bytes/sec)
-
cwnd随发送方感知的网络拥塞程度而变化
-
-
感知到拥塞后,采取什么策略调节发送速率?
-
AI(加性增)MD(乘性减)
MD:发送方检测到丢包后,将cwnd的大小减半。目的是迅速减小发送速率,缓解拥塞
AI:若无丢包,每经过一个RTT,将cwnd增大一个MSS,直到检测到丢包。目的是缓慢增大发送速率,避免振荡
-
慢启动
基本思想:在新建连接上指数增大cwnd,直至检测到丢包(此时终止慢启动)
实施:每经过一个RTT,将cwnd加倍(每收到一个ACK段,cwnd增加一个MSS)
-
区分不同丢包事件
超时:使用慢启动增大cwnd至门限(原cwnd/2),使用AIMD调节cwnd
收到三个重复ACK:将cwnd降至一半,使用AIMD调节cwnd
-
-
-
C7应用层(要与传输层结合,知道对应协议是TCP还是UDP)
-
应用进程通信方式
-
客户/服务器方式(C/S)
客户(服务请求方)和服务器(服务提供方)是指通信中涉及的2个应用进程。
可以面向连接,也可以是无连接的。
面向连接时,C/S通信关系一旦建立。通信就是双向的,双方地位平等,都可以发送和接收数据
-
客户进程的特点:
在进行通信时临时成为客户,它也可在本地进行其他计算。
用户计算机上运行,在打算通信时主动向远地服务器发起通信。
客户方必须知道服务器进程所在主机ip才能发出服务请求。
需要时可以与多个服务器通信。
-
服务器进程的特点
专门用来提供某种服务的程序,可同时处理多个远地或本地客户的请求。
必须始终处于运行状态才有可能提供服务。
通信开始之前不需要知道客户进程所在主机IP地址,被动等待服务请求到来即可。
被动等待并接受来自多个客户的通信请求。
-
-
浏览器/服务器(B/S)方式
C/S的特例,将客户软件改为了浏览器
3层架构:
-
数据层:数据库服务器:数据处理逻辑
-
处理层:web服务器:业务处理逻辑和页面存储管理
-
表现层:浏览器:网页信息的浏览功能,超文本格式
特点:
- 界面统一,使用简单
- 易于维护
- 可拓展性好
- 信息共享度高
-
-
对等方式(P2P)
两个进程不区分服务提供方和请求方。
本质仍为C/S方式,每一个P2P进程既是客户又是服务器
-
-
服务进程工作模式
- 循环方式:一次只运行一个服务进程,当多个客户进程请求服务时,服务进程就按请求的先后顺序一次做出响应。使用无连接的UDP服务进程通常都以这种方式工作
- 并发方式:可以同时运行多个服务进程,每一个服务进程都对某个特定的客户进程做出响应。面向连接的TCP服务进程通常以这种方式工作。主服务进程在熟知端口等待客户进程发出的请求。一旦收到客户的请求,就创建一个从属服务进程,并指明从属服务进程使用临时套接字与该客户建立TCP连接,然后主服务进程继续在原来的数值端口等待向其他客户提供服务。
-
域名系统基本原理和工作机制
域名解析过程:当某一应用进程需要进行域名解析时,该应用进程将域名放在DNS请求报文(UDP数据报,端口号为53)发给递归服务器(使用UDP是为了减小开销)。递归服务器得到查询结果后,将对应IP地址放在应答报文中返回给应用进程。
域名查询有递归查询(递归解析器/本地域域名服务器)和迭代查询(优先采用)两种方式。
-
电子邮件系统体系结构及基本工作原理
-
Telnet、FTP、SNMP等应用层协议的工作原理
远程登录是网络最早提供的基本服务之一
- Telnet:使用C/S方式实现,TCP连接通信
- FTP:是internet上使用最广泛的应用层协议之一,使用C/S方式实现,UDP协议
- SNMP:使用UDP协议