HTTP深度解析

HTTP深度解析

HTTP基础

1. HTTP 协议是什么?

HTTP(Hypertext Transfer Protocol )是 超文本传输协议,它是浏览器和服务器之间进行通信的规则。简单来说,当你在浏览器输入网址,浏览器就会通过 HTTP 协议向服务器发送请求,服务器根据请求返回响应,浏览器再根据响应的内容显示页面。

2. HTTP 请求的基本原理:

  • 客户端发起请求: 当你访问一个网站时,浏览器作为客户端发出请求。这个请求通常包含了你希望从服务器获取的资源(例如网页、图片、视频等)。
  • 服务器处理请求: 服务器接收到请求后,处理请求并返回响应内容。
  • 客户端接收响应: 浏览器接收到服务器的响应后,显示网页或者处理数据。

3. HTTP 请求结构:

HTTP 请求由三个主要部分组成:

  1. 请求行(Request Line):

    • 方法(Method): 请求类型,常见的有 GET(请求数据)、POST(提交数据)、PUT(更新数据)、DELETE(删除数据)等。
    • 请求 URI(Request URI): 请求的资源路径。例如,/index.html 或者 /api/users
    • HTTP 版本(HTTP Version): 例如 HTTP/1.1HTTP/2

    例如:

    复制代码
    GET /index.html HTTP/1.1
  2. 请求头(Request Headers):

    请求头包含了请求的附加信息,比如浏览器类型、语言、缓存设置等。这些信息帮助服务器处理请求。

    常见的请求头字段有:

    • User-Agent:浏览器类型。
    • Accept:浏览器能接受的响应类型(如 text/htmlapplication/json)。
    • Host:目标主机名。
    • Authorization:用于身份验证的凭证。

    例如:

    复制代码
    User-Agent: Mozilla/5.0
    Accept: text/html, application/xhtml+xml, application/xml
    Host: www.example.com
  3. 请求体(Request Body):

    请求体包含了要发送给服务器的数据(只有在 POST 或 PUT 请求时才有请求体),比如提交的表单数据、JSON 数据等。

    例如:

    复制代码
    username=johndoe&password=1234

4. HTTP 响应的基本原理:

  • 服务器返回响应: 服务器根据客户端的请求处理后返回一个响应,告诉客户端请求是否成功,并提供所请求的数据。

5. HTTP 响应结构:

HTTP 响应也由三个主要部分组成:

  1. 响应行(Response Line):

    • HTTP 版本(HTTP Version): 例如 HTTP/1.1
    • 状态码(Status Code): 服务器返回的响应状态,告诉客户端请求的结果。
    • 状态描述(Status Description): 状态码的描述。例如 200 OK 表示请求成功,404 Not Found 表示请求的资源不存在。

    例如:

    复制代码
    HTTP/1.1 200 OK
  2. 响应头(Response Headers):

    响应头包含了关于响应的额外信息,如服务器类型、返回内容的类型(HTML、JSON 等)以及缓存控制等。

    常见的响应头字段有:

    • Content-Type:响应内容的类型(如 text/htmlapplication/json)。
    • Content-Length:响应内容的长度(字节数)。
    • Cache-Control:缓存策略。

    例如:

    复制代码
    Content-Type: text/html
    Content-Length: 1234
    Cache-Control: no-cache
  3. 响应体(Response Body):

    响应体包含了真正的数据内容,浏览器可以根据内容类型进行展示或处理。比如:

    • HTML 页面内容
    • JSON 数据
    • 图片文件的二进制数据

    例如:

    复制代码
    <html>
        <head><title>Welcome</title></head>
        <body><h1>Welcome to My Website</h1></body>
    </html>

6. HTTP 状态码常见分类:

状态码是 HTTP 响应的重要组成部分,常见的分类和含义如下:

  • 1xx:信息性状态码 --- 请求已接收,继续处理(例如 100 Continue)。
  • 2xx:成功状态码 --- 请求成功处理并返回数据(例如 200 OK)。
  • 3xx:重定向状态码 --- 需要进一步操作才能完成请求(例如 301 Moved Permanently)。
  • 4xx:客户端错误状态码 --- 请求有问题(例如 404 Not Found,400 Bad Request)。
  • 5xx:服务器错误状态码 --- 服务器处理请求时出现错误(例如 500 Internal Server Error)。

7. HTTP 方法简述:

  • GET: 请求数据(没有请求体),常用于获取页面或资源。
  • POST: 提交数据,通常用于提交表单或上传文件。
  • PUT: 更新现有资源的数据。
  • DELETE: 删除指定的资源。
  • HEAD: 获取响应头部信息,不返回响应体。

