网络八股

HTTPS和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参数传递