网络组成 1.主机:客户端和服务端(提供信息或接收信息 2.路由器(转发主机的信息 3.网络协议(提供格式
网络结构:网络的网络 区域网络,城域网和广域网 分层:物理层 链路层 网络层 运输层和应用层
电路交换(会堵塞,只能一个“顾客”接线 分组交换(传真 不会预留资源 按顺序输出 分组交换能够保证数据运输的速度和准确率,降低丢包率等
网络分层:不关心包裹内容
协议:定义在两个或多个通信实体之间交换的报文格式和顺序,以及报文发送和接受一条报文或其他事件所采取的动作 标头:包裹的东西 载荷:包裹的内容
TCP协议格式 2字节:源端口号 后2个:目标端口号 后4:序列号 后4:ack号 后4位:载荷
web中的网络 HTTP协议: 等服务端完全响应才能下一个请求(不能插入请求 当一个请求非常大或需要时间处理时会造成队头堵塞 短线:发送多个请求,但没帮助解决队头堵塞问题 方法:建立多条HTTP连接(成本 所分带宽也短 时间也会变长
HTTP1.1:无法多路复用
HTTP2:帧(不同于链路层的帧 表示每个数据包属于哪个请求 前3:表示载荷的长度 第四:表示帧的类型 第五:对应类型的含义 第六字节的第一位为保留位 剩下31位帧所留的id 剩下的为帧的载荷 好处:调整响应传输的优先级,头部压缩,server push http2:队头堵塞 但是在TCP上 tcp包1丢包后告诉服务器丢失 重新接收后 再接收剩下的TCP包 HTTP2:3RTT启动
HTTP3:QUIC 现存网络设备对TCP和UDP支持已经僵化 UDP不靠谱(丢包后不管)(到不到什么时候到都不管)但QUIC靠谱 QUIC可以为除HTTP协议以外的应用层协议提供支持 1-RTT: 第一次与服务端联系时 请求要把钥匙(证书) 告诉客户端下次连接可以直接用 0-RTT: 二次访问:直接用密钥加密发送给服务端
CDN:无法突破的物理极限 物理距离的延迟(网络节点的跳转 服务器能承载的网络是有限的 CDN:DNS挟持 域名解析一般由网站自己处理 要加速的域名则重定向到CDN厂商的域名解析服务处理 CDEN厂商根据来源确定最近的CDN服务器的ip 用户直接访问最近的CDN服务器 拉策略:向最近的看看有没有 没有就向总部申请,发送后保留 推策略:向存着,用户发出申请,有则直接给,没有则向总部请求
CDN类似于网络节点的跳转,能降低网络运输的时延,提高用户的上网体验等
websocker:不用担心连接问题 是HTTP的升级 有状态的持久连接 服务端可以主动推送消息 用websocket发送信息延迟比HTTP低
网络安全 机密性:攻击者无法获取通信内容 完整性:攻击者对内容进行篡改能发现 身份验证:无法伪装成通信的其中一方 对称加密:加密解密用同样的密钥 非对称加密:加密解密不用相同的密钥
密码散列函数(哈希函数 输出:固定的哈希值 找到两个不用的输入让经过密钥散列函数后有相同的哈希值,在计算上是不可能的 加密需要加密算法和密钥等
完整性和身份验证相互关联 想要通过明文通信交换秘密信息,通信双方需要先有秘密信息 1.完整性: 有明文m,密码散列函数H 将m h 得出新信息m+h 中心计算得出h‘对比二者 (想要实现完整性,通信双方需要先有秘密信息 2.身份验证: 签名:用于鉴别身份和防止伪造 非对称加密:公钥加密只能用私钥解密 私钥加密只能用公钥解密 数字签名:对铭文内容的哈希值使用私钥加密 验证者使用公钥验证 消息:原文+数字签名 一般用于公开内容(公钥的证书)进行数字签名,防止篡改 想要实现身份验证 需要先有秘密信息 即根证书(大哥)中的公钥
HTTPS:把HTTP的明文转换成密文 在验证身份 即HTTPDS HTTPS=HTTP+TLS TLS=身份验证+加解密 身份验证靠PKL 服务端身份验证靠PKL 客户端身份验证靠HTTP协议