网络八股

网络八股
MiloHTTPS和HTTP有哪些区别
- HTTP数据传输是明文的,容易受到攻击。而HTTPS在HTTP的基础上增加了SSL/TLS协议作为加密层,确保数据传输的安全性。
- HTTP连接相对简单,在TCP三次握手之后就可进行报文传输。而HTTPS在三次握手后还需进行SSL/TLS的握手过程,才可进入加密报文传输。
- HTTP通常使用80端口,而HTTPS使用443端口。
- HTTPS需要向CA申请数字证书来保证服务器身份是可信的。
HTTPS的工作原理(建立连接的过程)
- HTTPS主要基于SSL/TLS协会建立连接并传输数据,其连接的过程是:
- 客户端在发起HTTPS请求后,服务器会发送其公钥证书给客户端。客户端会验证证书是否由CA签发,检查其有效性。验证通过后,客户端会生成一个随机的对称加密密钥,并使用服务器的公钥加密这个密钥,然后发送给服务器
- 服务器收到后使用私钥解密得到对称加密密钥,此时客户端和服务器都有了相同的密钥,建立了安全连接,就可以使用对称加密密钥对所有传输的数据进行加密,确保数据传输的安全性
- 另外SSL/TLS协议还包括消息完整性验证机制,如消息认证码,确保数据传输过程中没被篡改。最后在数据传输完成以后,通信双方会将会话密钥销毁,不留下安全隐患
TCP和UDP的区别
- TCP需要在数据传输前建立连接,而UDP是无连接的
- TCP提供可靠的数据传输,而UDP不保证数据包的顺序或完整
- TCP拥有拥堵控制机制,可根据网络状态调节数据传输速率,而UDP速率固定
- TCP有滑动窗口机制进行流量控制,UDP没有
- TCP能够检测并重传丢失或损坏的数据包,UDP不提供这种错误恢复
- TCP有复杂的报文头部,如序列号,确认号等,UDP报文头部简单
- 由于连接建立,数据校验重传机制,TCP的性能开销大于UDP
- TCP适用于网页浏览,文件传输等;UDP适用于语音通话,视频会议等
DNS查询过程
- DNS用来将主机名和域名转换为IP地址,查询过程如下:
- 首先查询本地DNS缓存[[缓存分类.png]],有就直接返回结果,没有则下一步
- 向本地DNS服务器发送DNS查询请求,有就返回,无则向根DNS服务器发出查询请求。根DNS服务器不负责解析域名,但他能告诉本地DNS解析器应该向哪个顶级域(.com/.net/.org)的DNS服务器继续查询
- 接着向指定的顶级域名DNS服务器发出查询请求,顶域服务器也不负责解析域名,他告诉本地DNS解析器应该向哪个权威DNS服务器查询下一步信息
- 最后向权威DNS服务器发送查询请求,其是负责存储特定域名和IP地址映射的服务器,他查找域名对应IP地址返回本地DNS解析器
- 本地DNS解析器将收到的IP返回给浏览器,并将域名解析结果缓存在本地,以便下次访问时更快响应
- 最后浏览器通过返回的IP地址与目标服务器发起连接,获取网页内容
CDN是什么,有什么作用
- CDN是一种分布式网络服务,通过将内容存储在分布式的服务器上,使用户可以从距离较近的服务器获取所需的内容,从而加速互联网上的内容传输。
- 就近访问:用户请求会被路由到距离最近的CDN节点,提供快速的内容访问
- 内容缓存:CDN节点会缓存静态资源,如图片,样式表,脚本等。当用户访问资源时,CND先检查是否已经缓存了该资源,有则直接返回,无则从源服务器回源获取资源并将资源缓存在节点。这样减少了对原始服务器的请求,减轻了源站的负载
- 可用性:某些节点出问题,用户请求可以被重定向到其他健康节点
Cookie和Session是什么,有什么区别
(1)是什么
- Cookie和Session都用于管理用户的状态和身份,Cookie通过在客户端记录信息确认用户身份,Session通过在服务器端记录信息来确认用户身份
- Cookie:通常服务器会将一个或多个Cookie发送到用户浏览器,然后浏览器将其存储在本地。服务器在接收来自客户端浏览器的请求之后,就能够通过分析存放在请求头的Cookie得到客户端特有的信息,从而动态生成与该客户端相对应的内容
- Session:客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。Session主要用于维护用户登录状态,存储用户的临时数据与上下文信息等。服务器为每个用户分配一个唯一的SessionID,通常存储在Cookie中
(2)区别 - Cookie数据存储在用户浏览器,Session存在服务器
- Cookie容量一般为几KB,Session通常没有固定限制,取决于服务器配置资源
- Cookie存储在浏览器中,可能会被用户读取或篡改。而Session数据存储在服务器上,更难访问和修改
- Cookie可以设置过期时间,Session依赖于会话的持续时间或用户活动
- Cookie在每次HTTP请求中都会被自动发送到服务器,而Session ID通常通过Cookie或URL参数传递