【计算机网络】初识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 内容
相关推荐
南一Nanyi4 小时前
才知道 DNS 还能基于 HTTPS 实现!
网络协议·安全·面试
_星辰大海乀4 小时前
网络原理 -- HTTP
java·服务器·http·get方法·post方法
歪歪1005 小时前
使用 Wireshark 进行 HTTP、MQTT、WebSocket 抓包的详细教程
网络·websocket·测试工具·http·wireshark
paishishaba11 小时前
无状态协议HTTP/HTTPS (笔记)
网络协议·http
小楊不秃头14 小时前
网路原理:UDP协议
网络·网络协议·udp
EndingCoder15 小时前
WebSocket实时通信:Socket.io
服务器·javascript·网络·websocket·网络协议·node.js
一叶飘零_sweeeet16 小时前
从字节到网页:HTTP 与 TCP 的底层密码全解析
tcp/ip·http·三次握手
我有一颗五叶草18 小时前
HTTP 协议
网络·网络协议·http
沐风ya18 小时前
RPC介绍
网络·网络协议·rpc