计算机网络篇02

本文详细介绍了HTTP协议的发展(1.0、1.1、2.0和3.0),重点讲解了HTTPS的安全性、HTTPS与HTTP的区别,以及TCP和UDP的特点与应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:

本系列文章主要以知识总结为主,不是面试题,主要目的是方便自己复习以及为大家提供便利,所以大部分知识点来源于网上,侵权联系删除。如有不对的地方欢迎大家评论区批评指正,一起进步!


一、HTTP协议

  • HTTP1.0定义了三种请求方法: GETPOST 和 HEAD方法
  • HTTP1.1新增了五种请求方法:OPTIONSPUTDELETETRACE 和 CONNECT

http/1.1规定了以下请求方法(注意,都是大写):

  • GET: 请求获取Request-URI所标识的资源
  • POST: 一般用于修改Request-URI的资源
  • HEAD: 请求获取由Request-URI所标识的资源的响应消息报头
  • PUT: 请求服务器存储一个资源
  • DELETE: 请求服务器删除对应所标识的资源
  • TRACE: 请求服务器回送收到的请求信息,主要用于测试或诊断
  • CONNECT: 建立连接隧道,用于代理服务器
  • OPTIONSCORS跨域请求的预检请求;

1. GET和POST的请求的区别

GET和POST的区别主要有以下几点:

  • 应用场景:

    • GET请求: 用于请求获取Request-URI所标识的资源,是一个幂等的请求。通常用于不对服务器资源产生影响的场景,如请求网页资源。

    • POST请求: 用于修改Request-URI的资源,不是一个幂等的请求。一般用于对服务器资源产生影响的操作,如用户注册。

  • 缓存:

    • GET请求: 浏览器通常会对GET请求进行缓存。

    • POST请求: 浏览器很少对POST请求进行缓存。

  • 安全性:

    • GET请求: 参数通常附加在URL中,不太安全,因为URL可能会被保存在浏览器历史记录中。

    • POST请求: 参数在请求体中,相对较安全。

  • 请求长度:

    • GET请求: 受浏览器对URL长度的限制,传输的数据较少。

    • POST请求: 无浏览器限制,适合传输大量数据。

  • 参数类型:

    • GET请求: 参数传递以查询字符串形式在URL中,对数据类型有限制。

    • POST请求: 参数传递在请求体中,支持多种数据类型。

  • 编码角度:

    • GET请求: 只能进行URL编码,对参数类型有限制。

    • POST请求: 支持多种编码类型,不限制参数类型。

2. POST和PUT请求的区别

POST和PUT请求的区别主要在于资源的处理方式:

  • PUT请求: 用于向服务器存储一个资源,请求中的数据是对目标资源的完整替代。

  • POST请求: 用于向服务器提交数据,通常导致在服务器上创建新的资源。请求中的数据是附加到目标资源上的。

3. OPTIONS请求方法及使用场景

OPTIONS请求方法: 用于请求获取由Request-URI标识的资源在请求/响应的通信过程中可以使用的功能选项。

使用场景:

  1. 获取服务器支持的所有HTTP请求方法;

  2. 检查访问权限,特别在CORS跨域资源共享中,用于预检请求。

4. 常见的HTTP请求头和响应头

HTTP Request Header 常见的请求头:

  • Accept:浏览器能够处理的内容类型
  • Accept-Charset:浏览器能够显示的字符集
  • Accept-Encoding:浏览器能够处理的压缩编码
  • Accept-Language:浏览器当前设置的语言
  • Connection:浏览器与服务器之间连接的类型
  • Cookie:当前页面设置的任何Cookie
  • Host:发出请求的页面所在的域
  • Referer:发出请求的页面的URL
  • User-Agent:浏览器的用户代理字符串

HTTP Responses Header 常见的响应头:

  • Date:表示消息发送的时间,时间的描述格式由rfc822定义
  • server:服务器名称
  • Connection:浏览器与服务器之间连接的类型
  • Cache-Control:控制HTTP缓存
  • content-type:表示后面的文档属于什么MIME类型

常见的 Content-Type 属性值有以下四种:

  • application/x-www-form-urlencoded:浏览器的原生 form 表单,如果不设置 enctype 属性,那么最终就会以 application/x-www-form-urlencoded 方式提交数据。该种方式提交的数据放在 body 里面,数据按照 key1=val1&key2=val2 的方式进行编码,keyval 都进行了 URL转码。
  • multipart/form-data:该种方式也是一个常见的 POST 提交方式,通常表单上传文件时使用该种方式。
  • application/json:服务器消息主体是序列化后的 JSON 字符串。
  • text/xml:该种方式主要用来提交 XML 格式的数据。

