【计算机网络】详解HTTP请求和响应格式常见请求方法Header报头响应报文状态码URL

ops/2024/10/8 22:55:43/

一、HTTP协议的定义

        在互联网世界中,HTTP HyperText Transfer Protocol,超文本传输协议)是一个至关重要的协议。它定义了客户端(如浏览器)与服务器之间如何通信,以交换或传输超文本(如 HTML 文档)。HTTP 协议是客户端与服务器之间通信的基础。客户端通过 HTTP 协议向服务器发送请求,服务器收到请求后处理并返回响应。 HTTP 协议是一个无连接、无状态的协议,即每次请求都需要建立新的连接,且服务器不会保存客户端的状态信息

二、认识URL

        平时我们俗称的 " 网址" 其实就是说的 URL。在互联网中,要找到一份资源,要知道资源所在主机的IP地址以及在该主机中的文件路径。域名会被解释成IP和端口。//,/,?等都是特殊字符,域名(服务器地址)是禁止出现特殊字符的。?后面都是kv参数,如果我们的搜索内容中本来就包含了特殊字符,那特殊字符在请求时浏览器会对其进行编码转换成对应的十六进制,我们的汉字也会被编码转换成对应的十六进制。
https://i-blog.csdnimg.cn/direct/3e112a7e71fd4a20a7277e18bcc42cc2.png" width="1200" /> https://i-blog.csdnimg.cn/direct/994acc542d194bdfa17b473e6e6dd2c1.png" width="750" />
上面的/dir就是网站注册的搜索服务

2.1、urlencode 和urldecode

        像/?:等这样的字符,已经被url当做特殊意义理解。因此这些字符不能随意出现。比如,某个参数中需要带有这些特殊字符,就必须先对特殊字符进行转义。转义的规则如下:将需要转码的字符转为16进制,然后从右到左,取4位(不足4位直接处理),每2位 做一位,前面加上%,编码成%XY格式。

三、HTTP请求和响应格式

https://i-blog.csdnimg.cn/direct/9cda5b23f9c54b788c6c7aeddf33b705.png" width="753" />

        URI指的是指定服务器下的一串路径,指定服务器下的什么资源。 这里HTTP版本指的是客户端的版本由上图可知,空行可以保证我们把报头全部读完,请求正文可以不携带。如果我们没有指明我们要请求什么资源,URI默认就是/,http协议可以支持默认首页。我们在一个网站中访问网页,进行页面跳转,每一次访问,都是一次http请求进一步的我们也可以理解什么是网站,网站本质上就是一对特定目录和文件构成的目录结构一张网页里可以包含很多资源,比如说图片。获取一张完整的网页,要先获取html,渲染解析html,浏览器会发起二次或多次请求,获取完成完整网页的所有元素,然后构成一个完整的网页结果。http内部要根据目标要访问的资源的文件后缀,区分清楚文件类型,通过Content-Type告诉浏览器我的响应正文的类型。

        注意点:设置端口号复用,当服务器已经停止使用时还有客户端连着,此时服务器端的端口号还会被一直占用着,导致无法立即重启,设置端口号复用可以实现立即重启。

        注意点:http的请求本质上是一个大字符串。httpserver尽量不依赖任何第三方库。我们可以把功能、服务当成资源,http本身不能进行数据处理

 https://i-blog.csdnimg.cn/direct/e70ae81273234832bb9bf2cbe1ad5be6.png" width="734" />

         这里HTTP版本指的是服务端的版本。我们可以看到请求报头和响应报头有的格式是一样的。 请求报头和响应报头中的版本字段可以保证客户端和服务端在通信时版本的匹配,不至于产生通信问题。

四、HTTP常见请求方法

4.1、GET 方法

        GET方法会以url的方式来向服务器提交参数,可以用于请求URL 指定的资源,指定资源经服务器端解析后返回响应内容。

4.2、POST方法

        POST方法会以正文形式进行参数的上传。POST方法上传参数要比GET方法更加私密,另外,POST方法可以传递更多、更大的数据。

