『计算机网络』计算机网络理论——期末复习
『计算机网络』计算机网络理论复习——期末复习
概述
时延:
我们通常下载看到的xx Mb/s
都是指发送速率,传播速率我们普遍认为光速。
体系结构:
实体:任何可发送或接收信息的硬件或软件进程
协议:控制两个对等实体进行通信的规则的集合
物理层 —— 比特流(Bit)
- 四个特性:机械特性,电气特性,功能特性,过程特性
- 码元:数字信号,代表不同离散数值的基本波形
码元速率(波特率):单位时间内通过信道的码元个数。
数据速率(比特率):码元可以携带多比特,这取决于码元离散取值的数量,但信号电平级数较多可能出现串扰。
复用技术
- 频分复用(FDM)与时分复用(TDM)
- 光的波分复用(WDM)
- 码分复用(CDM):码分多址,用于无线通信,一个比特时间划分m个间隔,每个站分配一个唯一的m bit序列,且互相正交。即每个通信使用不同的m比特序列表示0和1,例如 00011011表示0,11100100表示1
传输介质
- 导引型:双绞线,同轴电缆,光纤
- 非导引型:无线电波传播
奈奎斯特公式:$带宽 = 最大频率 - 最小频率$
香农公式(考虑信噪比):
数据链路层 —— 帧(Frame)
基本概念
- 解决的问题:如何组装帧,差错控制,流量控制,介质访问控制。
- 错误检测
- 奇偶校验
- CRC(循环冗余校验):CRC的计算,双方约定好一个x位的除数,数据后面补充 x-1 位的 0,然后求余数替换。
错误纠正:海明码,并不意味着可靠传输。
滑动窗口协议:与TCP原理一致,但是切记这是两个东西。在这里滑动窗口以帧为单位。
- 两种出错处理手段:
- 后退N帧:当某帧出错时,该帧之后的帧全被丢弃,从出错帧开始重新发送
- 选择性重传:当接收方发现出错时,发送一个NAK,发送方收到NAK后立即重传对应帧。接收方出错帧之后的帧会被缓冲区保留,待错误帧到来时按顺序上交给网络层。ACKn代表n和n之前的均接收!
- 流量控制:根据接收方缓存大小,发送ACK报文时携带窗口大小,同TCP。
- 两种出错处理手段:
PPP协议:点到点的链路传输,识别帧边界使用:
字符填充:数据中出现同样的字符,需要转义
0比特填充:数据出现每五个连续的1后面必填入一个0,定界符为连续六个1
介质访问控制协议(Medium Access Control, MAC)
CSMA/CD(Carrier Sense Multiple Access with Collision Detection,载波监听多点访问/碰撞检测):用于以太网。
载波监听:发送前先听
碰撞检测:边发送边听,由于传播时延,单纯靠载波监听不能完全避免碰撞
碰撞强化:检测到碰撞后,立即停止发送,并发送干扰信号让所以有用户知道发生了碰撞
碰撞退避:碰撞后,等待不固定的时间后,再次监听+发送
设单向传输时延为x,则双方均检测到碰撞最短需要x(中间),最长需要2x(两端)。
争用期:最多经过
2x
时间就能知道是否发生碰撞,2x
称作争用期,对于发送速率为y b/s
的网络,在争用期可以发送2xy
个bit,即前2xy
未发生碰撞,则不会发生碰撞,因此帧长必须要大于等于2xy bit
!
CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance,载波监听多点访问/碰撞避免):用于无线网络。
以太网
分为LLC和MAC层
MAC地址:48位,全球唯一,在局域网内使用
帧格式:和其他层的最大不同 —— 帧在尾部也加了校验和的内容
交换机
- 每一个网络接口是一个网段(碰撞域),按照自学习算法建立转发表(通过发送时的源mac地址和进入接口建立映射)。
使用STP生成树协议避免广播风暴。
VLAN:将网段分组,构成逻辑上独立的虚拟局域网。帧不会在两个VLAN之间自动转发,包括广播帧,隔离了广播域。
网络层 —— 数据报(Packet)
网络层主要作用是实现两个端系统之间的透明数据传输,负责转发和路由选择等功能。
IP(Internet Protocol)协议
IP采用数据报服务,配套使用的有ARP(地址解析),ICMP(控制报文),IGMP(管理协议)。
ARP与RARP:IP与物理地址相互转换问题,ARP以广播帧的形式在一个局域网内广播,主机和路由器内都有一个ARP缓存表记录IP和MAC的映射关系。主机向同一局域网下另一主机B发送IP包时,先查看缓存,没有就广播ARP寻找后填入mac地址位置。如果目的主机不在局域网内,那么IP包设置的mac地址应该是默认网关的mac地址。
IP首部:
TTL:生存周期,IP包在网络中可通过路由器最大值,每经过一个路由器就减一
Protocal: 标记上层协议是 TCP/UDP/ICMP
数据部分不参与校验和Checksum计算
有时根据帧最大长度进行IP包分片,分片的包通过标识位标记。计算分片时要考虑IP头占20字节。
划分子网:子网掩码,无分类编址CIDR(彻底抛开网络分类,子网掩码称作网络前缀)
- 将目的IP与子网掩码&,即得到对应子网地址
- 主机根据自身IP与掩码,判断目的IP与自己在不在一个子网内,若满足等式$ IP_{self} \& Mask_{self} = IP_{dest} \& Mask_{self} $ ,代表在一个子网内,走局域网;不满足等式则转发到默认路由器。
- 构造超网(路由聚合):将多个CIDR地址块聚合成一个大地址块
- 优势:路由表中的一个项目可以表示很多个原来传统分类地址的路由,可以减少路由表中表项个数,并减少路由器间交换的路由信息量。
- NAT:内部网络使用局域网地址时,与互联网通信需要进行地址转换,否则互连网不认识局域地址。
路由表表项:路由器表项包含路由选择的必要信息,主要内容如下:
- 目的 IP 地址:IP 包的目的地址。
- 子网掩码:表示目的 IP 地址有多少位是网络位。
- 网关:IP 包下一跳的 IP 地址。
- 网络接口:IP 包从哪个路由器接口发送出去。
- 度量值:当有多条到达目的地的不同路径时,度量值越小表示优先级越高。
路由表转发过程:
获得目的IP地址,首先将直连网络的网段和子网掩码(视作主机即可)相与,看是否匹配,若匹配则直接交付,否则间接交付转步骤2
若路由表有目的地址的路由信息,则直接给对应的下一跳路由器,否则转步骤3
对路由表每一行掩码与目的地址相与,匹配则根据路由表找到下一跳端口,不匹配则转步骤4
若有默认路由,走默认,若无,则报错
在使用CIDR后,查找路由表可能会得到多个匹配结果,选择最长网络前缀匹配,因为地址块小路由更具体!
ICMP:封装在IP包内,分差错报告与询问报文
差错报文:分为终点不可达,超时,参数问题,源抑制(拥塞丢弃),重定向(下次发给另外的路由器)
询问报文:echo,请求时间
tracert
命令利用超时报文,TTL字段分别设为1,2,3…直至目的主机ping
命令利用echo报文
路由算法
- 静态算法即手动配置路由,不过多考虑。
动态算法包括老三位,距离向量(ospf)算法,链路状态(bgp,rip)算法;进一步按自治系统背景区分,IGP(ospf,rip),BGP(bgp)
RIP(Routing Information Protocol):
- 距离定义:中间经过了多少个路由器,最长为15,16表示不可达。直接相连的距离为0。
- 仅和相邻路由器交换信息,交换的信息是当前本路由器知道的全部信息,即本路由器的路由表。
固定间隔时长交换一次。
工作流程 —— 使用 Bellman-Ford:
收到相邻路由器X的一个RIP报文
将报文内全部的下一跳改为X,并把距离字段加一。每个项目内有三个关键信息:目的网络,距离,下一跳X
依次将其与自身路由表比较目的地址,若自身路由表无目的地址,则添加到自身路由表,否则转4
若自身路由表下一跳也为X,则使用RIP的替换,否则转5
若RIP的距离小于自身的距离,则添加到自身路由表,否则转6
Do nothing
- OSPF:
- 使用迪杰斯特拉算法
- 使用IP数据报发送
- 基本思路:各路由器间交换链路状态(本路由器和哪些路由器相邻,以及链路的度量距离)信息,每个路由器一个数据库,最终收敛为全网的路由器的数据库信息一致,即每个路由器拥有全网的拓扑结构图,并分别计算单源最短路径。
- BGP:和OSPF在计网实验里无恶不作,但是理论应该不会考
传输层 —— 数据段(Segment)
- 传输层主要作用:实现可靠传输,包括差错控制,顺序控制,拥塞控制等,以及实现应用进程间(端口)的逻辑通信。
- 常用协议类型与端口号:
UDP(User DatagramProtocol)
在ip层的协议类型为17
首部:仅提供了端口和校验机制,使用全部信息(包含伪首部)进行校验
TCP(Transmission Control Protocol)
可靠服务:无差错,不丢失,不重复,按序到达
全双工通信,面向字节流
首部:IP层的协议字段为6
滑动窗口:以字节为单位的滑动窗口
发送窗口:对方未应答的情况下,可以连续把窗口内数据发送出去,不建议前沿收缩
接收窗口内的若没有按顺序收到,则可以先缓存,等31号到了以后统一上交,并将窗口后沿前移。
发送方的缓存与发送窗口的关联:发送缓存左边缘等于发送窗口左边缘,代表最后被确认的字节,应用进程发送时将数据靠右放进缓存中。
接收方的缓存与接收窗口的关联:接收窗口左边沿是下一个期望接收的字节(如果都按序到达则来一个左边沿往后推一个),接收窗口的左侧直至接收缓存左侧是已经按序接收但还未被应用层处理完的数据。
区分发送缓存,接收缓存与发送接收窗口。缓存是和应用层处理速度等相关的,窗口是和传输层传输数据限制相关的。
超时重传:校验和+超时重传,加权RTT(动态调整RTT),超时重传时间设置为略大于RTT。RTT为往返时延,一个信号从发送再到收到对方ACK的总时间。
流量控制:控制发送速率,使接收方来得及接收,报文中携带窗口大小字段,告知对方自己接收窗口的剩余大小,$发送方的发送窗口 = min{拥塞窗口,对方接收窗口}$。窗口是以字节为单位统计的,但是发送还是以最大报文段MSS为单位。
拥塞控制:慢启动,拥塞避免,快重传,快恢复
慢启动:试探性地从小到大增大发送窗口。若无拥塞,拥塞窗口增加,有堵塞减少。每经过一个传输轮次(等价于往返时间RTT)拥塞窗口加倍。
拥塞避免:阈值比较,每经历一个RTT加一。若出现了拥塞,则阈值改为此时发送方窗口的一半,拥塞窗口重新设置为1。
快重传,快恢复:每当接受方收到一个失序报文段,发出重复确认告知发送方。当发送方收到三个重复确认,则阈值减为当前拥塞窗口的一半,拥塞窗口也减半,直接进入拥塞避免阶段。
可靠传输:校验和,序列号,确认号,超时重传和快速重传
三次握手四次挥手
三次握手
ack:期望对方下条报文的seq值
四次挥手
连接释放时是双向的,A释放连接代表A没有向B发送的数据,而B发送数据A仍要接收,直至双方都没有要发送的数据时,B再释放连接。因此需要四次。
为什么握手要三次,挥手要四次(重中之重):
- 三次握手:要保证连接是双工的,至少要握手3 次。如果握手 2 次,则只能保证服务器能收到客户端的信息,而不能保证客户端能收到服务器的信息;如果握手 4 次,则多余了。还有其他解释,如避免网络中的僵尸连接占用资源。
- 四次挥手:还是因为连接是双工的,前两次只是保证了客户端发送的数据传输完了,服务器需要等它发送的数据也传输完,再断开连接。
为什么四次挥手时,客户端在发送ACK后需等待 2MSL:因为网络是不可靠的,客户端回复给服务器的ACK 可能会丢失,如果丢失的话,服务器会重新发送 FIN,客户端需要等一会。
应用层
为应用程序提供服务,通过网络套接字接口接入网络。
DNS(Domain Name System):基于UDP
树状域名结构,树状域名服务器结构:最后的是顶级域名 .cn 等
流程:
本机向本地域名服务器发送请求
本地域名服务器查找缓存/请求根域名服务器后返回:分为迭代法和递归法
FTP(File Transfer Protocol):
- 基于TCP,端口21
- 使用2个TCP连接,控制连接(传送请求)和数据连接(传送文件,仅传送时打开)
WWW(World Wide Web, 万维网):
- URL(Uniform Resource Locator,统一资源定位符):http端口80,https端口443,不区分大小写
HTTP(Hyper Text Transfer Protocol,超文本传输协议):基于TCP,无状态(服务器不记录客户端访问状态),面向正文(text-oriented)
HTTPS(Security): 使用SSL(secure socket layer)/ TLS提供加密服务
电子邮件协议:SMTP(发)(Simple Mail Transfer Protocol,简单邮件传输协议)和POP3(收)(Post Office Protocol version 3,邮局协议版本3)