5. HTTP 1.0 和 HTTP 1.1 之间有哪些区别?

HTTP 1.0和 HTTP 1.1 的区别:

  • 连接方面: HTTP1.0默认非持久连接,HTTP1.1默认持久连接。

  • 资源请求方面: HTTP1.1引入了range头域,支持资源的部分请求。

  • 缓存方面: HTTP1.1引入更多缓存控制策略,如Etag、If-Unmodified-Since等。

  • Host字段: HTTP1.1新增Host字段,允许多域名共享同一IP地址。

  • 请求方法: HTTP1.1新增了PUT、HEAD、OPTIONS等请求方法。

6. HTTP 1.1 和 HTTP 2.0 的区别

HTTP 1.1 和 HTTP 2.0 的主要区别:

  • 二进制协议: HTTP2.0是二进制协议,头信息和数据体都是二进制帧。

  • 多路复用: HTTP2.0实现了多路复用,允许多个请求同时在一个连接中进行。

  • 数据流: HTTP2.0引入了数据流的概念,每个请求或回应都是一个独立的数据流。

  • 头信息压缩: HTTP2.0使用头信息压缩机制,减少带宽占用。

  • 服务器推送: HTTP2.0允许服务器推送资源给客户端,提高性能。

7.HTTP 3.0 有哪些改进

HTTP 3.0的改进主要基于QUIC协议:

  • 快速握手: QUIC协议实现了快速握手,减少了握手时间。

  • 可靠传输: QUIC在UDP基础上实现了可靠传输,解决了TCP中的队头阻塞问题。

  • TLS加密: QUIC集成了TLS1.3,提高了安全性。

  • 拥塞控制: QUIC实现了拥塞控制机制,包括慢启动和拥塞避免。

  • 多路复用: QUIC实现了多路复用,每个请求在QUIC中被定义为一个独立的流。

  • 服务器推送: HTTP 3.0继续支持服务器推送,提前向客户端推送资源。

总结: HTTP 3.0在性能、安全性和多路复用方面有了显著的改进,基于QUIC协议的特性使得它更适合应对现代网络环境的需求。

二、HTTPS协议

HTTPS(Hypertext Transfer Protocol Secure)是一种通过计算机网络进行安全通信的传输协议。它通过在HTTP协议上引入SSL/TLS协议来加密数据包,确保通信的隐私性和完整性。下面对HTTPS的一些特点进行进一步说明:

  • 明文传输和加密: HTTP协议采用明文传输,容易受到信息窃听、篡改、劫持的风险。而HTTPS通过SSL/TLS加密通信,提供了身份认证、信息加密和完整性校验,有效避免了这些问题。

  • SSL/TLS工作原理: SSL/TLS协议是在TCP和HTTP之间的一层安全协议。它主要依赖于散列函数、对称加密和非对称加密等基本算法。这些算法在建立连接、密钥协商和数据传输过程中起到关键作用,确保通信的安全性。

  • HTTPS与HTTP区别: 主要区别在于安全性。HTTPS是加密传输、身份认证的网络协议,相对于HTTP更为安全。HTTPS还对搜索引擎友好,有利于网站的SEO。标准端口也不同,HTTPS使用443端口,而HTTP使用80端口。此外,使用HTTPS需要SSL证书,而HTTP则不需要。

  • HTTPS握手过程: 握手是建立安全连接的过程。客户端向服务端发送支持的加密算法列表和随机数,服务端返回证书和自己的随机数,客户端验证证书合法性后生成一个随机数并通过服务端的公钥加密传输到服务端,最终双方根据这些随机数生成对称密钥,用于后续的数据加密传输。

三、HTTP常见状态码补充

1、常见的状态码类别

HTTP状态码分为五个类别,每个类别用一个数字的第一个数字表示:

  • 1xx信息性状态码,表示服务器正在处理请求,请求进行中
  • 2xx成功状态码,表示请求被成功接收理解和处理
  • 3xx重定向状态码,跳转状态,表示需要进一步的操作以完成请求
  • 4xx客户端错误状态码,表示请求包含错误无法完成
  • 5xx服务器错误状态码,表示服务器在处理请求时发生了错误

