《计算机网络》学习笔记
注:本笔记内容基本来自B站的王道论坛的408单科免费视频(非常感谢)
重要的协议:
RIP/OSPF/BGP
ARP/DHCP/ICMP
ARQ/SR/GBN
TCP/UDP
网络体系结构(功能)、协议、网络设备
物理层(定义接口特性,定义传输模式,定义传输速率,比特同步,比特编码)
数据链路层(成帧,差错控制,流量控制,访问(接入)控制)
网络层(路由选择,流量控制,差错控制,拥塞控制)
传输层(可靠传输、不可靠传输,差错控制,流量控制,复用分用)【可差流用】
会话层(建立、管理、终止会话,使用校验点实现数据同步)
表示层(数据格式变换,数据加密解密,数据压缩和恢复)
应用层(产生网络流量的程序)
【物联网淑慧试用】
物理层
-
数据传输速率
单位不要写错:km/h和m/s,bit和Byte,k、M和G
网络带宽、硬盘容量中的M一般是按照10^6说的 -
速度有关的:速率,带宽(最大发送速率),吞吐量(多信道和接口的速率总和),链路中传播速率2E8米每秒。
-
时延(发送时延=传输时延,传播时延,排队时延,处理时延)=延迟=迟延
- 时延带宽积=传播时延*带宽(描述 容量)
- 往返时间RTT(发送数据开始,发送方收到接收方确认,ping)=2*传播时延+末端处理时延
- 利用率(信道利用率=有数据通过时间/总时间,网络利用率=信道利用率加权平均值)
- 流量强度=到达速率/传输速率,不能大于1,否则会造成拥塞,可能丢包
-
除了带宽和延迟以外,针对数字化的语音流量,要想让网络提供很好的服务质量,还需要哪个参数?(延迟变化)
-
单工(一条信道,单向),半双工(两条,不能同时),双工(两条,可同时)
-
串行传输(速度慢,费用低,适合远距离),并行传输
-
码元(固定时长的信号波形,k进制码元),码元传输速率(单位:波特)vs 信息传输速率(单位:b/s)【倍数关系M:k进制对应的比特数log_2_k】
-
Nyquist定理:在理想低通(无噪声,带宽受限)条件下,极限码元传输速率为2W波特=2W*log_2_K 比特每秒,其中信道带宽为W(Hz)
-
香农定理:有噪声,带宽受限条件下,信噪比S/N或10log_10_ (S/N)【单位db】,信道的极限数据传输速率为Wlog_2_(1+S/N)
-
二进制4KHz带宽,信噪比127:1的极限数据传输速率:用Nyquist定理为8kb/s,用香农定理为28kb/s,取8kb/s。
-
基带(数字信号)和宽带(模拟信号)
-
非归零编码NRZ(高1低0,需要同步时钟周期信号),归零编码(一个码元内要恢复到零),反向不归零编码(遇到0进行翻转,遇到1不翻转),以上编码都不好。
-
曼彻斯特编码(4进制码元=一个时钟周期2个脉冲,10和01分别表示1,0编码),差分曼彻斯特编码(每个码元中间跳转一次,遇到码元为1,则码元之间不跳;为0则跳。时钟自同步,抗干扰性更强)
- 中继器(物理层设备):再生数字信号,连接网段。5-4-3规则:5个网段,4个设备,3个工作站
- 集线器(物理层设备):再生,放大信号,是一个共享式设备
数据链路层
功能一:组帧
- 组帧:字符计数法(不常用),字符填充法(SOH作为帧头, EOT作为帧尾,在文本关键字前填充ESC的转义字符),零比特填充法(遇到5个1填充一个0,因为EOT为01111110,有6个连续的1),违规编码法(曼彻斯特编码中“高-高”和“低-低”来定界帧的起始)
功能二:差错控制
- 链路层的差错控制是“比特错”(位错):检错编码(奇偶校验码,循环冗余码CRC),纠错编码(海明码)
- 奇偶校验码:n-1位数据位,1位校验位,使得异或结果为0(偶校验码),1(奇校验码)。因此有1或3或5……个比特位错才能检查出来。
- CRC循环冗余码:除法(异或),看例题。
- 海明码:校验码位置为2的幂方位置,使得每个二进制位位置为1的异或结果为0。例如P3=(100)2=4,要校验的位数为(101)2=5, (110)2=6, (111)2=7,(1100)2=12, …… 海明码能发现双比特错,纠正单比特错。
功能三:流量控制
- 滑动窗口协议:解决流量控制(控制流量速率),可靠传输(发送方自动重传,有定时器)
- 停止-等待协议:等待确认(收到ACK)后再发送下一帧。(发送窗口和接受窗口都是1)
- 信道利用率:
- 后退N帧协议(GBN):看视频。发送窗口最大为2的n次方-1, 接收窗口大小为1。 对n号帧的确认采用累积确认的方式。接收方只按顺序接收帧,不按序无情丢弃。确认序列号最大的、按序到达的帧。因为连续发送数据而提高了信道利用率。
- 选择重传协议(SR):看视频。窗内的帧来者不拒。
- 发送窗口最好等于接收窗口,等于2的n-1次方(n为序号比特编码长度)。或者,发送窗口长度+接收窗口长度<=序号数量(0,1,2,3则有4个帧序号)。
功能四:介质访问控制MAC(链路接入)
- 码分多路复用CDM:正交基,0用-1表示。做正交基内积还原数据。
- 时隙ALOHA协议:只能在时间片的开始时刻接入,如果冲突则等到下一时间片发送。
- 1-坚持CSMA(空闲则直接传输),非坚持CSMA(随机的时间片后传输),p-坚持CSMA(空闲则以p概率直接传输),p-坚持比较好,但是CSMA发生冲突后要等到确认帧判断是否冲突,导致会发送完整的数据帧。
- CSMA-CD和CA的区别:都是先监听,信道空闲后才接入,进行有限次上传。不同点:传输介质不同;载波检测方式不同,CD是检测电缆电压变化,CA是采用能量检测,载波检测和能量载波混合检测。
- [CSMA-CD]: #CSMA-CD :(carrier sense multiple access with collision detection 载波监听多点接入-碰撞检测):有线网
- 单向传播时延*2的时间(=2t)内如果没有检测到碰撞,就没有发生冲突。
- 基本推迟时间为2t
- 第k次重传,推迟时间为2t*r,其中r从{0,1,2,3,...2^min{k,10}-1}中随机取值。所以第11次r从{0, 1, 2, ... 1023}中选。(二进制指数退避算法)
- 重传次数k不超过16次,否则向高层报告出错。
- 最小帧长为2t*数据传输速率,要求帧的传输时延至少要2倍于传播时延(能够在发出完整帧之前检测到是否发生冲突)。以太网规定最短帧长64B,凡是小于64B的都是无效帧。
- CSMA-CA:(collision avoid 碰撞避免):无线网
- 发射端检测到空闲则发出RTS(request to send),包括发射端的地址、接收端的地址、下一份数据发送持续时间。接收端接收到RTS后,将响应CTS(clear to send)。避免隐蔽站的问题。
- 预约信道
- 收到ACK后再发送数据
- 令牌传递协议:令牌是一个特殊格式的MAC控制帧,不含任何信息。有令牌持有时间。应用于逻辑环形拓扑(令牌环网)。常用于负载量较大,通信量较大的网络。
- MAC地址:48位,前24位由IEEE规定
- 以太网:Ethernet 基带总线局域网规范,使用CSMA/CD技术,网络速率10Mb/s~10Gb/s,满足DIX Ethernet V2规约,或IEEE802.3标准。
- 提供无连接、不可靠的服务,只实现无差错接收,不实现可靠传输
- 双绞线+集线器,逻辑上是总线型,物理上是星型。
- 以太网10BASE-T,BASE传送基带信号,T双绞线,采用无屏蔽双绞线UTP,曼彻斯特编码,CSMA-CD
- 无线局域网:802.11标准
- 广域网:点对点传输,只支持全双工。
- PPP协议,面对字节传输,字符填充法,简单(无需流量控制),不支持多点接入,是不可靠的。
- HDLC协议,高级数据链路控制,面对比特传输,0比特插入法,是可靠的,分为信息帧、监督帧、无编号帧。
- 网桥(链路层设备):根据MAC帧的目的地址对帧进行转发和过滤。
- 过滤通信量,增大吞吐量。扩大了物理范围,提高了可靠性。
- 透明网桥:能自学习构建转发表,对主机是透明的。
- 源路由网桥:源站以广播方式向欲通信的目的站发送一个发现帧,每个帧记录所经过的路由,发现帧到达目的地后沿各自路由返回源站。相对”透明网桥“,是不透明的。
- 多接口网桥(=以太网交换机):隔离冲突域,但不能隔离广播域。
网络层
数据交换
- 分组交换:数据报方式(无连接服务,因特网使用),虚电路方式(连接服务)
- IP数据报格式:首部4B,总长度1B,片偏移8B,DF,MF
- IPv4地址划分:主机号全0表示主机,主机号全1表示广播。网络号全0表示本网络,网络号127表示回环地址。
- 网络地址转换NAT:安装了NAT软件的路由器,处理内网和外网的 ip地址+端口号的映射。
- 子网划分:主机号前N位作为子网号。子网掩码(128,192,224,...,254,255)
- 无分类编址CIDR:IP地址后加上"/",然后写上网络前缀的位数。
- 例如192.199.170.82/27表示掩码27位,主机号5位,对应地址范围192.199.170.64~192.199.170.95
- 查找路由器时根据最长前缀匹配
- 超网
- ARP协议:完成IP地址到MAC地址的映射。检查ARP高速缓存,如果没有MAC地址,广播ARP请求分组,目的主机收到请求会向源主机单播一个ARP响应分组。ARP协议是自动进行的。
- DHCP协议:动态主机配置协议,应用层协议,客户/服务器方式,广播方式交互,基于UDP
- ICMP协议:网际控制报文协议,差错(或异常)报告
- ICMP差错报告报文(5种):终点不可达,源点抑制,时间超时,参数问题,改变路由(重定向)。但是对ICMP差错报告报文、后续数据报片、组播地址的数据报、特殊地址的不发送ICMP差错报告报文。
- ICMP询问报文:
- ping:测试主机之间连通性,使用了ICMP回送请求和回答报文
- traceroute:跟踪一个分组从源点到终点的路径,使用了ICMP时间超过差错报告报文
- IPv6:地址从32位(4B)扩大到128位(16B)
- 校验和字段彻底移除,扩展首部,更灵活。
- 即插即用(自动配置,不需要DHCP),不能在路由器分片。
- 首部长度必须是8B整数倍。
- 冒号十六进制记法(7个冒号),或者压缩形式(零压缩 如FF05::B3)
- 单播,多播,组播
- IPv6向IPv4过渡:双栈技术(同时启用两种协议),隧道技术(重新封装)
- 移动IP:内部代理和外部代理的通信过程,隧道
- 路由器(网络层设备):路由选择和转发分组
- 构造路由表,更新和维护路由表
- 根据转发表对分组进行转发
路由选择
- RIP协议
- 仅和相邻路由器交换,交换自己的路由表,每30s交换一次。
- RIP报文
- 应用层协议,使用UDP协议传送。
- 最多传送25个路由信息(20字节/路由)。
- 好消息传的快,坏消息传得慢(当一个网络消失后,则会逐渐更新该距离值到16才会停止)(参考水平分割技术,避免环路)
- 距离向量算法
- 对RIP报文,修改下一跳地址,所有距离加一
- 对目标网络Net,如果对应下一跳路由器是X,则直接更新(无论距离长短);若不是路由器X,则只保留距离更短的。
- 超过180s没有更新,则距离设置最大值16,表示不可达。
- OSPF协议:开放最短路径优先OSPF协议,使用Dijkstra计算最短路径
- 使用洪泛法向自治系统内所有路由器发送信息,发送“相邻的所有路由器的链路状态(带宽,距离,时延等)”,当链路状态发生变化时发送。
- OSPF分组用IP数据报传送(因为交换的信息量大,但要使报文尽量短),可分层次划分区域
- 每隔30min,刷新一次数据库中链路状态
- BGP协议:
- 与其他AS(自治系统)的邻站BGP发言人交换信息,交换网络可达性信息,发生变化时更新有变化的部分。
- 应用层协议,借助TCP连接(因为环境复杂,需要保证可靠传输),支持CIDR。
- BGP-4的四种报文:OPEN,UPDATE, KEEPALIVE, NOTIFICATION
- IP组播
- 源设备能够将分组发送给一组设备,它们被分配一个组播IP地址(一群共同需求主机的相同标识)
- 使用UDP,不产生ICMP差错报文。
- 一个D类地址标识一个组播组,只能用作分组的目标地址(有些是特定的组播地址了)。源地址为单播地址。
- 组播MAC地址以16进制 01-00-5E 打头,后23位来自D类IP地址(D类地址1110打头,因此有5位不使用,需要主机处理重复)
- IGMP协议
- 网际组管理协议,让路由器知道本局域网上是否有主机(的进程)参加或退出了某个组播组。
- 组播路由选择协议
- 找出以源主机为根节点的组播转发树
传输层
-
寻址与端口
- 复用:应用层所有的应用进程都可以通过传输层再传输到网络层。
- 分用:传输层从网络层收到数据后交付指明的应用进程。
- 端口:逻辑端口/软件端口,标识主机中的应用进程。
- 端口长度为16bit,能标识65536个不同的端口号(01023服务器熟知端口号,102449151服务器登记端口号,49152(110...)~65536客户端动态使用)
- FTP21, TELNET23, SMTP25, DNS53, HTTP80
- 套接字Socket=(主机IP地址,端口号),标识一个进程。
-
UDP协议:无连接的用户数据报协议
- 不可靠,无连接,时延小,适用小文件
- 只在IP数据报服务上增加很少功能,即复用分用和差错检测。
- 不保证可靠交付,面向报文,无拥塞控制
- 首部开销小,8B(而TCP为20B)
-
TCP协议:面向对象的传输控制协议
- 可靠,面向连接(虚连接),时延大,适用于大文件
- 提供全双工通信。发送缓存,接收缓存。
- TCP面向字节流。TCP报文段首部,看视频。
-
TCP连接管理
- 连接:三次握手。SYN洪泛攻击(解决方法:SYN cookie)
- 释放:四次握手。任何一方都能终止连接,结束后主机缓存和变量被释放。
- 一次正常的从连接到断开的过程:
- 请求连接,三次握手,需要1个往返传输时间(2RTT)
- 慢开始和拥塞控制,发送数据
- 请求释放,四次握手,需要1个往返时间 + FIN-WAIT-2 + TIME-WAIT
-
TCP可靠传输
- 可靠:保证接收方进程从缓冲区读出的字节流于发送方发出的字节流完全一样。利用重传机制。
- 如何确定重传时间:TCP采用自适应算法,动态改变重传时间RTTS(加权平均往返时间)
- ACK冗余,累积确认
-
TCP流量控制
- 流量控制:让发送方慢点,利用滑动窗口机制。
- 动态改变发送窗口大小,rwnd字段=400B,设每个报文100B,则窗口为4
- 接收到rwnd=0,停止发送数据,启动持续计时器。到期后发送一个零窗口探测报文,若返回现在的窗口值仍为0,则重新持续计时。
-
TCP拥塞控制
- 防止过多的数据注入到网络,是全局性问题,而流量控制是点到点的控制。
- 慢开始和拥塞避免。ssthresh慢开始门限值(初始为16,新的值为拥塞时窗口值一半)
- 当拥塞窗口足够大时,慢开始阶段对整体传输效率影响可以忽略,总体传输效率为峰值的75%。
- 快重传和快恢复。“快恢复”指拥塞时窗口降到一半,而不是从0开始。
- 如图,一开始窗口大小为1,第1轮次发送1MSS(编号0),收到确认后,扩展窗口大小为2,收到2个MSS(对应编号1,2)的确认ACK后,发送窗口调整为4(实际上增加的2个窗口,是在每次收到ACK后加一,累积的效果),这4个MSS(对应编号3,4,5,6)的确认ACK都收到后,发送窗口大小变为8,等收到编号14的ACK后(已经确认传输了15个MSS),发送窗口大小也变成了16,到达限值。因此进入拥塞避免阶段,必须再成功确认16个MSS已接收时,才调整发送窗口为17MSS(注意,此时对应的确认传送的数据量为1+2+4+8+16MSS,下次增加窗口大小时实际确认传输的数据量为1+2+4+8+16+17MSS)。直到窗口大小为24时,发生了超时(网络拥塞),则调整窗口大小为12,重复以上过程。
(来自相关课件)
应用层
- 网络应用模型:客户/服务器(Client/Server)模型,P2P(peer to peer)模型
- 域名解析系统DNS
- 域名(三级域名,二级域名,顶级域名)
- 域名服务器(本地域名服务器,权限,顶级,根)
- 域名解析过程(递归查询,迭代查询)
- 高速缓存
- 文件传送协议FTP(file transfer protocol)
- 简单文件传送协议TFTP(trivial FTP)
- 基于C/S协议
- Anonymous(匿名文件传输)
- TCP连接,实现可靠传输
- 一个主进程,多个从属进程
- 控制连接始终保持,数据连接保持一会
- 电子邮件SMTP
- 简单邮件传送协议SMTP:TCP连接,端口号25,C/S
- 邮局协议POP3:TCP连接,端口号110,C/S
- 网际报文协议IMAP:比POP协议复杂,可以看到邮箱的首部。
- MIME:多用途互联网邮件扩展
- 万维网和HTTP协议
- 统一资源定位符URL:<协议>://<主机>:<端口>/<路径>
- 超文本传输协议HTTP:
- 无状态
- Cookie是存储在用户主机中的文本文件,提供个性化服务
- 虽然用TCP连接,但是HTTP本身是无连接的。
- 两种报文:请求报文,响应报文