[网络] 传输层 & 安全
2020-04-26 本文已影响0人
再凌
IPSec 和SSL
SSL位于传输层和应用层中间, IPSec是一个真实的网络层数据报, 都是通过加密的方法保证
SSL认证方式
- 客户声明自己支持的加密方式
- 服务器选择一个加密方式, 并附带自己的公钥
- 客户验证公钥, 生成Pre密码, 发送给服务器
- 服务器和客户利用Pre密码生成用于通信的密码
- 客户发送过程(1) 的MAC, 验证(1) 是否被篡改
- 服务器发送过程(2)的MAC, 验证(2) 是否被篡改
关闭SSL连接时, 首先先关闭SSL, 才能关闭TCP,(防止中间人提前中断)
UDP
udp是二元组鉴别[目的端口, 目的IP], 只要一样, 就交给一个函数处理
UDP: 报头小(8B), 连接快, 不受拥塞控制影响, 不维护状态
TCP
滑动窗口:
发送方 | 接收方 | 成因 |
---|---|---|
>1 | 1 | 回退N |
1 | 1 | 停等 |
>1 | >1 | 选择重传SR |
重传
回退N: 累计确认, 维护一个定时器, 如果定时器超时, 从超时的那个起的N个都重传
选择重传SR: 逐个确认, 每一个报文都维护定时器,
快速重传: 接收方发现某个报文没有, 连续发送ACK表示自己缺少的报文
拥塞控制算法
慢启动: 拥塞窗口22*2的递增,出现丢包时恢复为1, 设置阈值为最大的/2
拥塞避免: 再次增长时, 达到阈值, 不再乘递增, 改+1+1
快速恢复: 出现由于连续ACK导致的丢包时, 拥塞窗口不改为1, 而是改为阈值+ACK次数, 加法递增
TCP分岔: 使用CDN网络, 在缓存服务器和主服务器建立大传送窗口的TCP连接并保活, 客户连接CDN服务器可以大大降低RTT的时间
TCP 关闭阶段
time_wait: 主动请求FIN方的状态, 等待2MSL后释放链接. 缩短方法: 通知操作系统要重用此端口, 或使用HTTP1.1
close_wait过多: 被动FIN方, 接收到FIN后仍然忙于读写. 增加心跳检测(定时给客户端发送一个心跳包, 如果收到RST,则直接关闭端口)