计算机网络
计算机网络五层结构:物理层 链路层 网络层 运输层 应用层 各层之间黑盒
协议依赖于连接 必须能连在一起交换信息,否则协议无意义 协议定义了两个或者多个通信实体之间交换的报文格式和顺序,以及报文发送和接收或其他事情所采取的动作
内容层头+IP协议头+ TCP协议头+http协议头+正文
TCP协议最前2字节源端口号,后2字节目标端口号,再后4字节序列号,再后4字节ACK号,中间用data offset分割,再往后4个位为载荷
http请求的第一行为起始行,响应的第一行为状态行,请求和响应第二行开始到第一空行为止为头部,第一空行后为正文。 http1中请求默认关闭TCP连接,效率低 http2使用帧实现多路互用,头部压缩,缓解队头阻塞,但不能解决TCP队头阻塞 http3使用Quic协议解决对头阻塞 降低握手延迟,实现首次1rtt,后续0rtt
告诉DNS你需要查询的域名,DNS返回对应IP,使用CDN后,一个人访问一个网站,浏览器先向本地DNS查询该域名对应的IP,DNS将其反馈到服务器,服务器发现其为CDN的加速域名,没有返回IP,而是返回新的DNS地址(CDN)管理,本地DNS向CDN的DNS发起请求,CDN的DNS根据用户IP确定最近的CDN服务器,返回其IP。 但是仅仅距离最近不一定最快!
每个CDN服务器中不一定有全部的数据,需要而没有时会向总服务器请求数据,并将其存储下来。CDN服务器有容量限制,一定时间后会按一定规则进行清理。
websocket协议 服务器可以主动发送消息,延迟比http低,但其建立需在http协议的基础上进行
网络安全 实现机密性和完整性,和实现身份验证都需要双方有秘密信息:根证书中的公钥
为了实现https 首先使用PKI对服务器提供的证书进行验证,使用验证后证书中的公钥,与服务器交换对称加密的算法和秘钥,使用对称加密的算法和密钥对明文进行加密 - 保证https的安全。客户端可以确定服务端身份,服务端却不知道客户端是谁,为了知道客户端是谁,使用http的应用层,例如登录应用使用的账号密码
PKI保证系统中预置了可信任根证书,所有网站会找其中一个根证书或根证书授权的中间证书签名,客户端拿到一个网站的证书后,挨个向证书签发者验证证书合法性,如果根证书确认次一级证书的签名,则可以信任该网站证书,验证完成后再使用其拥有的非对称秘钥与服务端进行交换。