2、常见的状态码

  • 200 OK:表示请求成功服务器已成功处理了请求
  • 301 Moved Permanently:永久重定向,请求的资源已被永久移动到新位置
  • 400 Bad Request客户端发送的请求有错误,服务器无法处理
  • 404 Not Found:所请求的资源不存在
  • 500 Internal Server Error服务器遇到了意料不到的情况,导致无法完成请求 比如你的代码中可能写错了等等

3. HTTP状态码 301 和 302

  • 301 Moved Permanently: 表示永久重定向。客户端收到301状态码后,会缓存重定向的地址,之后不再向原地址发送请求,直接使用缓存的地址。适用于永久性的地址转移,比如域名变更。

  • 302 Found (or Moved Temporarily): 表示临时重定向。与301不同,客户端收到302状态码后不缓存重定向地址,仍然会向原地址发送请求。适用于临时性的地址转移,比如临时跳转到活动页。

4. 从输入URL到呈现页面过程

  • URL输入: 用户在地址栏输入URL,浏览器检查并组装成完整URL。

  • 缓存检查: 浏览器检查本地强缓存,如果可用直接从缓存中返回资源。

  • DNS解析: 进行DNS解析,获取域名对应的IP地址。

  • 建立TCP连接: 通过三次握手建立TCP连接。

  • 发送HTTP请求: 发送HTTP请求,携带上cookie和缓存标识字段。

  • 负载均衡: 服务端可能进行负载均衡处理,分配给对应集群中的服务器。

  • 服务器返回响应: 服务器根据请求头的缓存标识判断是否使用缓存,返回304或资源和200状态码。

  • 浏览器接收HTTP响应: 根据connection: keep-alive的值选择断开TCP连接或保持。

  • 构建DOM树、CSSOM树和渲染树: 分别构建DOM节点树、CSSOM树,然后合并构建渲染树。

  • 布局、绘制和渲染: 将渲染树布局在屏幕上的正确位置,然后绘制所有节点,最终渲染到屏幕上。

四、TCP和UDP补充

1.TCP、UDP 的特点

  • TCP 和 UDP都是传输层协议,他们都属于TCP/IP协议族
  • TCP是一个面向连接的传输层协议。是可靠的、基于字节流的;TCP还具有超时重传拥塞控制的机制;
  • UDP是一个无连接的传输层协议。

2.TCP、UDP 的区别

3. UDP协议为什么不可靠?

  • 不保证消息交付: UDP不提供消息确认、重传,无超时机制,因此不保证消息一定能够被成功交付。

  • 不保证交付顺序: UDP不设置包序号,不进行重排,因此不保证消息按照发送顺序被接收。

  • 不跟踪连接状态: UDP是无连接的,不需要建立连接或维护状态,因此无法跟踪连接状态。

  • 不进行拥塞控制: UDP不内置客户端或网络反馈机制,不会调整发送速率来适应网络状况,因此无拥塞控制。

4. TCP的重传机制

  • 基于时间和确认信息: TCP提供可靠数据传输服务,通过两种独立的机制来完成重传。一是基于时间,即设置定时器,若在规定时间内未收到ACK,则重传。二是基于确认信息,即接收方收到数据后发送确认,发送方在收到确认前定时器未超时,如果超时则重传。

5. TCP的拥塞控制机制

  • 慢启动: 在开始时,窗口大小较小,随着时间的推移,逐渐增大拥塞窗口,直到达到慢启动阈值。

  • 拥塞避免: 一旦判断网络出现拥塞,将慢启动阈值设置为出现拥塞时的一半,并将拥塞窗口设为1,再重新开始慢启动算法。

  • 快速重传和快速恢复: 接收方连续收到三个重复的ACK时,发送方立即进行快速重传。快速恢复是在快速重传后,不再执行慢启动,而是执行拥塞避免。

6. TCP的三次握手和四次挥手

  • 三次握手: 用于建立连接,客户端发送SYN报文,服务端回复SYN和ACK报文,客户端再回复ACK报文,连接建立。

  • 四次挥手: 用于断开连接,客户端发送FIN报文,服务端回复ACK报文,服务端发送FIN报文,客户端回复ACK报文。至此,连接断开。

  • 三次握手过程中是否可以携带数据: 第一次和第二次握手不可以携带数据,而第三次握手时,因为客户端已经处于已建立连接状态,可以携带数据。


题外话:

​       最近朋友开发了个副业网站(https://gaoqian.xwbdktzm.top/#/),分享给准备做副业的铁子们,里面有各样的网创项目,如果进不去的可以试下。如果觉得用不着的直接忽略。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值