当前位置: 首页 > news >正文

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

一、HTTP协议的定义

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

二、认识URL

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

2.1、urlencode 和urldecode

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

三、HTTP请求和响应格式

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

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

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

 

         这里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 连接。

 六、HTTP响应报文状态码

        最常见的状态码, 比如 200(OK), 404(Not Found), 403(Forbidden), 302(Redirect, 重定向), 504(Bad Gateway)。

相关文章:

  • C语言-进程控制编程
  • ceph rgw 桶分片之reshard
  • The Sandbox 游戏制作教程第 6 章|如何使用装备制作出色的游戏 —— 避免环境危险
  • 数据库 - python操作MySQL
  • 【C语言】tcp接收服务
  • 使用 Spring Boot 实现 JWT 生成与验证的自定义类
  • Library介绍(三)
  • 二叉搜索树(c++版)
  • Qt多线程与数据库
  • MacOS升级Ruby版本详解:步骤、挑战与解决方案
  • 深度学习推理的技术实现与优化策略
  • ELK-03-skywalking监控linux系统
  • 新能源汽车储充机器人:能源高效与智能调度
  • STM32常见配置
  • LM393 电压比较器和典型电路
  • iOS | NSProxy
  • java多线程
  • Logstash 参考指南(目录)
  • php面试题 汇集2
  • Redux 中间件分析
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • SQL 难点解决:记录的引用
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 多线程事务回滚
  • 关于字符编码你应该知道的事情
  • 记一次删除Git记录中的大文件的过程
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 前端技术周刊 2018-12-10:前端自动化测试
  • 使用common-codec进行md5加密
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 新书推荐|Windows黑客编程技术详解
  • 找一份好的前端工作,起点很重要
  • 关于Android全面屏虚拟导航栏的适配总结
  • 摩拜创始人胡玮炜也彻底离开了,共享单车行业还有未来吗? ...
  • !!Dom4j 学习笔记
  • #define用法
  • #etcd#安装时出错
  • #window11设置系统变量#
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (Java入门)学生管理系统
  • (ros//EnvironmentVariables)ros环境变量
  • (层次遍历)104. 二叉树的最大深度
  • (超详细)语音信号处理之特征提取
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (附源码)计算机毕业设计高校学生选课系统
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • *上位机的定义
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .NET 5种线程安全集合
  • .NET Core WebAPI中封装Swagger配置
  • .net 怎么循环得到数组里的值_关于js数组
  • ?