计算机网络
2019-03-07 10:48:44 0 举报
AI智能生成
计算机网络,根据哈尔滨工业大学李全龙老师的网络公开课总结
作者其他创作
大纲/内容
加密
分类
对称加密:加密和解密使用相同的密钥
客户端、服务器数量庞大,所以双方都需要维护大量的密钥,维护成本很高
每个客户端、服务器的安全级别不同,密钥极易泄露
非对称加密:加密和解密使用不同的密钥
密钥
对称密钥(共享密钥)
非对称密钥(公开密钥、私人密钥)
数字签名是加密过程,数字签名验证是解密过程
加密算法MD5
盐化:使相同的字符串拥有不同的hash值
盐值:hash过程中添加的额外随机值,减少数据库泄露带来的损失
工具
Spring框架自带MD5加密工具类DigestUtils——底层调用jdk的
java.security.MessageDigest
路由算法
链路状态路由算法OSPF
适用于较大型网络
基本思想:基于全局信息,所有路由器掌握完整的网络拓扑和链路费用信息
工作原理:泛洪告诉所有路由器,本路由器与邻居的链路状态信息;采用最短路算法,如Dijkstra算法
缺点:可能存在震荡——两点间路径方案在反复变动
距离向量路由算法RIP
适用于小型网络
基本思想:基于分散信息,路由器只掌握物理相连的邻居即链路费用;邻居间信息交换、运算的迭代过程
工作原理:路由器相互交换路由表,比如路由器A、B相邻,B->target=b,A的路由表更新:
A->target = a = min{A->target,A->B+B->target}
A->target = a = min{A->target,A->B+B->target}
缺点:无穷计数问题,即坏消息传播慢:故障导致B->target=∞,B会根据A的路由表得出
B->target = a+1,导致A->target = a+2,导致B->target = a+3 ……
B->target = a+1,导致A->target = a+2,导致B->target = a+3 ……
DHCP
地址管理
IP地址池
地址租约——DHCP服务器分配给客户端的IP地址有租约期,可请求延长租约
配置信息传递
操作流程
客户端发送discover广播报文,查询网络上的所有DHCP服务器及各自能offer的IP地址
DHCP服务器收到discover报文,回应offer报文(提供IP地址)
客户端根据收到的offer报文,选择一个DHCP服务器及其提供的IP地址;
广播request报文,向该DHCP服务器请求该IP地址,并公告其他DHCP服务器已选择某DHCP服务器的某IP地址
广播request报文,向该DHCP服务器请求该IP地址,并公告其他DHCP服务器已选择某DHCP服务器的某IP地址
DHCP服务器回应ACK报文,将IP地址分配给客户端
特殊情况:DHCP服务器在发送offer和request的短时间内把IP分配给其他主机
客户端进行冲突检测,若冲突,再次尝试获取后仍冲突,则发送release报文放弃该地址
客户端进行冲突检测,若冲突,再次尝试获取后仍冲突,则发送release报文放弃该地址
特殊情况:DHCP服务器在发送offer和request的短时间内把IP分配给其他主机
客户端进行冲突检测,若冲突,再次尝试获取后仍冲突,则发送release报文放弃该地址
客户端进行冲突检测,若冲突,再次尝试获取后仍冲突,则发送release报文放弃该地址
http2.0
目标
改进传输性能,实现低延迟和高吞吐量
不影响http的高层协议语义,不改变http首部、值、使用场景
即,现在的网站、应用无需修改都可以在http2.0上运行
即,现在的网站、应用无需修改都可以在http2.0上运行
措施
二进制分帧
原理:http2.0将http报文段分割为帧,采用二进制格式编码
结构
帧
HEADERS帧——传输首部字段
多个DATA帧——传输http消息体
SETTINGS帧——约定客户端和服务端的配置数据,如流量控制窗口大小
PUSH_PROMISE帧——服务端推送许可
PRIORITY帧——用于指定或重新指定引用资源的优先级
消息——http消息由1个或多个帧组成,比如请求消息由HEADERS帧和多个DATA帧组成
流——以消息形式发送,客户端发起的流具有奇数id,服务端发起的流具有偶数id
意义
与服务器的所有通信能在一个TCP连接上完成
保留http语义不受影响,从应用层看,和http1.x无差别
多路复用共享连接
原理:串行发送多个请求,各请求的各个帧可能交错
意义:解决了http1.x的队首阻塞
http1.0的队首阻塞——发生在客户端:对于同一个tcp连接,
只有前一个请求的响应收到了,然后才能发送下一个请求。
只有前一个请求的响应收到了,然后才能发送下一个请求。
http1.1的队首阻塞——发生在服务器端:对于同一个tcp连接,
流水线地发送多个请求,先接收到的请求的响应要先发送,
请求1的响应生成时间较长,即使请求2的响应已生成,要等待
流水线地发送多个请求,先接收到的请求的响应要先发送,
请求1的响应生成时间较长,即使请求2的响应已生成,要等待
请求优先级——PRIORITY帧
服务端推送
原理
客户端在SETTINGS帧中决定是否禁用此功能
服务端根据客户端的请求,提前返回多个响应,推送额外的资源给客户端
必须遵循请求-响应原则,只能借着对请求的响应推送资源
报头压缩
原理
HTTP 1.x每一次通信(请求/响应)都会携带首部信息用于描述资源属性
HTTP 2.0在客户端和服务端之间使用“首部表”来跟踪和存储之前发送的键-值对。
首部表在连接过程中始终存在,新增的键-值对会更新到表尾,不需要每次通信都需要再携带首部。
首部表在连接过程中始终存在,新增的键-值对会更新到表尾,不需要每次通信都需要再携带首部。
vs http1.x
http1.x以纯文本形式通信;http2.0采用二进制格式编码
http1.1流水线机制+多条tcp连接实现并行请求、响应;多路复用,http2.0只需要一个连接实现并行
服务端推送
报头压缩,降低开销
TCP的可靠传输
将数据截取为合理的长度
TCP将应用数据分割成认为最适合发送的数据块。UDP保持应用程序产生的数据报长度不变
失序数据重排序
既然TCP报文段作为IP数据报来传输,而IP数据报的到达可能会失序,因此TCP报文段的到达也可能会失序。
如果必要,TCP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。
如果必要,TCP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。
差错检测
校验数据报,如果检测出数据包有错,就丢弃报文段,不给出响应
确认响应
当TCP连接一端收到发自TCP连接另一端的数据,通常将推迟几分之一秒发送确认
超时重传
当数据错误 / 数据丢失时
当ACK丢失 / ACK迟到时
快速重传
当数据错误 / 数据丢失,接收到后续数据——连续3个重复ACK
丢弃重复
数据 / ACK迟到导致重传,导致重复分组
流量控制
拥塞控制
滑动窗口协议
原因:
停止等待协议VS流水线机制
停止等待协议VS流水线机制
停止等待协议:等待对方确认再发送下一请求,性能差
流水线机制:允许发送方收到ACK之前连续发送多个分组——序列号范围广,接收方缓存
类型
GBN(Go-Back-N)协议
累积确认:ACK(n)——确认序列号n及之前的分组均已被正确接收
乱序丢弃:乱序到达的n+2被丢弃,返回ACK(n)
超时重传:超时Timeout(n+1)——n+1及之后重传
SR(Selective Repeat)协议
单独确认:ACK(n)——仅确认序列号n的分组被正确接收
乱序缓存:乱序到达的被缓存,返回相应ACK
超时重传:超时Timeout(n)——仅重传分组n
TCP的滑动窗口协议
累积确认:不必对收到的每个分组发送确认,收到几个分组后,发送确认按序到达的最后一个分组
乱序??:TCP规范未规定如何处理——若缓存,增加选择确认机制SACK
超时重传:重传引起超时的segment;重启定时器
应用
TCP流量控制
定义:发送方控制发送速率,使接收方能够处理
措施
①接收方告知发送方接收窗口大小——发送窗口不能大于接收窗口
②发送方获知接收方窗口=0时,开启持续计数器,定时发送探测报文获知接收方情况——避免死锁
TCP拥塞控制
定义:发送方们控制发送速率,使网络能够处理
措施
①获知拥塞
超时
3个重复ACK
②控制拥塞窗口大小cwnd
建立TCP连接时,采用慢开始算法(cwnd从1开始,经过每个RTT时间,加倍)
cwnd=threshold时,采用拥塞避免算法的加性增(经过每个RTT时间,cwnd加1)
③控制门限threshold(发生拥塞)
由于“超时”——采用拥塞避免算法的乘性减(threshold减半),慢开始
由于“3个重复ACK”——采用拥塞避免算法的乘性减(threshold减半),快恢复(从threshold开始,加性增)
http
请求
请求行
请求方法 URL 协议版本
请求头
通用头
Connection字段:客户端和服务器进行了一次会话后,
服务器是否立即关闭网络连接
服务器是否立即关闭网络连接
Keep-Alive:使客户端到服务器端的连接持续有效
Close:立即关闭连接
Cache-Control字段:指定请求和响应遵循的缓存机制
请求头
实体头
消息体
响应
状态行(响应行)
协议版本 状态码
响应头(字段名:字段值)
消息体
发送窗口大小
取两者中较小值
取两者中较小值
0 条评论
下一页