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

[HTTP协议]应用层的HTTP 协议介绍

目录

1.前言

2.使用fiddler抓包来观察HTTP协议格式

3.HTTP协议的基本格式

2.1请求

2,1.1首行

2.1.2请求头

2.1.3空行

2.2响应

2.2.1首行

2.2.2响应头 键值对

​编辑2.2.3空行

2.2.4载荷(响应正文)

3.认识URL

3.1关于URL encode


1.前言

我们在前面的博客中,简单的介绍了传输层,网络层,数据链路层等网络层的协议和相关概念,这些协议越往上越和我们编写程序的人息息相关,尤其是应用层和传输层,本篇博客,我将带领大家认识和了解应用层的重要协议--HTTP协议.HTTP又叫做超文本传输协议,所谓的超文本就是即可以是文件也可以是图片或者视频文字之类的. 也可以是HTML 或者CSS JS文件和文本传输只能是字符串不一样,超文本可以传输更多类型的数据.

2.使用fiddler抓包来观察HTTP协议格式

要使用fiddler,我们在一开始设置的时候要同意并且安装它的证书.它就可以自动抓包.使用fiddler的时候要注意不能在电脑上使用代理程序,如果有的话就要关闭这个代理程序,因为fiddler这个软件本身也是一个代理程序,如果使用其他的代理程序的话,就会造成冲突.

当我们打开一个网页以后,也会抓包.

3.HTTP协议的基本格式

  HTTP协议分为请求和响应,我们可以在fiddler中打开请求的文本来观察一下HTTP协议的请求

选中raw然后点击view in Notepad就可以以记事本的格式打开这个请求

接下来我们详细说明一下这些内容都分别代表什么含义:

2.1请求

一个请求分为四个部分 分别是

2,1.1首行

首行有三个部分 分别是 方法,url,版本号

2.1.2请求头

从第二行 一直到最后面 都是请求头

里面包含了很多键值对 一个键值对占一行,键和值的使用,用:来分割.此处的键值对都有哪些,是什么含义,都是HTTP协议规定的.

2.1.3空行

请求最下面就有一个空行,这个空行就可以结束标记

2.1.4正文

http 的载荷部分,有的http请求有 有的没有

2.2响应

http 的响应也分为四个部分 分别是

2.2.1首行

这里的首行也分为三个部分 使用空格来分隔

2.2.2响应头 键值对

2.2.3空行

中间这个空行

2.2.4载荷(响应正文)

响应的载荷是html

3.认识URL

url这个概念非常重要,不仅仅是在HTTP中使用,在jdbc中也使用过这个东西,它描述了一个网络上的资源位置是一个唯一资源定位符,比如 https://www.sogou,com/就是一个最简单的url

片段标识符是表示当前页面的某个部分,通过不同的片段表示可以完成页面内的跳转

综上所述  的IP地址 端口号 ,路径,查询字符串 就可以描述出一个网络资源了.

3.1关于URL encode

query string 力是自定义的键值对,在URL中,本身有些特殊符号具有特定的含义.如果query string中也包含有同样的符号,咋办? 如果直接写进去,可能就会使服务器 /游览器解析失败 最靠谱的就是使用转义字符

对于汉字 也是需要转义的. 因为如果汉字的utf8 或者 gbk等编码的值和ascii的码一致 ,就麻烦了

此处是C%2B%2B本来是我们输入的C++,  我们在ascii中拿出来,使用16进制表示,并且加上 % 

这里的urlencode编码是非常重要的,实际开发中,在构造一个url的时候 ,尤其url 的 query string 中要包含有中文的时候,无比要进行编码

比如我们在游览器中输入一个你好.然后复制一下上面的网络路径  

我们将你好这个输入到码表中

我们可以看到.转码后的和我们输入的一模一样.证明了该游览器对中文进行了转码


http://www.kler.cn/a/232131.html

相关文章:

  • 二五、pxe自动装机
  • 【计算机毕设】无查重 基于python豆瓣电影评论舆情数据可视化系统(完整系统源码+数据库+开发笔记+详细部署教程)✅
  • VBA学习笔记:点击单元格显示指定的列
  • 生成式GPT商品推荐:精准满足用户需求
  • JDBC-Mysql 时区问题详解
  • 酒水分销积分商城小程序开发方案php+uniapp
  • 从零开始 TensorRT(3)Python 篇:解析 ONNX、PyTorch TensorRT 接口
  • vue使用Mars3d弹框嵌套video视频/实时视频(flv) 使用jessibuca.js播放器
  • CTFshow web(php命令执行 45-49)
  • k8s 部署java应用 基于ingress+jar包
  • Flask基础学习
  • 高仿原神官网UI 纯html源码
  • 【C++11】统一初始化 和 initializer_list
  • 微信小程序新手入门教程四:样式设计
  • 自然语言处理(NLP)——使用Rasa创建聊天机器人
  • 测试管理_利用python连接禅道数据库并自动统计bug数据到钉钉群
  • 输入:123 输出321
  • 【大厂AI课学习笔记】【1.5 AI技术领域】(7)图像分割
  • 分布式存储中常见的容错机制:多副本、纠删码(RS、LRC、SHEC)
  • 修复 Java 异常 Java.IO.NotSerializableException
  • c入门第十篇——指针入门
  • vue.js基于springboot的实验室设备管理系统10345
  • 51单片机之LED灯模块篇
  • 牛客网SQL264:查询每个日期新用户的次日留存率
  • Flink流式数据倾斜
  • 如何在 Debian 11 上安装 Python 3 并设置编程环境