【计算机网络】初识HTTP(超文本传输协议)

【计算机网络】初识HTTP(超文本传输协议)

HTTP协议(应用层协议、超文本传输协议)

URL:又叫网址或统一资源定位符


urlencode和urldecode :了解

像 / ? : 等这样的字符, 已经被url当做特殊意义理解了. 因此这些字符不能随意出现.

比如, 某个参数中需要带有这些特殊字符, 就必须先对特殊字符进行转义.

转义的规则如下:

将需要转码的字符转为16进制,然后从右到左,取4位(不足4位直接处理),每2位做一位,前面加上%,编码成%XY

格式

urldecode就是urlencode的逆过程;

HTTP协议格式

  1. HTTP请求

首行: [方法] + [url] + [版本]

Header: 请求的属性, 冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示Header部分结束

Body: 空行后面的内容都是Body. Body允许为空字符串. 如果Body存在, 则在Header中会有一个

Content-Length属性来标识Body的长度;

  1. HTTP响应

    首行: [版本号] + [状态码] + [状态码解释]
    Header: 请求的属性, 冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示Header部分结束
    Body: 空行后面的内容都是Body. Body允许为空字符串. 如果Body存在, 则在Header中会有一个
    Content-Length属性来标识Body的长度; 如果服务器返回了一个html页面, 那么html页面内容就是在
    body中.

HTTP的方法

HTTP的状态码

200(OK), 404(Not Found), 403(Forbidden), 302(Redirect, 重定向), 504(Bad Gateway)

HTTP常见Header

Content-Type: 数据类型(text/html等)

Content-Length: Body的长度

Host: 客户端告知服务器, 所请求的资源是在哪个主机的哪个端口上;

User-Agent: 声明用户的操作系统和浏览器版本信息;

referer: 当前页面是从哪个页面跳转过来的;

location: 搭配3xx状态码使用, 告诉客户端接下来要去哪里访问;

Cookie: 用于在客户端存储少量信息. 通常用于实现会话(session)的功能


HTTP 无状态协议下,如何通过 Cookie + Session 机制实现用户登录后的会话保持与身份认证,结合了从登录到后续请求的完整流程

  1. HTTP 无状态的背景
    HTTP 协议默认是无状态的,即服务器不会自动 "记住" 不同请求是否来自同一用户。但实际 Web 应用(如登录后保持用户在线、识别身份)需要 "会话保持",因此需借助 Cookie 和 Session 技术。
  2. Cookie 的角色:传递会话标识
    存储与下发:当用户首次登录(提交账号密码),服务器验证通过后,会通过 HTTP 响应头(Set - Cookie),将包含用户信息(或会话标识)的 Cookie 下发到浏览器。Cookie 可存储为文件级(长期保存)或内存级(关闭浏览器即失效)。
    自动携带:后续浏览器向同一域名发送请求时,会自动携带 Cookie(包含之前服务器下发的用户标识),让服务器能识别请求来源。
  3. Session 的角色:服务器端会话存储
    Session 的本质:服务器端存储 "用户会话数据" 的容器(如用户身份、登录状态等),通常由服务器内存、数据库或缓存(如图中的 Redis)维护。
    与 Cookie 的协作:服务器生成 Session 后,会将Session ID(会话的唯一标识)通过 Set - Cookie 下发到浏览器(Cookie 存储 Session ID)。后续请求中,浏览器携带含 Session ID 的 Cookie 到服务器,服务器通过 Session ID 找到对应 Session,从而获取用户的 "会话上下文"(如是否登录、用户信息)。
  4. 登录与认证的核心流程(以 "账号密码登录" 为例)
    用户登录请求:浏览器向服务器发送账号(如 username=who8)和密码(如 passwd=1234)。
    服务器验证与 Session 创建:
    服务器验证账号密码有效后,创建 Session(存储用户身份等信息),并生成唯一的 Session ID。
    通过 Set - Cookie 响应头,将 Session ID 下发为 Cookie,存储到浏览器。
    后续请求的身份识别:
    浏览器后续请求(如访问个人主页)时,自动携带含 Session ID 的 Cookie。
    服务器通过 Session ID 找到对应 Session,确认用户身份(如已登录),返回个性化内容(如用户专属页面)。
  5. 存储扩展(Redis 的作用)
    图中提到 Redis,说明实际应用中,Session 数据常存储在 Redis 缓存中:
    优势:Redis 是高性能内存数据库,支持快速读写、过期时间设置,相比服务器内存,更易分布式扩展、持久化,适合存储 Session。
    流程:服务器生成 Session 后,将 Session 数据存入 Redis,并把 Session ID 下发为 Cookie;后续通过 Session ID 从 Redis 中查询 Session 内容
相关推荐
止水编程 water_proof4 小时前
Java-HTTP响应以及HTTPS(下)
网络·网络协议·http
好望角雾眠4 小时前
第四阶段C#通讯开发-9:网络协议Modbus下的TCP与UDP
网络·笔记·网络协议·tcp/ip·c#·modbus
C2H5OH6665 小时前
WebSocket-练习1
网络·websocket·网络协议
狂奔的sherry5 小时前
Socket vs WebSocket
网络·websocket·网络协议
2501_915106326 小时前
App HTTPS 抓包 工程化排查与工具组合实战
网络协议·ios·小程序·https·uni-app·php·iphone
MZWeiei7 小时前
TCP连接释放:四次握手(每次握手发的字段及字段值的解释)
计算机网络
0和1的舞者8 小时前
网络通信的奥秘:HTTP详解 (七)
服务器·网络·网络协议·http·okhttp·软件工程·1024程序员节
节点小宝8 小时前
节点小宝免费版流量机制解析:点对点直连技术与备用流量设计
网络·网络协议·p2p
huangdengji10 小时前
基于openresty反向代理、dns劫持、实现对http请求、响应内容抓包
网络协议·http·openresty
記億揺晃着的那天12 小时前
解密 HTTPS:从握手到安全通信
网络协议·安全·https·ssl证书