总结:

HTTP 协议是一种客户端与服务器之间通信的规则。通过请求和响应的方式,浏览器和服务器进行信息交换。请求包含了方法、资源路径、请求头和请求体,响应则包括了状态码、响应头和响应体。理解这些结构可以帮助我们更好地理解网页加载的过程,调试网络请求时也能更加高效。

TCP与UDP区别

TCPTransmission Control Protocol ,传输控制协议)和 UDPUser Datagram Protocol,用户数据报协议)是计算机网络中常用的传输层协议。它们在数据传输时有不同的特点和应用场景。下面是它们的基本概念、区别以及应用场景的详细讲解。

TCP(传输控制协议)

基本概念:
  • 面向连接:在传输数据之前,TCP 会建立连接,确保数据的可靠传输。它需要在客户端和服务器之间建立一个"虚拟的连接"。
  • 可靠传输:TCP 确保数据能够完整、按顺序地送达目的地。如果数据丢失或发生错误,TCP 会自动重传数据。
  • 流量控制:TCP 会根据网络的状况动态调整发送的数据量,以避免网络拥塞。
  • 拥塞控制:通过算法(如慢启动、拥塞避免等)来控制数据的发送速率,以避免网络过载。
  • 顺序性:数据包按照发送顺序到达,接收端可以按照相同顺序处理。
工作流程:
  • 连接建立(通过三次握手):在数据传输开始之前,TCP 会通过三次握手(3-way handshake)来建立连接,确保通信双方都准备好了。
  • 数据传输:数据传输过程中,TCP 会通过确认(ACK)和序列号确保每个数据包的可靠到达。
  • 连接关闭:数据传输结束后,TCP 通过四次挥手(4-way handshake)来关闭连接,释放资源。
优点:
  • 可靠性高:通过确认、重传、顺序控制等机制,确保数据的准确无误。
  • 流量控制和拥塞控制:TCP 动态调整数据传输速率,避免网络拥塞。
  • 顺序保证:确保数据包按顺序到达接收方。
缺点:
  • 开销大:建立连接、确认和重传机制增加了额外的开销。
  • 速度较慢:由于需要保证可靠性,TCP 的传输速度相对较慢。
应用场景:
  • 文件传输 :如 FTP (文件传输协议)、SFTP
  • 网页浏览 :如 HTTP/HTTPS 协议,网页内容需要准确无误地传输。
  • 电子邮件 :如 SMTPIMAPPOP3 协议。
  • 远程登录 :如 SSHTelnet 等需要安全可靠通信的场景。

UDP(用户数据报协议)

基本概念:
  • 无连接:UDP 不需要建立连接,不做数据的确认和重传。它直接将数据发送到目标地址,不保证数据包的可靠到达。
  • 不保证可靠性:UDP 不会像 TCP 那样保证数据的顺序和完整性,数据可能丢失、重复或乱序。
  • 无流量控制和拥塞控制:UDP 不会自动控制数据的发送速率,也不会监控网络拥塞。
  • 头部开销小:UDP 的数据包头部比 TCP 小,不需要额外的握手和确认信息,传输效率较高。
工作流程:
  • 无连接传输:UDP 直接发送数据包,没有连接建立的过程,不会进行确认,也不保证数据的可靠到达。
  • 数据报文:UDP 将应用层数据分割为数据报(datagram)并通过 IP 网络发送,不提供数据的顺序、完整性或重传保障。
优点:
  • 效率高:UDP 协议的开销较小,适合高效的数据传输。
  • 低延迟:由于没有建立连接和进行确认,UDP 在传输过程中延迟较低。
  • 适用于实时性要求高的应用
缺点:
  • 不可靠:没有确保数据传输的可靠机制,数据可能丢失、乱序。
  • 没有流量和拥塞控制:UDP 发送数据时不会考虑网络的状态,容易造成网络拥塞。
应用场景:
  • 视频和语音传输 :如 VoIP (语音通信)、视频会议流媒体等。对于实时传输,丢失少量数据包通常对用户体验影响不大。
  • DNS 查询DNS(域名系统)使用 UDP 进行查询,因为 DNS 查询是简单的请求-响应模式,不需要确保连接可靠性。
  • 实时在线游戏:UDP 被广泛应用于需要低延迟和高实时性的网络游戏中,虽然有可能丢包,但通过实时的数据流更新,用户体验通常不会受太大影响。
  • 广播和组播 :如 DHCP (动态主机配置协议)和 SNMP(简单网络管理协议)使用 UDP。
