【HTTP】

概述

HTTP(Hypertext Transfer Protocol)是用于互联网上传输超文本的应用层协议,默认使用TCP端口80。其核心功能是封装和传输数据,组织为多行数据块(以\r\n换行)。

http协议分为两部分:
- http请求:客户端给服务器发送数据的一种数据格式
- http响应:服务器给客户端回复数据使用的一种数据格式

HTTP/1.1 200 OK
Content-Type: text/html
<html>...</html>
 

http是一种无状态协议,这里的“无状态”指每个HTTP请求之间是独立且无关联的,服务器默认不会保存任何客户端的历史请求信息。

URL:即统一资源标识符,作为互联网上资源的唯一身份;(在浏览器的地址栏中输入的地址就是一 个URL);

http://127.0.0.1:80/index.html
 
  • http://:协议类型
  • 127.0.0.1:服务器地址
  • :80:端口(默认可省略)
  • /index.html:资源路径

http请求

  • 客户端给服务器发送的一种数据格式,可以分为四部分:

1. 请求行:  指定提交数据的方式
2. 请求头:  多个键值对组成,客户端给服务器发送的数据描述符以及客户端身份描述符
3. 空行:     作用:代表请求头结束
4. 请求的数据:向服务器提交的数据(post);使用Get该位置为空

  • http请求中有两种提交数据的方式

GET

get  :申请获取资源而不对服务器产生任何其他影响(从服务器获取数据)
数据并没有在请求协议的第四部分而是在请求行

第一行:/---服务器提供的资源根目录(在服务器可以指定)
User-Agent:告诉服务器当前客户端使用的浏览器的版本

POST

post: 会影响服务器,服务器可能根据收到的数据动态创建新的资源,也可能更新原有资源(向服务器提交数据)

Content-Length :表示客户端向服务器提交的请求体(HTTP协议第四部分)的数据字节大小。服务器根据该值准确读取请求体内容。


Content-Type: 客户端向服务器提交的数据块格式 = http请求协议第四部分的数据块格式

= 字符
分隔键(key)和值(value)。解析时,左侧为键,右侧为值。示例:
name=John → 键为name,值为John

+ 字符
代表空格。在URL编码中会被替换为空格字符。示例:
query=hello+world → 解析为hello world

% 字符
表示后续两个十六进制字符为特殊字符的编码。需转换为十进制,再对应ASCII字符。示例:
%20 → 十六进制20 = 十进制32 → ASCII空格。

& 字符
分隔不同键值对。解析时标志当前键值对结束。示例:
name=John&age=30 → 分割为name=Johnage=30两组键值对。

Get和Post的区别

  • 功能差异

    • Get:主要用于客户端向服务器请求静态资源,例如网页、图片或文件等。它适用于数据量较少的场景。
    • Post:用于向服务器提交动态数据,例如用户登录信息或文件上传/下载等。适合处理较大数据量的场景。
  • 数据量差异

    • Get:提交的数据会附加在请求协议的第二部分(即 URL 地址栏),由于浏览器地址栏缓存存在上限,数据量过大会导致部分数据丢失。
    • Post:提交的数据位于请求协议的第四部分(即请求体),不受浏览器地址栏限制,能处理较大数据量。
  • 安全性差异

    • Get:提交的数据会直接显示在浏览器地址栏中,存在泄露风险,不适合传递敏感信息。
    • Post:数据不会暴露在地址栏中,安全性更高,适合处理敏感数据。

http响应

服务器给客户端回复数据使用的一种数据格式

  • 响应的组成分为四个部分

 1.状态行
 2.响应头:键值对
 3.空行:
 4.响应的数据

第1行:状态行 
        - HTTP/1.1: http协议版本
        - 200: 状态码
        - Ok:状态码对应的描述

第2--9行:响应头
         -Content-Type:服务器给客户端回复的格式 = http响应第四部分的数据块格式
            text/plain   ==> 纯文本
             charset=iso-8859-1 ==>数据的字符编码
             iso-8859-1 ==>不支持中文
             utf8:支持中文
         -Content Length:服务器给客户端回复的长度 = http响应第四部分的数据块字节数

第10行:空行

第11--16行:服务器给客户端回复的响应数据

应答状态

http vs https

HTTP

  • 传输方式:明文传输,数据未加密,容易被拦截或篡改。
  • 端口:默认使用 80 端口。
  • 安全性:无加密机制,不适合传输敏感信息(如密码、支付信息)。
  • 证书:不需要 SSL/TLS 证书。
  • 性能:由于无需加密解密,速度略快于 HTTPS。

HTTPS

  • 传输方式:加密传输,数据通过 SSL/TLS 加密,防止窃听和篡改。
  • 端口:默认使用 443 端口。
  • 安全性:提供身份验证和数据完整性保护,适用于敏感数据。
  • 证书:需部署 SSL/TLS 证书,由可信 CA(证书颁发机构)签发。
  • 性能:加密过程会增加少量计算开销,但现代硬件优化已基本消除性能差异。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值