HTTP网络通信协议基础

目录

前言:

1.HTTP协议理论

1.1协议概念

1.2工作原理

2.HTTP抓包工具

2.1Fiddler工具

2.2抓包原理

3.HTTP协议格式

3.1HTTP请求

3.2HTTP响应

3.3格式总结


前言:

在了解完网络编程的传输层UDP和TCP通信协议后,就需要开始对数据进行"修饰",即应用层协议。在应用层中,HTTP协议是最重要、最常用的一个通信协议。

本节主要介绍HTTP协议的基础知识以及Fiddler抓包工具的使用。
序列:HTTP - 001


1.HTTP协议理论

1.1协议概念

HTTP (全称为**"超文本传输协议"** )是一种应用非常广泛的**应用层协议,**目前已经发展成为一种最主流的应用层协议。

所谓"超文本" 的含义,就是传输的内容不仅仅是文本,还可以是一些其他的资源,比如图片、视频和音频等二进制的数据。

HTTP协议往往是基于传输层的TCP协议实现(HTTP1.0、HTTP1.1和HTTP2.0均为TCP,HTTP3基于UDP实现)。

目前我们主要使用的还是HTTP1.1和HTTP2.0版本。

1.2工作原理

当我们在浏览器中输入一个"网址",此时浏览器就会给对应的服务器发送一个HTTP请求,对方服务器收到这个请求之后,经过计算处理,就会给主机返回一个HTTP响应。

事实上,当我们访问一个网站的时候,大概率涉及不止一次的HTTP请求/响应 的交互过程,为了清楚捕捉到所有的HTTP请求/响应,所以我们要使用**"抓包工具"**观察到详细的过程。

2.HTTP抓包工具

在了解HTTP协议的格式之前,我们首先要学会和使用"抓包工具",这在学习和了解HTTP协议时非常重要。

2.1Fiddler工具

市面上的抓包工具有很多,以其中最好使用的一款Fiddler抓包工具 为例。官网下载地址为:Fiddler | Web Debugging Proxy and Troubleshooting Tools

FIddler是一款专门抓取针对http请求/响应的工具,它对于其他的抓包工具而言具有清晰、方便的优点,所以推荐使用Fiddler抓包工具。

安装完成之后Fiddler界面如下:

安转完成之后,依次选择左上角Tools->Options...->HTTPS->勾选全部的内容,操作完成之后就可以抓取主机的所有http请求/响应。

  • 左侧窗口显示了所有的HTTP请求/响应,可以选中某个请求查看详情;
  • 右侧上方显示了HTTP请求的报文内容;(切换到Raw标签页可以看到详细的数据格式)
  • 右侧下方显示了HTTP响应的报文内容;(切换到Raw标签页可以看到详细的数据格式)
  • 请求和响应的详细数据,可以通过右下角的View in Notepad通过记事本打开;

可以使用ctrl+a全选左侧的抓包结果,delete键清除所有被选中的结果。

2.2抓包原理

Fiddler就相当于一个**"代理"**。

  1. 浏览器访问sogou.com时,就会把HTTP请求先发给Fiddler,Fiddler再把请求转发给sogou服务器。
  2. 当sogou服务器返回数据时,Fiddler拿到返回数据,再把数据交给浏览器,因此Fiddler对于浏览器和sogou服务器之间交互的数据细节,都是非常清楚的。

3.HTTP协议格式

3.1HTTP请求

请求的详细数据,在Fiddler中通过右下角的View in Notepad打开:

请求格式拆解:

  • 首行:[方法]+[url]+[版本号],分别使用空格分隔;
  • 请求头(Header):请求的属性,每个键值对独占一行,冒号+空格来分割键和值
  • 空行:遇到空行表示Header部分结束
  • 正文(Body):空行后面的内容都是Body,Body允许为空字符串。如果Body存在,则在Header中会有一个Content-Length属性来标识Body的长度;

3.2HTTP响应

响应的详细数据,在Fiddler中通过右下角的View in Notepad打开:

响应格式拆解:

  • 首行:[版本号]+[状态码]+[状态码解释],分别使用空格分隔;
  • 响应头(Header):请求的属性,每个键值对独占一行,冒号+空格分割键和值
  • 空行:遇到空行表示Header部分结束
  • 正文(Body):空行后面的内容都是Body,Body允许为空字符串。如果Bodv存在,则在Header中会有一个Content-Length属性来标识Body的长度。如果服务器返回了一个html页面,那么html页面内容就是在body中。

3.3格式总结

HTTP协议请求/响应格式:

请求/响应行、报头和空行必须要有,请求正文部分可有可无。

空行作用:HTTP在传输层依赖TCP协议,TCP是面向字节流的,如果没有这个空行,就会出现**"粘包问题"**。


以上便是HTTP协议的基本知识和抓包工具Fiddler。

相关推荐
青云交10 分钟前
Java 大视界 -- 基于 Java 的大数据分布式存储在智慧城市时空大数据管理与应用中的创新实践(408)
java·hdfs·flink·智慧城市·hbase·java 分布式存储·时空大数据
赶飞机偏偏下雨18 分钟前
【Java笔记】单例模式
java·笔记·单例模式
开开心心_Every24 分钟前
免费语音合成工具:66种音色随心选
人工智能·面试·java-ee·计算机外设·电脑·maven·excel
ZPC821028 分钟前
scp 网间拷贝
网络协议·tcp/ip·ssl·信息与通信
小蒜学长36 分钟前
基于Spring Boot的火灾报警系统的设计与实现(代码+数据库+LW)
java·数据库·spring boot·后端
武昌库里写JAVA38 分钟前
基于Spring Boot + Vue3的办公用品申领管理系统
java·spring boot·后端
中国lanwp38 分钟前
Spring Boot的配置文件加载顺序和规则
java·spring boot·后端
我言秋日胜春朝★39 分钟前
【Linux网络编程】传输层协议-----UDP协议
linux·网络·udp
我命由我123451 小时前
Android 开发 - 一些画板第三方库(DrawBoard、FingerPaintView、PaletteLib)
android·java·java-ee·android studio·安卓·android-studio·android runtime
知彼解己1 小时前
深入理解 AbstractQueuedSynchronizer (AQS):Java 并发的排队管家
java·开发语言