【计算机网络】初识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 内容
相关推荐
身如柳絮随风扬3 小时前
GET请求能带Body吗?GET与POST的核心区别全解析
http
以太浮标5 小时前
华为eNSP模拟器综合实验之- MGRE多点GRE隧道详解
运维·网络·网络协议·网络安全·华为·信息与通信
时空自由民.6 小时前
WebSocket 协议介绍
网络·websocket·网络协议
计算机安禾7 小时前
【计算机网络】第4篇:介质访问控制子层——CSMA/CD到全双工交换的演进逻辑
计算机网络
如君愿7 小时前
考研复习 Day28 | 习题--计算机网络第四章(网络层 中)、数据结构(树与二叉树 下)
数据结构·计算机网络·考研·课后习题·记录考研
锅挤8 小时前
计算机网络复习(第五章):传输层
网络·计算机网络
时空自由民.9 小时前
CAN ,CANFD,EtherCAT介绍
网络协议·计算机网络
计算机安禾9 小时前
【计算机网络】第3篇:网络编程范式的演进——阻塞IO、非阻塞IO与IO多路复用的比较研究
网络·计算机网络
Gh0st_Lx9 小时前
【6】为什么有了 HTTP/1.1 ,还要 HTTP/2 和 HTTP/3
网络协议·http·php
锅挤9 小时前
计算机网络复习(第四章):网络层
计算机网络