网络相关知识总结

网络有关的常见知识点总结

Https与Http对比

介绍

Http和Https都是互联网中常见的通信协议,其中Https是在Http的基础上加入了安全层,使用SSL/TLS协议对通信内容进行加密和认证,从而提高了数据传输的安全性。

区别

  1. 安全性:Http是明文传输,数据容易被窃听、篡改和伪造,安全性较低;Https使用SSL/TLS加密技术,保证数据传输的正确性
  2. 速度:Https比Http的传输速度慢,是因为Https需要在传输层加入加密和解密的过程,增加了数据传输时间
  3. 费用:Https需要购买证书,而Http则完全免费

Https的原理

Https的原理是在客户端和服务器之间建立一条SSL/TLS加密通道,通过在SSL/TLS协议中使用公钥和私钥的方式对通信内容进行加密和认证,从而保证数据传输的安全性。具体来说,Https的通信过程如下:

  1. 客户端想服务器发起Https请求
  2. 服务器将自己的公钥发送给客户端
  3. 客户端使用公钥加密生产一个随机数,然后将加密后的随机数发送给服务器
  4. 服务器使用自己的私钥解密客户端发送的随机数,然后使用这个随机数生成对称加密的算法密钥,用来加密数据
  5. 服务器将加密后的数据发送给客户端
  6. 客户端使用对称加密算法的密钥来解密服务器发送的数据,得到原始数据

幂等性

Https可以使用Http的幂等性方法,如GET方法进行查询,PUT和DELETE方法进行数据更新和删除等。同时可以通过在客户端和服务器之间进行同步的方式来避免重复请求,例如客户端设置一个标记符来标记每个请求的唯一性,在服务器端进行判断和去重等;还可以在数据库层面保证幂等性。

Session和Cookie介绍

Session和Cookie都是Web应用中常用的状态管理技术,它们用于在客户端和服务器之间维护状态信息,实现用户身份认证,数据缓存等功能,主要作用和区别为:

Cookie时浏览器保存在客户端的一段文本信息,主要用于表示用户身份信息,存储用户的偏好设置等。Cookie通常由服务器生成,在响应头中通过Set-Cookie字段返回给客户端,客户端将Cookie保存在本地,在后续的请求中将Cookie带到服务器,从而实现状态的维护,Cookie可以设置过期时间,路径,域名等属性,可以控制Cookie的有效期和作用范围。

Session

Session是服务器上的一段数据结构,主要用于存储用户的会话信息,缓存数据等。Session通常由服务器生成一个Session ID,通过Cookie或URL参数等方式传递给客户端,在客户端和服务器之间进行状态的交互。客户端在后续的请求中带上Session ID,服务器通过Session ID查找对应的Session数据,从而实现状态的维护。Session可以存储任意类型的数据,但是需要主要Session数据的存储容量,一面占用过多的服务器资源。

区别

  1. 存储位置不同:Cookie存储在客户端,Session存储在服务器端

  2. 存储内容不同:Cookie主要用于存储用户的身份和偏好设置,Seesion主要用于存储用户的会话信息和缓存数据

  3. 安全性不同:由于Cookie存储在客户端,容易被篡改或者伪造,安全性较低;Session存储在服务器端,相对安全

    应用

    在实际工程中,Session和Cookie都有广泛的应用,一般来说,如果需要保证数据的安全性,可以选择使用Session;如果要在客户端进行状态的维护,可以使用Cookie。例如网站的登录功能通常使用Session来存储用户的登录状态和身份信息,购物网站通常使用Cookie来存储用户的购物车信息和偏好设置等。

浏览器输入URL后发生了什么

  1. DNS解析:当用户输入URL后,浏览器首先会解析域名,查找域名所对应的IP地址,涉及到DNS协议。如果DNS缓存中存在相应的IP地址,则直接返回;否则会响DNS服务器发送请求,DNS服务器再返回对应的IP地址。
  2. 建立TCP连接:浏览器获取到IP地址后,就会想服务器发起TCP连接,使用TCP协议,三次握手后建立连接。
  3. 发送HTTP请求:TCP连接建立后,浏览器会向服务器发送HTTP请求,请求中包含浏览器需要获取的资源,请求头等信息。
  4. 服务器处理请求并返回响应:服务器在收到请求后,会根据请求的内容进行处理,执行相应的业务逻辑,最终返回HTTP响应,其中包括状态码、响应头和响应题等信息
  5. 接受响应内容:浏览器接收到服务器的响应后,会根据响应的类型进行相应的处理。如果是HTML页面,浏览器会对其进行解析,并构建出DOM树,然后渲染出页面;如果是CSS,JS,图片等资源,则会进行响应的处理和加载。
  6. 页面渲染:浏览器根据解析出来的DOM树,CSS样式和JS脚本来渲染页面,并在页面中显示出所有的资源。在这个过程中,浏览器会遵循一定的规则来保证页面正确渲染,如盒模型,布局算法等

TCP拥塞控制是什么,有哪些问题,服务器宕机时如何处理?

拥塞控制

拥塞控制是指通过在网络中控制数据流量的方式来避免网络拥堵和崩溃,以保证网络的可靠性和稳定性,在TCP/IP协议栈中,TCP层使用拥塞控制来控制网络流量。
TCP拥塞控制的基本原理是通过动态调整数据发送的速率,使网络中的数据流量不会超过网络承载能力的范围。当网络流量过大时,可能会导致网络拥堵,延迟和丢包等问题,从而影响网络的性能和可靠性。
控制通常有以下几种机制:

  1. 慢启动:TCP通过一开始以指数级增加发送数据的速率,直到发现网线出现拥堵,然后再按照线性增加的方式来调整发送数据的速率
  2. 拥塞避免:在慢启动阶段,TCP会以线性增加的方式来调整数据发送的速率,同时检测网络的拥塞程度,以避免出现网络拥堵
  3. 快重传:当TCP发现丢包时,会立即重传丢失的数据,而不必等待超时重传的定时器,从而减少数据的延迟
  4. 快恢复:当TCP发现丢包时,不会立即进行慢启动,而是保持拥塞避免状态,同时根据丢失的数据包来调整窗口的大小,从而更快的恢复数据发送的速率

拥塞控制存在的问题

  1. 三次握手可能会导致延迟和性能问题:虽然三次握手是确保连接可靠性性的重要机制,但也会带来一些问题,每次握手都需要时间,如果网络状态不好或者负载过高,可能会导致握手失败或者需要重试,而重试会带来额外的延迟和资源开销,降低网络性能
  2. 四次挥手可能导致连接过程过长:四次挥手每个步骤都需要等待一定的时间,会导致关闭连接的过程太长,在高并发场景中,会导致服务器资源的过度占用
  3. 拥塞控制会导致性能下降:TCP通过拥塞控制机制来控制网络流量,避免过度拥堵,但当网络拥堵时,TCP会降低发送数据的速率,避免网络过度拥挤,这会带来一定延迟,在高并发场景下,会导致应用性能的下降

服务器宕机

在TCP握手或者挥手的过程中,如果服务器宕机,会导致连接无法正常关闭,占用服务器资源,有以下几种解决方式:

  1. 设置TCP连接的超时时间,如果连接在超时时间内未建立,则认为无法建立连接,关闭连接
  2. 使用心跳机制来检测服务器的状态,如果服务器在一定的时间内没有响应,认为服务器宕机,关闭连接
  3. 使用TCP的keep-alive机制,在连接空闲定时发送keep-alive报文,如果服务器在一定时间内没有响应,则可以认为服务器宕机并关闭连接
    这些方式都在客户端进行,可避免占用过多的资源,提高应用的性能和稳定性。