计算机网络 之 【HTTP协议】(hppt请求与响应细节、http版本与连接管理)
目录1.http请求1.1. http请求方法1.2.http请求报头2.http响应2.1.http响应状态码及其描述2.2.重定向3.http版本简介4.http连接管理4.1.HTTP 连接管理基础4.2.连接类型与演进4.2.1.短连接HTTP/1.0 默认4.2.2.长连接HTTP/1.1 默认4.2.3.多路复用HTTP/2 引入4.2.4.QUIC 连接HTTP/3 核心1.http请求1.1. http请求方法其中最常用的就是GET方法和POST方法特性GETPOST参数位置URL 查询字符串?key1value1key2value2请求体Request Body长度限制受浏览器/服务器限制通常约2048字符无理论限制受服务器配置影响安全性较低参数暴露在URL、日志、浏览器历史中相对较高参数不直接显示在URL缓存可被缓存需配置Cache-Control默认不缓存典型用途获取数据如搜索、分页提交数据如表单、文件上传数据类型仅支持ASCII字符支持二进制数据如文件值得注意的是两者均为明文传输敏感数据如密码必须通过HTTPS加密1post特点POST请求主要用于向服务器提交表单数据不会被缓存2提交参数限制方法理论上HTTP协议实际上生产环境GET无限制有限制浏览器/服务器限制URL长度POST无限制有限制服务器配置限制Body大小相对来说get有限制post无限制1.2.http请求报头HTTP 请求报头分为通用报头、请求报头、实体报头 和 安全相关报头四类Header作用示例Host指定服务器域名和端口Host: www.baidu.comUser-Agent操作系统、浏览器类型及版本等信User-Agent: Chrome/120.0Accept可接收的响应类型Accept: text/html,image/*Accept-Encoding支持的压缩算法Accept-Encoding: gzip, deflateAccept-Language首选语言Accept-Language: zh-CN,zh;q0.9Connection连接管理Connection: keep-alive或closeContent-Type请求体正文数据类型(POST时)Content-Type: application/jsonContent-Length请求体长度Content-Length: 256Cookie携带状态信息Cookie: sessionIdabc123Referer来源页面Referer: https://www.google.comHostHTTP/1.1 必须包含否则服务器会拒绝请求Content-TypePOST/PUT 请求带请求体时通常需要指定User-Agent 是 HTTP 请求头中标识客户端浏览器、爬虫等详细信息的字段服务器通过它优化内容适配如推荐下载版本或实施反爬策略如拦截非浏览器请求而爬虫常通过随机化合法浏览器的 User-Agent 或结合无头浏览器等技术伪装身份以绕过检测但需注意合法性与伦理边界避免高频请求对服务器造成负担2.http响应2.1.http响应状态码及其描述分类状态码描述典型场景2xx 成功200 OK请求成功服务器已正确处理并返回响应。访问网页、API 请求成功。201 Created请求成功且服务器创建了新资源如 POST 请求后。提交表单后创建新用户或订单。204 No Content请求成功但无返回内容如 DELETE 请求后。删除数据后返回空响应。3xx 重定向301 Moved Permanently资源永久迁移到新 URL浏览器自动跳转并缓存新地址。网站域名更换、HTTPS 强制跳转。302 Found(临时重定向)资源临时迁移到新 URL浏览器跳转但不缓存新地址可能被307替代。登录后跳转到首页、促销页面临时链接。307 Temporary Redirect临时重定向严格遵循 HTTP 方法如 POST 请求重定向后仍为 POST。与302类似但保留请求方法。304 Not Modified资源未修改浏览器可使用缓存版本需配合If-Modified-Since等请求头。静态资源如 CSS/JS未更新时返回。4xx 客户端错误400 Bad Request请求语法错误或参数无效如缺少必填字段。提交表单时未填写必填项。401 Unauthorized未认证或认证失败需提供有效Authorization头。未登录访问需要权限的接口。403 Forbidden服务器理解请求但拒绝执行如无权限访问资源。普通用户尝试访问管理员页面。404 Not Found请求的资源不存在如错误的 URL 或已删除。访问不存在的网页或 API 端点。405 Method Not Allowed请求方法不被允许如用 GET 请求 POST 接口。对只支持 POST 的接口发送 GET 请求。429 Too Many Requests客户端请求频率过高触发限流需配合Retry-After头。爬虫或高频 API 调用被限制。5xx 服务器错误500 Internal Server Error服务器内部错误如代码异常、数据库连接失败。后端服务崩溃或未处理的异常。502 Bad Gateway服务器作为网关时收到上游服务器的无效响应如 Nginx 代理后端失败。反向代理服务器与后端服务通信异常。503 Service Unavailable服务器暂时不可用如过载、维护中需配合Retry-After头。服务器宕机或流量激增导致暂时无法响应。504 Gateway Timeout服务器作为网关时未及时收到上游服务器的响应如超时。反向代理等待后端服务超时。重定向状态码301永久重定向浏览器会缓存新 URL后续请求直接访问新地址302/307临时重定向浏览器每次都会重新请求新 URL307 更严格保留请求方法客户端错误401 vs 403401 是未认证需登录403 是已认证但无权限404资源不存在可能是路径错误或已被删除404 页面是服务器针对不存在的资源请求返回的 HTTP 响应其状态码为 404 Not Found响应正文通常包含自定义的友好错误页面如提示信息、导航链接等既明确告知客户端资源缺失又通过优化用户体验和流量引导降低用户流失同时可通过日志记录辅助排查无效链接问题HTTP/1.1 404 Not Found # 状态行状态码 状态描述 Content-Type: text/html # 响应头声明正文是 HTML 格式 Content-Length: 1024 # 响应头正文长度可选 html # 响应正文自定义的 404 页面内容 headtitle404 - 页面未找到/title/head body h1很抱歉您访问的页面不存在/h1 p可能是链接错误或页面已被删除。/p a href/返回首页/a /body /html服务器错误500通用服务器错误需检查后端日志502/504通常与代理或负载均衡相关需排查上游服务2.2.重定向重定向本质上就是让浏览器或客户端从一个 URL 自动跳转到另一个 URL核心机制HTTP 状态码触发服务器通过返回 3xx 状态码如 301、302告知客户端需要跳转Location 头指定目标响应头中必须包含 Location 字段指向新 URL例如 Location: https://new.example.com客户端自动执行浏览器或 HTTP 客户端如 curl、爬虫收到 3xx 后会自动发起对新 URL 的请求Location 字段是 HTTP 重定向的核心机制当服务器因资源迁移、权限控制等原因无法直接响应请求时会返回 3xx 状态码如 301、302并在响应头中添加 Location 字段指定新地址浏览器或客户端检测到 3xx 后会自动根据 Location 的值发起对新 URL 的请求从而实现服务端引导客户端跳转的完整重定向流程2.3.http响应报头Header作用示例Content-Type关键字段响应体MIME类型Content-Type: text/html; charsetutf-8Content-Length响应体大小(字节)Content-Length: 2048Content-Encoding压缩算法Content-Encoding: gzipSet-Cookie设置Cookie写入 Session IDSet-Cookie: sessionIdxyz; HttpOnlyCache-Control缓存策略Cache-Control: max-age3600Location重定向地址(301/302)Location: /new-pageServer服务器信息Server: nginx/1.18.0Connection连接管理Connection: keep-alive当服务器创建 Session 时会生成一个唯一的Session ID。为了在后续请求中识别这个 ID 属于哪个客户端服务器需要把这个 ID 传递给浏览器保存。默认方式服务器通过Set-Cookie响应头将 Session ID 写入浏览器的Cookie中。后续通信浏览器再次请求时会自动在请求头的Cookie字段里带上这个 Session ID服务器据此找到对应的 Session 数据。如果客户端禁用了 CookieSession 仍可通过URL 重写来工作将 Session ID 直接附加在网页的每个超链接 URL 后面单安全性较低Session ID 易泄露且实现麻烦2.4.Content-Type的重要性和常见值Content-Type告诉浏览器如何解析响应体数据错误设置会导致显示异常或安全问题类型Content-Type说明文本text/html; charsetutf-8HTML页面文本text/plain纯文本文本text/cssCSS样式表脚本application/javascriptJavaScript图片image/jpeg、image/png、image/gif图片资源应用application/jsonJSON数据应用application/xmlXML数据二进制application/octet-stream通用二进制流表单multipart/form-data文件上传3.http版本简介特性HTTP/1.0HTTP/1.1HTTP/2HTTP/3传输协议TCPTCPTCPUDP基于QUIC协议连接模型短连接每次请求新建TCP连接持久连接Keep-Alive默认启用多路复用单连接并行请求多路复用QUIC连接无队头阻塞数据传输格式纯文本纯文本二进制分帧Frames二进制分帧优化版QUIC帧头部压缩不支持不支持HPACK基于霍夫曼编码QPACK动态表优化抗丢包服务器推送不支持不支持支持Server Push支持优化版推送机制请求优先级不支持不支持支持STREAM_DEPENDENCY支持QUIC流优先级控制安全性无内置加密无内置加密依赖HTTPS依赖HTTPSTLS 1.2依赖HTTPS默认支持TLS 1.3典型延迟问题高频繁建立连接中持久连接减少延迟低多路复用避免队头阻塞极低0-RTT连接建立 快速迁移适用场景早期Web传统Web服务高性能Web应用如视频流移动网络/高丢包环境如5G/卫星通信HTTP/1.0 → HTTP/1.1核心改进持久连接解决短连接性能问题支持管道化但未广泛使用新增功能分块传输编码、缓存控制等HTTP/1.1 → HTTP/2核心改进二进制分帧层实现多路复用彻底解决队头阻塞问题头部压缩减少冗余数据传输新增功能服务器推送、请求优先级、流控制HTTP/2 → HTTP/3核心改进用QUIC协议替代TCP通过UDP实现更快的连接建立和迁移能力改进的头部压缩抗丢包性更强。新增功能0-RTT连接建立、连接ID支持移动场景无缝切换4.http连接管理4.1.HTTP 连接管理基础HTTP 是基于 TCP 协议 的应用层协议核心机制包括连接建立与终止通过 TCP 三次握手建立连接四次挥手释放连接请求-响应模型客户端发送请求服务器返回响应后连接可能关闭或复用一个网页包含HTML文档本身及其引用的所有图片、样式、脚本等独立资源每个资源都需要单独发起HTTP请求但在HTTP/1.1长连接或HTTP/2多路复用下多个请求可以复用同一个TCP连接例如用户只访问qq域名不加任何参数服务器会做出响应一般返回首页源代码浏览器做出解释后显示给用户如果是网页有图片资源浏览器就会申请图片资源。短连接时是一个申请一个响应长连接时可以连续的请求与响应4.2.连接类型与演进4.2.1.短连接HTTP/1.0 默认行为每次请求响应后立即关闭 TCP 连接问题高延迟网页含多资源如图片时需多次建立连接重复 TCP 握手和慢启动过程资源浪费频繁创建/销毁连接消耗 CPU 和内存GET /index.html HTTP/1.0 Host: example.com [服务器响应后连接关闭]4.2.2.长连接HTTP/1.1 默认行为通过 Connection: keep-alive 头字段维持连接支持连续请求响应优化复用连接同一连接可传输多个资源减少 TCP 握手开销持久化参数可通过 Keep-Alive: timeout60, max100 控制连接存活时间秒和最大请求数问题队头阻塞同一连接内请求需按顺序处理若某个请求阻塞如大文件下载后续请求需等待GET /index.html HTTP/1.1 Host: example.com Connection: keep-alive [服务器响应后连接保持打开客户端可继续发送其他请求]4.2.3.多路复用HTTP/2 引入行为在单个 TCP 连接内通过 二进制分帧层 并行传输多个请求/响应流优势彻底解决队头阻塞流之间独立调度互不影响高效利用带宽动态调整流优先级如先加载关键资源[HTTP/2 连接建立后客户端可并行发送多个流Stream] Stream 1: GET /style.css Stream 2: GET /script.js [服务器可交错返回响应帧]4.2.4.QUIC 连接HTTP/3 核心行为基于 UDP 的 QUIC 协议实现连接支持 0-RTT 快速建立 和 连接迁移优势抗丢包每个流独立拥塞控制避免全局阻塞移动友好切换网络如 Wi-Fi → 4G时保持连接不断[HTTP/3 首次连接即可发送加密数据无需完整 TLS 握手] QUIC Connection ID: 0x123456 [后续连接可复用 ID实现无缝迁移]
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2515139.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!