特性 TCP UDP
连接方式 面向连接(需要建立连接) 无连接(直接发送数据)
可靠性 可靠,保证数据的正确到达 不可靠,数据可能丢失、重复、乱序
数据顺序 保证数据的顺序 不保证数据顺序
流量控制和拥塞控制 有(控制数据传输的速率) 无(无法控制数据传输速率)
重传机制 有(丢失数据包会重传) 无(丢失数据包无法重传)
开销 较大(需要三次握手、四次挥手等) 较小(无连接、无确认、无重传)
速度 较慢(因确认、重传等操作开销) 较快(没有复杂的确认机制)
应用场景 文件传输、网页浏览、电子邮件等 视频流、语音通信、实时游戏等

Http和HTTPS的区别:

主要区别:

1、HTTP的连接是简单无状态的,HTTPS的数据传输是经过证书加密的,安全性更高。

2、HTTP是免费的,而HTTPS需要申请证书,而证书通常是需要收费的,而且费用一般不低

3、他们传输协议不同的,端口也是不一样的,HTTP默认端口是80端口,而HTTPS默认是443端口。

HTTPS的缺点:

1、HTTPS的握手协议比较费时,所以会影响服务的响应速度以及吞吐量。

2、HTTPS也并不是完全安全的,他的证书体系并不是完全安全的。并且HTTPS在面对DDOS这样的攻击时,几乎起不到任何作用

会产生很多的验证资源消耗

3、证书需要费钱,并且功能越强大的证书费用更高

https工作流程:

客户端访问页面给服务端发送TLS版本,随机数C 等

后端服务器选中一套加密方案,适配客户端和服务端 生成公钥和私钥返回给前端数字证书(公钥,域名,有效期等)

前端进行证书验证

验证通过后客户端生成预主密钥PMS,公钥加密发送给后端服务器,有后端服务器私钥解密

最终客户端和服务端使用 C+S+PMS三个随机数,生成会话密钥(对称密钥)

握手成功后,所有http数据均会使用会话密钥 进行对称加密传输

总结:HTTPS 核心原理

  • 混合加密非对称加密(RSA/ECDHE) 安全交换密钥;对称加密(AES) 高效传输数据。
  • 身份认证数字证书 + CA 签名 确保服务器真实可信,防中间人冒充。
  • 数据安全加密防窃听MAC 防篡改序列号防重放

REST

一组架构约束条件和原则

资源:

资源由url来定位,也就是一个url表示一个资源

表现层:

承接一个资源的展现形式,http请求头中的accept和content-type字段指定,这两个字段才是对表现层的描述

状态转化:

http协议是无状态的,那么这些状态肯定保存在服务端,所以客户端想要通知服务端改变数据和状态变化,要通过某种方式来通知它

通知方式是http协议,在http协议里面,四个表示操作方式的动词,

  • (1)每一个 URI 代表一种资源;
  • (2)客户端和服务器之间,传递这种资源的某种表现层;
  • (3)客户端通过四个 HTTP 动词,对服务器端资源进行操作,实现 "表现层状态转化"。

通信分为:

单工通信:只走一条道,不回头

半双工通信:一条道,来回走,但不能同时走

全双工通信:两条道,来去互不干扰

相关推荐
MinterFusion2 小时前
如何在Windows下查看本机的IP地址
网络·windows·tcp/ip·ip地址·明德融创
理人综艺好会2 小时前
http和https的了解
网络协议·http·https
Evand J2 小时前
计算机四级——《网络工程》科目,易错点总结【纯手工总结】
网络协议·网络安全·网络工程·计算机四级
特立独行的猫a2 小时前
ESP32小智AI的WebSocket 调试工具的实现,小智AI后台交互过程揭秘(二、技术原理与实现过程详解 )
人工智能·websocket·网络协议·esp32·调试工具·小智ai
灰子学技术2 小时前
自定义 Host 头访问 HTTPS 服务时的网关处理逻辑
网络·网络协议·http·https
ARM+FPGA+AI工业主板定制专家2 小时前
基于ARM+FPGA+AI的船舶状态智能监测系统(一)总体设计
网络·arm开发·人工智能·机器学习·fpga开发·自动驾驶
taxunjishu2 小时前
Profinet转MODBUS TCP汽车零部件工业自动化柔性产线方案
网络·自动化·汽车
甘露s2 小时前
从明文到加密:HTTP 与 HTTPS 的本质区别与建立全解析
网络协议·http·https
虾..2 小时前
IP 协议
网络·网络协议·tcp/ip