五、HTTP常见Header报头

  • Content-Type: 数据类型(text/html 等)
  • Content-Length: Body 的长度
  • Host: 客户端告知服务器, 所请求的资源是在哪个主机的哪个端口上;
  • User-Agent: 声明用户的操作系统和浏览器版本信息;
  • referer: 当前页面是从哪个页面跳转过来的;
  • Location: 搭配 3xx 状态码使用, 告诉客户端接下来要去哪里访问;
  • Cookie: 用于在客户端存储少量信息. 通常用于实现会话(session)的功能;
  • Accept:客户端能接收的数据格式。
  • Connection:Connection 字段可用于管理持久连接(也称为长连接)。持久连接允许客户端和服务器在请求/响应完成后不立即关闭 TCP 连接,以便在同一个连接上发送多个请求和接收多个响应。在 HTTP/1.1 协议中,默认使用持久连接。当客户端和服务器都不明确指定关闭连接时,连接将保持打开状态,以便后续的请求和响应可以复用同一个连接。在 HTTP/1.0 协议中,默认连接是非持久的。如果希望在 HTTP/1.0上实现持久连接,需要在请求头中显式设置 Connection: keep-alive。keep-alive:表示希望保持连接以复用 TCP 连接。close:表示请求/响应完成后,应该关闭 TCP 连接。

https://i-blog.csdnimg.cn/direct/942bfd1f9ea040bd9f293ec7d58db804.png" width="1138" /> 六、HTTP响应报文状态码

https://i-blog.csdnimg.cn/direct/4128234e1f90426fb7cd8b4b9e1d1c19.png" width="1200" />        最常见的状态码, 比如 200(OK), 404(Not Found), 403(Forbidden), 302(Redirect, 重定向), 504(Bad Gateway)。


http://www.ppmy.cn/ops/122842.html

相关文章

vue源码解析(源码解析学习大纲)

文章目录 Vue源码解析入手方向大纲1.核心概念1-1.响应式系统1-2. 组件1-3. 虚拟DOM1-4. 指令1-5. 生命周期钩子 2.虚拟DOM2-1. 概念2-2. 工作流程2-3. 示例2-4.总结 3.组件系统3-1. 组件的定义3-2. 组件的创建3-3. 组件的模板3-4. 生命周期3-5. 事件处理3-6. 插槽(S…

UE4_Niagara基础实例—7、如何让粒子照亮周边环境

效果: 所涉知识点: 参考文档:Niagara渲染器 | 虚幻引擎 4.27 文档 | Epic Developer Community (epicgames.com) Niagara渲染器 Niagara渲染器说明虚幻引擎应该如何显示每个生成的粒子。注意,这不一定是可视的。与模块不同&…

10.7学习

1.安全认证 ●Session 认证中最常用的一种方式,也是最简单的。存在多节点session丢失的情况,可通过nginx粘性Cookie和Redis集中式Session存储解决 ●HTTP Basic Authentication 服务端针对请求头中base64加密的Authorization 和用户名和密码进行校验。…

Storm-0501黑客组织针对美国政府混合云环境发起攻击

近日,有一名为 Storm-0501 的威胁行为者以美国的政府、制造、运输和执法部门为目标,发动勒索软件攻击。 微软表示,这种多阶段攻击活动旨在破坏混合云环境,并从内部部署横向移动到云环境,最终导致数据外渗、凭证盗窃、篡…

【Python】文件及目录

文章目录 概要一、文件对象的函数1.1 open()函数1.2 文件对象的函数1.3 with语句 二、基于os和os.path模块的目录操作三、基于Pandas的文件处理3.1 Pandas读写各种类型文件 其他章节的内容 概要 本文主要将了打开文件的函数open()的参数,以及文件对象的函数&#x…

【Vue】Vue2(2)

文章目录 1 数据代理1.1 回顾Object.defineproperty方法1.2 何为数据代理1.3 Vue中的数据代理 2 事件处理2.1 事件的基本使用2.2 事件修饰符2.3 键盘事件 1 数据代理 1.1 回顾Object.defineproperty方法 <!DOCTYPE html> <html><head><meta charset&quo…

Linux运维01:VMware创建虚拟机

视频链接&#xff1a;05.新建VM虚拟机_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1nW411L7xm/?p14&spm_id_from333.880.my_history.page.click&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5 1.点击“创建虚拟机” 2.选择“自定义&#xff08;高级&#xff0…

主流反爬虫手段

这题我会&#xff0c;主流反爬虫手段 ①检测浏览器环境动态生成cookie(瑞数) ②验证码(极验&#xff0c;顶象) ③js混淆或加密&#xff0c;obfuscator的js混淆&#xff0c;wasm加密&#xff0c;jsvmp(js虚拟机) ④字体反爬&#xff0c;CSS反爬&#xff0c;雪碧图 ⑤tls指纹…