【学习笔记-CS144 计算机网络】
应用层
概述
应用层是开放系统的最高层,是直接为应用进程提供服务的。
应用层协议和应用
主要三种连接模式
-
www(HTTP):服务器读取并处理、响应请求。
-
BitTorrent:众多客户端自发构成文件部分,下载上传时由Tracker分配调度查询所处客户端。.
-
Skype:找中间人传话,请求双房打开两座客户端之间的NAT隔离保护。
DNS
概念:它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。
FTP
特征:
-
使用 TCP 传输
-
基于客户-服务器(C/S)模型而设计
-
允许用户以文件操作的方式与另一主机相互通信
P2P
概念:整个网络结构中不存在中心节点(或中心服务器)。在P2P结构中,每一个节点(peer)大都同时具有信息消费者、信息提供者和信息通讯等三方面的功能。但也有如杂P2P的有专门负责保留供应信息数据的中心节点。
传输层
概述
主要任务:
-
对接端口
-
连接管理
-
分割和重组上下数据
-
差错和纠错功能
-
流量控制
传输层协议
TCP
特点:
-
可靠性高
-
端到端,面向连接
-
基于字节
-
速度慢
向下传递操作步骤:
-
接受来自应用层的8位字节的数据流,并根据MTU分段。
-
封装上队头标记,打包成数据包
-
将数据包传送给IP层(网络层)
TCP队头标记:(图片不贴)
-
端口(16*2):源端口和目的端口
-
序列号seq(32):一般是有效数据的起始位置
-
确认号ack(32):一般是有效数据的结束位置
-
Data Offset数据偏移(4):队头的总长,一个1标识四字节。
eg:1111,就是15(1111)*4(bit) = 60(bit),整个队头有60字节
-
保留位(4):目前还没制定用途
-
控制位(1*8):都是0或者1
-
CWR:用于 IP 首部的 ECN 字段。ECE 为 1 时,则通知对方已将拥塞窗口缩小。
-
ECE:在收到数据包的 IP 首部中 ECN 为 1 时将 TCP 首部中的 ECE 设置为 1,表示从对方到这边的网络有拥塞。
-
URG:紧急模式
-
ACK:确认序列号(ACK)有效。
-
PSH:推送,接收方应尽快给应用程序传送这个数据。
-
RST:该位为 1 表示 TCP 连接中出现异常必须强制断开连接。为重建链接做准备。
-
SYN:初始化一个连接的同步序列号(SEQ)
-
FIN:该位为 1 表示今后不会有数据发送,希望断开连接。
-
-
window(16):表示自己能接受到的流量大小(对方返传数据)
-
Checksum(16):校验数据包长度和是否正确
-
Urgent Pointer(16):紧急情况标识
-
options(32*N):额外用途
-
数据包
流程:建立连接
-
客户端发送【seq=a,SYN=1】给服务端
-
服务端发送【ack=a+1,seq=b,SYN=1,ACK=1】给客户端
-
客户端发送【seq=a+1,ack=b+1,ACK=1】给服务端,成功建立
流程:终止连接
-
客户端发送【seq=a,FIN=1,ACK=1】给服务端,
-
客户端进入FIN-WAIT1
-
-
服务端发送【seq=b,ack=a+1,ACK=1】给客户端,
-
服务端进入CLOSE-WAIT
-
客户端在接收到后进入FIN-WAIT2
-
-
服务端再发送【seq=b,ack=a+1,FIN=1,ACK=1】给客户端
-
服务端进入LAST-ACK
-
客户端在接收到后进入TIME-WAIT
-
-
客户端发送【seq=a+1,ack=b+1,ACK=1】给服务端
-
服务端接收到后CLOSE
-
服务端如果没有收到(ACK丢失),会再次发来FIN。
处于TIME-WAIT的客户端要再发一个ACK。
-
拥塞控制
原理:通过出现超时来判断网络出现拥塞
-
慢开始:一开始发送内容量较少,之后按指数增长增加,直到达到慢开始门限,使用拥塞避免算法
-
拥塞避免:每经过一个时间单位,就把发送内容量按线性增长增加
-
出现超时:使用慢开始
-
快重传:出现多个ACK,表示数据丢失。此时发送缺失报文
-
快恢复:将门限调整为此时大小的一半,并执行拥塞避免算法3
滑动窗口
原理:根据是否收到ACK和对方缓冲区大小来移动边界
模型:三个部分
-
存放已经发送且收到的ACK数据,0~1000
-
存放准备发送或者已经发送但没有收到ACK的数据,1001~4000
-
存放尚未发送的数据,4001~5000
假设窗口大小为3000,【1001~4000】
发送端工作:
-
连续发送三批数据,0~1000,1001~2000,2001~3000【1001~4000】
-
对方机子返回响应包,我方机子接收到1001~2000的ACK,将窗口左边界向右移1000【2001~4000】
-
对方的响应包含了缓冲区500,我方窗口再向右移动500【2001~4500】
报文丢失(快重传机制)
关键点:接收方必须按序回复,如果中途接收的序列存在断档,则不会发送断档之后的ACK,只会不断重复断档前的ACK。但断档后部分接收的数据包也会存入服务端的缓存。
-
连续发送【1001~2000】,【2001~3000】,【3001~4000】
-
【2001~3000】发送失败
-
服务端不断重复【2001+ACK】也就是第一个包成功标记
-
经过一段时间后,客户端还没有收到【3001+ACK】,则重发【2001+3000】
-
服务端接收成功,发送【4001+ACK】,表示【2001+3000】和【3001+4000】已经接收成功。
UDP
特点
-
可靠性低
-
一次性
-
无拥塞控制
-
不返回错误信息
-
不合并控制报文大小
-
速度快
向下传递操作步骤:
-
接受来自应用层的数据流,直接封装
-
传递给IP层
UDP队头标记:(图片不贴)
-
端口(16):源端口和目的端口
-
UDP总长度(16)
-
UDP检验和(16)
流程:
交给IP层处理
网络层
概述
主要功能:
-
寻址和路由选择
-
建立和维护连接
-
差错和纠错功能
-
流量和拥塞控制
-
数据分片和重组技术
网络层协议
NAT
功能:
-
组建私有局域网,动态/静态分配给私网内主机IP地址。
-
提供对外和对内交流接口,具有改变IP头部地址信息能力。
类似于 A(a) === (b)NAT(c) === (d)Other
-
让网络访问必须由私网侧发起,公网无法访主机。
端口映射方式:
-
全锥形:私网主机对外某一主机建立联系后,NAT将(a==b)映射为(c==d),外界所有陌生或熟悉主机都可以由(d==c)映射到(b==a)再私网主机传输数据。
-
受限锥形:私网主机对外某一主机建立联系后,NAT只和那一主机进行IP映射绑定,外界陌生主机无法使用这一条通道。
-
端口受限圆锥:相较于受限锥形的IP绑定,这个将范围缩小至端口和IP同时绑定,但可以单端口绑定多端口。
-
对称形:相较于端口受限圆锥,这个将范围缩小至端口对端口的单对单绑定。
IP有关协议
IPv4:32bits, a,b,c,d,0~255。有数字划分规范,ABCD类。
IPv6:128bits, 能解决IPv4网络地址资源数量的问题,而且也解决了多种接入设备连入互联网的障碍。
网络(子网)掩码:它用来指明一个
类别 | 子网掩码的二进制数值 | 子网掩码的十进制数值 |
---|---|---|
A | 11111111 00000000 00000000 00000000 | 255.0.0.0 |
B | 11111111 11111111 00000000 00000000 | 255.255.0.0 |
C | 11111111 11111111 11111111 00000000 | 255.255.255.0 |
网络地址:子网掩码与IP地址按位与运算后的地址
CIDR划分法:用于给一些特定区域内的用户分配IP地址以及在互联网上有效地路由IP数据包的对IP地址进行归类的方法。用于弥补A类的浪费和BC的膨胀不足。
eg: 128.14.35.7/20 = 10000000 00001110 00100011 00000111
即前20位是网络前缀,后12位是主机号,那么我们通过令主机号分别为全0和全1就可以得到一个CIDR地址块的 最小地址和最大地址,即
最小地址是:128.14.32.0 = 10000000 00001110 00100000 00000000 最大地址是:128.14.47.255 = 10000000 00001110 00101111 11111111 子网掩码是:255.255.240.0 = 11111111 11111111 11110000 00000000
IP报头格式:
-
版本(Version):4bits ,有IPv4和IPv6这两个版本。
-
报头长度(Header Length):4bits ,表示 IP报文头部的长度,以32比特(4字节)为单位递增,该字段的最小值为5
-
服务类型(Type of Service):8bits。该字段指出应该如何处理数据报文。
-
总长度(Total Length):16bits,表示该IP报文的总大小,包括报头和携带的数据。
-
标识(Identification):16bits,唯一标识原始IPv4数据包的数据分片。
-
标志位(Flag):3bits,主要用于指出是否进行分片以及是否有更多分片。
-
分片偏移(Fragment Offset):13bits,当一个报文过大不能够在一个数据帧中传输时,可以使用分片和重组功能,这里主要是用于表示偏移量,即将一个报文分开封装,分别发出,到达目的地再根据偏移量进行重组。
-
存活时间(Time To Live,TTL):8bits,表示报文在网络中可以生存的时间,当计时器到期时该报文将被网络丢弃。
-
协议(Protocol):8bits,标识承载数据使用什么协议
-
报头校验和(Header Checksum):16bits,是对报头进行循环冗余校验(CRC)的结果
-
源 IP地址(Source Address):32bits,表示发送者的 IP地址
-
目的 IP地址(Destination Address):32bits,表示接收者的 IP地址
-
选项(Options):用于安全、测试等目的。
-
填充(Padding):长度可变
ICMP协议
主要功能:
-
确认IP包是否成功到达目标地址
-
通知在发送过程中IP包被丢弃的原因
DHCP协议
子网内,由DHCP服务器动态分配IP地址
路由算法与路由协议
RIP协议【距离-向量路由算法】
RIP路由协议的工作流程主要包括路由表生成和路由表更新维护两部分,并基于距离矢量算法计算路由,且遵循度量值越小则越优的路由选取原则。
距离矢量协议:每个节点只与它的直接邻居交换信息。
-
生成路由表
. 对相邻设备发送请求全部路由信息 2. 接受相邻设备的相应信息,并更新自己 3. 将更新后的数据发送给相邻设别
-
更新维护路由表
. 更新定时器:一段时间发送更新报文 2. 无效计时器:决定一条线路信息有效时长 3. 清除计时器:决定清除无效路由的时间 4. 抑制定时器:无效后暂缓接收请求,减少目的设备震荡产生的影响
-
路由表计算
. 根据距离矢量算法进行路由计算
-
防环路机制
-
环路:
A-B-C,C无效,A申请连接C。数据流从A到B,但B此时连接不到C,而在A中仍然保存了A-B-C的未更新路径,从而又跳到了A,形成环路。
-
解决方案:
1. 水平分割
1. 从哪个接口学习到的RIP路由信息,就禁止从该接口发送出去
2. 不允许将从某一邻居学习到的路由信息再发送回该邻居(NBMA)
2. 毒性逆转对于从某一接口学习到的路由信息,当从该接口发出去时将该路置为16(即路由不可达)
-
触发更新
-
当路由信息发生变化,邻居及时更新并向外不断传递。
-
-
-
OSPF协议【链路状态路由算法】
链路状态协议:通过广播的方式和所有节点交换信息,存储网状图。
-
存在Router ID:标识路由器
-
进入链路状态:洪泛到其他邻居节点,并接受来自邻居的信息。存储完毕后跑最短路计算,构建数据库。
-
使用COST(开销)作为度量值。
BGP协议【区域间路由协议】
概念:区域间路由联系协议。当BGP运行于同一AS内部时,被称为IBGP;当BGP运行于不同AS之间时,称为EBGP
工作方式:
-
通过报文驱动
-
对等体进行TCP连接,通过Open报文协商
-
BGP连接后交换整个BGP路由表,并发送keepalive维持连接,不定期更新
-
发送Notification报文进行报错,BGP连接中断
路由聚合:BGP路由表十分庞大,向对等BGP通告时可以发送聚合后路由
链路层
概述
主要功能:
提供透明的、可靠的数据传送基本服务
以太网
最初设计目标
将计算机和其他数字设备通过一条共享的物理线路连接起来的,这个介质称为以太。
拓扑结构
如总线型和星型拓扑
CSMA/CD
避免多个设备在同一时刻抢占线路的情况
-
CS:载波侦听。在发送数据之前进行侦听,以确保线路空闲,减少冲突的机会。
-
MA:多址访问。每个站点发送的数据,可以同时被多个站点接收。
-
CD:由于两个站点同时发送信号,信号叠加后,会使线路上电压的摆动值超过正常值一倍。据此可判断冲突的产生。边发送边检测,发现冲突就停止发送,然后延迟一个随机时间之后继续发送。
最小帧长
由于CSMA/CD算法的限制,最小帧长为64字
避免冲突:A站点已经将一个数据包的最后一个Bit发送完毕,但这个报文的第一个Bit还没有传送到距离很远的B站点。B站点认为线路空闲继续发送数据,
冲突域
如果某个CSMA/CD网络上的两台计算机在同时通信时会发生冲突,那么这个CSMA/CD网络就是一个冲突域
广播域
一个节点发送一个广播报文其余节点都能够收到的节点的集合,就是一个广播域
交换式以太网和共享式以太网
-
交换式以太网
-
用交换机连接接口
-
-
共享式以太网
-
广播形式发送数据
-
交换机
工作方式:
1. 存储-转发以太网帧(CSMA/CD)
1. 交换机在端口上接受计算机发送过来的数据帧,根据帧头的目的MAC地址查找MAC地址表然后将该数据帧从对应端口上转发出去,从而实现数据交换。
2. 交换机分割冲突域,每个端口独立成一个冲突域。每个端口如果有大量数据发送,则端口会先将收到的等待发送的数据存储到寄存器中,在轮到发送时再发送出去。
2. 检验到达目的地MAC地址,选择性转发
特征:
-
透明:主机感知不到
-
即插即用
-
自学习
MAC地址:
网卡、交换机和路由器的每个端口都具有一个MAC地址,由设备生产厂商固化在设备的EPROM中。
链路层协议
地址解析协议(ARP):
前置:每台设备包括路由器都安装了独一对以太网卡。在经过路由器传输时涉及到两种网络,需要封装一层链路层上的网卡地址用于记录经过的路由器和操作状态等,作为硬件层面的标识。
以太网头部:
APR协议:
通过广播自己的地址,接受到的每个主机/路由器都会检查 ARP 请求包中的信息,如果 ARP 请求包中的目标 IP 地址
和自己的相同,就会将自己主机的 MAC 地址写入响应包返回主机 A。
PS:在Ipv6中已经被邻居发现协议(NDP)替代。
PPP协议
两个对等节点之间的IP流量传输提供一种封装协议。
PPP具有错误检测能力,但不具备纠错能力