计网总结
传输层
udp和tcp的区别
tcp面向连接的、可靠的数据传输层服务
udp是无连接的、不可靠的数据传输服务
是否需要连接
- udp
user datagram protocol
数据发送时,不需要建立连接 - tcp
transmission control protocol
数据发送前,需要完成三报文握手,建立tcp连接;数据传送结束后,需要完成四报文挥手,以释放连接
对于单播、多播、广播的支持
- udp支持 单播、广播、多播的传输,即udp支持一对一、一对多、一对全的传输模式
- tcp仅支持一对一的传输模式
对于报文的传输处理
- udp是面向应用报文的
- tcp是面向字节流的
对于数据传输可靠性的支持情况
IP可能会出现 丢失、无码
- udp是无连接不可靠的传输服务,而网际层同样也是无连接不可靠的传输;在传输层,udp会进行checkSum的校验,错误,则直丢弃数据
- 基于tcp,不会出现 误码、丢失、失序、重复传输等传输差错
适用场景
- IP电话、视频通信、日志传输
- 文件传输、电子邮件
首部格式
小结
- udp
- 无连接
- 支持一对一、一对多、多对多的通信模式
- 面向应用数据报
- 尽力而为
- 首部开销小
- tcp
- 面向连接
- 仅支持一对一
- 面向字节流
- 可靠传输,使用流量控制、拥塞控制
- 首部开销较大,最小20B,最大60B
tcp的首部格式
- 源端口号 ;目的端口号
- 序号: 占 32bit;当序号增加到最后一个时,下一个序号又回到0。用途:指出本 TCP 报文端数据载荷的第一个字节的序号
- 确认号 占 32bit;当序号增加到最后一个时,下一个序号又回到0。用途:指出期望收到对方下一个TCP报文段的数据载荷的第一个字节的序号;同时也是对之前收到的数据的确定ACK
- 确认标志位ACK:ACK取值为1,确认字段有效。ACK取值为0,确认字段无效。
- 数据偏移量
- 窗口:指出发送本报文端的一方的接收窗口的大小;经常用于控制对方的发送数据大小,这就是所谓的 流量控制
- 校验和字段:
- 标志位
- syn:用于TCP三报文握手,建立连接;SYN为一时,要么是一个连接请求报文,要么是一个连接相应报文
- FIN 用于四报文挥手释放连接;FIN为1时,表明此TCP报文段的发送发已经将全部数据发送完毕,现在要释放TCP连接
- RST用于复位TCP连接
- 扩展首部
- MSS:指出TCP报文段数据载荷部分的最大长度,而不是整个TCP报文段的长度
三次握手 四次挥手
三报文握手
三报文握手可以解决一下问题:
- 使得TCP通信双方能知道对方的存在
- 使得TCP通信双方能协商一些参数(最大报文段长度、最大窗口大小、时间戳)
- 使得TCP双方能对运输实体资源进行分配和初始化。运输实体包括:缓存大小、各状态变量、连接表中的项目
是否可以使用两报文握手代替三报文握手
避免资源浪费
如果客户端发送的
SYN
报文在网络中阻塞了,重复发送多次SYN
报文,那么服务端在收到请求后就会建立多个冗余的无效链接,造成不必要的资源浪费。同步序列号
- 接收方可以通过序列号去除重复的数据
- 接收方可以更具数据包的序列号按需接收
总结:
- 【两次握手】:无法防止历史连接的建立,会造成双方的资源浪费,也无法可靠的同步双方序列号
- 【四次握手】:三次握手已经理论上最少可靠连接建立,不需要使用更多的通信次数
如何面对syn 攻击
- 增大 半连接队列大小
- 减少服务器的 syn+ack 的重发次数
四报文挥手
MSL max segment LifeTime
如何保证TCP的可靠传输
bit error 、丢包、
检测、重传、确认
滑动窗口 pipeline
需要有更大的序列号范围
发送方和接收方需要更大的存储空间以及缓存分组
GBN
发送窗口大小 > 1
,接收窗口大小 = 1
;此时只能顺序接收,
SR
发送窗口大小 > 1
,接收窗口大小 > 1
;此时只能顺序接收,
三次握手
syn、syn-ack、ack来连接建立
数据传输阶段
使用确认和重传机制来保证数据丶完整性和顺序性
四次挥手
FIN、ACK、FIN、ACK ,这个过程确保了连接的彻底关闭,数据的完整性。
为什么需要 2MSL
MSL
是 max segment lifetime 。是网络中TCP报文段能够存活的最大时间。他表示一个报文被发送到网络中,到他被认为已经失效的最大时间。
TIME_WAIT状态的作用
- 确保所有报文段的正确交付: TCP是一种可靠的传输协议,保证数据的准确传输。在四次挥手中,最后一个ACK报文段可能会丢失。如果服务器没有收到这个ACK,它会重传它的FIN报文段。如果客户端不处于TIME_WAIT状态,它可能已经释放了相关资源,无法处理重传的FIN报文段。这会导致服务器无法正常关闭连接,可能导致资源泄漏。TIME_WAIT状态确保客户端在一定时间内保持连接资源以处理可能的重传报文段。
- 避免旧连接的数据干扰新连接: 在网络环境中,延迟和路由问题可能导致旧的TCP报文段在网络中滞留。如果一个新的连接使用了相同的IP地址和端口对,这些滞留的报文段可能被误认为是新的连接的数据,导致数据混乱。通过让连接在TIME_WAIT状态下保持2MSL的时间,可以确保所有旧的报文段在这个时间内都已经失效,不会干扰新的连接。
TIME_WAIT状态的2MSL时间是TCP协议设计中的一个关键因素,旨在保证连接的优雅关闭和数据的正确交付。通过等待2MSL时间,可以确保所有旧的报文段在网络中失效,防止数据混乱,并且提供足够的时间来处理可能的FIN重传,确保双方都能正常关闭连接。
TCP的流量控制
表现:分组丢失、分组延迟过大
向发送方 说接收窗口将变小(TCP报文中的字段),来完成TCP的流量控制
TCP的拥塞控制
慢开始
拥塞避免算法:线性加一,当发生重传时,sstch更新为 sstch/2,cwnd更新为1
快重传:
快恢复:当收到三个重复ack时,sstch/=2 , cwnd更新为sstch
TLS连接建立
- clientHello
- 客户端支持的TLS协议版本
- 客户端随机生成的
client random
- 客户端支持的密码套件列表
- serveHello
- 确定TLS的版本
- 服务器生成
server random
- 确定密码套件列表
- 服务器的数字证书
- 客户端回应
- 取出服务端公钥
- 发送一个随机数
pre-master key
- 通知加密算法发送改变,随后的信息使用
会话密钥
加密通信 - 客户端握手结束通知,将之前按发送的数据做一个摘要,用来供服务端检验
- 服务端的最后回应
- 接收到客户端的第三个随机数之后,通过协商的加密算法,计算本次通信的
会话密钥
- 加密通信算法改变通知,表示随后的会话使用
会话密钥
通信 - 服务器握手结束通知,将之前发送的内容的数据做摘要,用来供客户端检验
- 接收到客户端的第三个随机数之后,通过协商的加密算法,计算本次通信的
连通性和演示如何查看
ping使用的是 ICMP(Internet Control Message Protocol)
ICMP是TCP/IP协议栈的一部分,用于在IP网络中发送控制信息和错误报文。需要注意 ping不通并不意味着http请求会不通。因为有的服务器的防火墙是会禁用ICMP协议的。4
socket 的信息如何查看
sar
(System Activity Reporter)指令用于收集和报告系统的活动情况,包括CPU利用率、内存使用情况、磁盘IO、网络流量等。通过分析sar命令输出的报告,可以了解系统的性能指标,帮助诊断系统性能问题、优化系统配置、规划资源调度等。
sar命令通常结合选项来使用,常见的选项包括:
- -u:显示CPU利用率。
- -r:显示内存使用情况。
- -b:显示磁盘IO活动。
- -n:显示网络活动情况。
网络吞吐率和PPS如何查看
使用 sar
可以查看当前网络的吞吐率和PPS
- sar -n DEV,显示网口的统计数据;
- sar -n EDEV,显示关于网络错误的统计数据;
- sar -n TCP,显示 TCP 的统计数据
数据链路层
封装成帧
封装成帧就是指将数据链路层给上层交付的协议数据单元添加帧头和帧尾
- 帧头和帧尾中包含重要的控制信息
- 帧头和帧尾的作用之一是 帧定界
透明传输是指数据链路层对上层交付的传输数据没有限制,好像数据链路层不存在一样
- 面向字节传的物理链路层使用字节填充
- 面向比特的物理链路层使用比特填充的方式实现透明传输
为了提高帧的传输效率,应当使帧的数据部分尽可能的长
MTU max transfer unit
差错检验
检错码只能检测是否出现错误,但不能定位问题,更不能解决问题。
奇偶校验
循环冗余校验码
CRC有很好的检错能力,虽然计算复杂,但已于用硬件实现,因此呗广泛呗应用于数据链路层。
计算过程举例
比特差错是传阿叔差错的一种
分组丢失、分组失序、分组重复
网络安全
加密原理
对称加密
公开密钥加密
认证
如何拿到可到的公钥
证书的形式
- 保证报文的完整性
方法:
msg + ka_(msg) 发送给 Bob
Bob 使用 ka+(ka_(msg))判断是否等于msg
但上面这种方法的报文可能很长,我们可以使用报文摘要的方法来代替完整的长报文
改进:可以使用MD5或者是sha-1的散列函数
msg+ka_(hash(msg))
比方:一车的水果,将他们打成果汁,用其中的一滴果汁,当作这一车水果的 替代。很难找到另一车水果打完汁后和他一摸一样。
密钥分发
- KDC&CA
网络层
IP数据报的格式
ARP
address resolution protocol
- 主机A会发送广播ARP请求,询问对应IP地址的MAC地址
- 同一个链路中的所有设备接收到ARP请求后,拆开去看,如果主机BIP地址和自己的相同,则将自己的MAC地址塞入ARP响应中,发送给主机A
- 同时,主机A会见对应的IP地址和MAC地址的对应关系缓存起来,下次可以直接使用,而不是再去发送广播报文
- 最后,MAC地址的缓存存在时间限制,当过期,内容被清除
DNS
domain name system 域名解析
迭代&&递归
ICMP
Internet control message protocol 互联网控制报文协议
ICMP的主要功能包括:确认IP包是否因为某种原因未能达到目标地址,那么这个具体的原因由ICMP负责通知。
DHCP
dynamic host control protocol 动态主机配置协议
IP地址、子网掩码、默认网关、DNS服务器以及租用期
NAT NAPT
network address transfer 网络地址转换
将多个私有IP地址转为共有IP地址,其中的私有IP地址由公有IP地址的port进行区分
多个不同的私有IP可以使用同一个共有IP地址对外通信,由NAT路由表存放对应私有IP地址和公有IP地址的相应端口的对应关系
期末
点对点ppp协议是目前使用最广泛的点对点数据链路层协议
发送时延: 分组长度/发送速率
传播时延:信道长度/电磁波传播速率
处理时延
CSMA/CD
- 主机A侦听信道,意图发送数据
- 若信道忙,那就持续侦听信道。等待空闲
- 若信道空闲,则一边进行碰撞检测,一遍发送数据
- 若发生碰撞,则停发送数据
- 等待一段时间后,再侦听信道并重发
争用期 碰撞期
最短帧长
RIP路由表更新
- 相同的下一跳,信息不同,更新
- 不同的下一条,比较距离,选择近的
- 新的,直接插入
IP的格式问题
IP地址的聚合
IP地址的分配问题
IP数据报的拆分问题
路由转发
流表
自学习算法