目录

  • 一、TCP、HTTP网络协议
    • 1.TCP协议
    • 2.HTTP协议
  • 二、wireshark抓包实验
    • 1.基本界面
    • 2.TCP的三次握手协议
  • 三、fiddler抓包
    • 1.更改设置
    • 2.抓包
  • 四、总结
  • 参考资料

一、TCP、HTTP网络协议

1.TCP协议

TCP是一种面向连接(连接导向)的、可靠的基于字节流的传输层通信协议。TCP将用户数据打包成报文段,它发送后启动一个定时器,另一端收到的数据进行确认、对失序的数据重新排序、丢弃重复数据。
TCP的特点有:

  • TCP是面向连接的运输层协议
  • 每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的
  • TCP提供可靠交付的服务
  • TCP提供全双工通信。数据在两个方向上独立的进行传输。因此,连接的每一端必须保持每个方向上的传输数据序号。
  • 面向字节流。面向字节流的含义:虽然应用程序和TCP交互是一次一个数据块,但TCP把应用程序交下来的数据仅仅是一连串的无结构的字节流。
    TCP帧格式:

    TCP的三次握手:

2.HTTP协议

HTTP,全称为 HyperText Transfer Protocol,即为超文本传输协议。是互联网应用最为广泛的一种网络协议,所有的 www 文件都必须遵守这个标准。

HTTP 特性:

  • HTTP 是无连接无状态的HTTP 一般构建于 TCP/IP 协议之上,默认端口号是 80
  • HTTP 可以分为两个部分,即请求和响应。

HTTP 请求:

HTTP 定义了在与服务器交互的不同方式,最常用的方法有 4 种,分别是 GET,POST,PUT, DELETE。URL 全称为资源描述符,可以这么认为:一个 URL 地址,对应着一个网络上的资源,而 HTTP 中的 GET,POST,PUT,DELETE 就对应着对这个资源的查询,修改,增添,删除4个操作。

HTTP 请求由 3 个部分构成,分别是:状态行,请求头(Request Header),请求正文。
GET 请求报文实例:

  • 状态行由请求方式,路径、协议等构成,各元素之间以空格分隔。对应到图中即为 GET、/books/?sex=man&name=Professional、 HTTP/1.1
  • 请求头提供一些参数比如:Cookie,用户代理信息,主机名等等。(图中即从第二行到最后一行)
  • 请求正文就放一些发送的数据,一般 GET 请求会将参数放在 URL 中,也就是在请求头中而请求正文一般为空,而 POST 请求将参数放在请求正文中。请求正文可以传一些 json 数据或者字符串等等。

GET 一般用于信息获取,比如刚才我们浏览百度首页,其使用的就是GET方法。

GET 请求一般不会产生副作用,它仅仅只是获取资源信息,就像数据库查询一样,不会修改、增加数据,不会影响资源的状态,并且对同一个 URL 的多次GET请求应该返回相同的结果。

而 POST 请求表示可能会修改服务器上的资源。

GET 请求和 POST 请求的区别:

(1)GET 和 POST 请求参数位置不同,从上面两个请求报文可以看出,GET 请求对应的参数放在 URL 中,而 POST 请求对应的参数放在 HTTP 请求主体中。(但是这只是一种约定,GET 请求中出现 Body 也是被允许的)
(2)虽然 HTTP 协议的 RFC规范 并没有详细规定 URL 的最大字符长度限制,但实际上,在浏览器或者服务器中总会存在限制的,这就导致了 GET 请求中参数数量是有限的。
(3) 处于安全考虑,在一些涉及安全的请求比如:登录请求需要用 POST 提交表单,而GET 请求一般用来获取静态资源。
(4)GET 请求可以被缓存,可以被收藏为书签,但 POST 可以被缓存,但不能被收藏为书签。
(5)GET 请求的参数在 URL 中,因此绝不能用 GET 请求传输敏感数据。POST 请求数据则写在 HTTP 的请求头中,安全性略高于 GET 请求。

HTTP 响应:

HTTP 响应是服务器在客户端发送 HTTP 请求后经过一些处理而做出的响应,HTTP 响应和 HTTP 请求相似,也是由三个部分构成。分别是:状态行,响应头(Response Header),响应正文。

下面是一个 HTTP 响应的例子:

HTTP 响应中包含一个状态码,用来表示服务器对客户端响应的结果。

状态码一般由3位构成:

  • 1xx : 表示请求已经接受了,继续处理。
  • 2xx : 表示请求已经处理掉了。
  • 3xx : 重定向。
  • 4xx : 一般表示客户端有错误,请求无法实现。
  • 5xx : 一般为服务器端的错误。

比如常见的状态码:

  • 200 OK 客户端请求成功。
  • 301 Moved Permanently 请求永久重定向。
  • 302 Moved Temporarily 请求临时重定向。
  • 304 Not Modified 文件未修改,可以直接使用缓存的文件。
  • 400 Bad Request 由于客户端请求有语法错误,不能被服务器所理解。
  • 401 Unauthorized 请求未经授权,无法访问。
  • 403 Forbidden 服务器收到请求,但是拒绝提供服务。服务器通常会在响应正文中给出不提供服务的原因。
  • 404 Not Found 请求的资源不存在,比如输入了错误的URL。
  • 500 Internal Server Error 服务器发生不可预期的错误,导致无法完成客户端的请求。
  • 503 Service Unavailable 服务器当前不能够处理客户端的请求,在一段时间之后,服务器可能会恢复正常。

知道了 HTTP 请求和响应后,一个完整的流程一般是这样的:

通常,由 HTTP 客户端发起一个请求,建立一个到服务器指定端口(默认是 80 端口)的 TCP 连接。HTTP 服务器则在那个端口监听客户端发送过来的请求。一旦收到请求,服务器(向客户端)发回一个状态行,比如"HTTP/1.1 200 OK",和(响应的)消息,消息的消息体可能是请求的文件、错误消息、或者其它一些信息。

二、wireshark抓包实验

wireshark官网下载
安装的时候一直选next就好了。

1.基本界面

主界面:

选择自己网络的接口:


在显示过滤器里我输入了http,所以封包列表里只有http协议相关的封包:

2.TCP的三次握手协议

TCP帧格式:

TCP的三次握手:

确定使用的协议,使用HTTP服务。我选择https://www.blibili.com作为目标地址。
先在浏览器打开这个网址,打开命令提示符,通过ping指令查看一个目标网址的IP地址(ping www.bilibili.com)来查看目标IP地址。

在显示过滤器中填入过滤条件:tcp and ip.addr== 223.85.58.73,过滤结果如下:

当前数据包的数据部分:

TCP三次握手:
第一次握手数据包:客户端发送一个TCP,标志位为SYN,序列号为3783977701,确认号为0, 代表客户端请求建立连接,如下图所示(第一条):

第二次握手的数据包:服务器发回确认包, 标志位为 SYN,ACK。确认号标志位为1,将确认号(Acknowledgement Number(raw)))设置为第一次握手时的序列号加1.即3783977701+1=3783977702,序列号为88329463,如下图所示(第二条):

第三次握手的数据包:客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1。并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方。序列号:3783977702,确认号:88329464。在进过三次握手后和服务器建立了TCP连接,如下图所示(第三条):

三、fiddler抓包

官网下载:fiddler下载
安装时默认就好(可以改改安装路径)。
默认状态下的fiddler是不能解密https协议的请求内容的,想要用fiddler抓到浏览器访问的https接口,需要在fiddler下更改设置。

1.更改设置

点击Tools,选择Options:

点击Options之后会出来一个小窗口,选择https项,然后把红框里的两个单选框都选上(如果你要监听的程序访问的 HTTPS 站点使用的是不可信的证书,则请接着把下面的 “Ignore servercertificate errors” 勾选上。),点击ok就行了,这时系统会提示你这个软件要请求根权限,一直选同意就行了(配置完后要重启fiddler):

2.抓包

重新进入fiddler,点击左下角的Capturing。到浏览器打开一个网页,fiddler的会话会更新(如果没更新就再点左下角)

四、总结

通过wireshark可以清楚的了解到TCP的三次握手协议,让我对网络协议有了一个更深的了解。fiddler能对https进行解密,能看到网页的数据内容

参考资料

https://zhuanlan.zhihu.com/p/24913080
https://blog.csdn.net/fortune_cookie/article/details/89632006
https://blog.csdn.net/ychgyyn/article/details/82154433

网络抓包与HTTP协议相关推荐

  1. 网络抓包与HTTP协议【网络通信编程】

    目录 一.HTTP协议 1.HTTP是什么? 2.HTTP协议如何使用TCP连接 3.HTTP请求报文结构 4.HTTP响应报文结构 5.HTTP中get和post的区别 6.HTTP1.1与1.0的 ...

  2. Wireshark网络抓包分析

    目录 1. 以太网协议头(数据链路层) -- 14byte 2. IP数据头(网络层) -- 20byte 3.  ARP抓包分析 3.1 ARP介绍 3.2 报文格式 3.3 抓包分析 3.3.1 ...

  3. xmpp协议抓包_开源网络抓包与分析框架学习-Packetbeat篇

    开源简介 packbeat是一个开源的实时网络抓包与分析框架,内置了很多常见的协议捕获及解析,如HTTP.MySQL.Redis等.在实际使用中,通常和Elasticsearch以及kibana联合使 ...

  4. iOS系统网络抓包方法

    转自:http://www.cnblogs.com/ydhliphonedev/archive/2011/10/27/2226935.html 在进行iOS开发过程中,经常会遇到各种各样的网络访问问题 ...

  5. 基于网络抓包实现kubernetes中微服务的应用级监控

    微服务是什么? 此话题不是本文重点,如你还不知道.请谷歌一波,会有遍地的解释.引用下图说明下微服务可能呈现的形态: 微服务监控的挑战 监控的目的是为了让集群中所有的服务组件,不管是HTTP服务,数据库 ...

  6. Microsoft Message Analyzer (微软消息分析器,“网络抓包工具 - Network Monitor”的替代品)官方正式版现已发布...

    来自官方日志的喜悦 被誉为全新开始的消息分析器时代,由MMA为您开启,博客原文写的很激动,大家可以点击这里浏览:http://blogs.technet.com/b/messageanalyzer/a ...

  7. Wireshark网络抓包实践

    1. 网络抓包相关阅读 抓包工具Wireshark基本介绍和学习TCP三次握手 Wireshark网络抓包实践 HTTP代理神器Fidder 2. Wireshark 世界上最流行的网络协议分析器,抓 ...

  8. 网络抓包工具wireshark and tcpdump 及其实现基于的libpcap

    最近无意中看到博客园中一篇介绍wireshark的文章,写得不错,它简单清楚介绍了wireshark的使用 简介 wireshark以前叫做Ethereal, 在大学时候的网络课程中就常看到它,它是世 ...

  9. 计算机网络抓包参考文献,计算机网络课程设计二(网络抓包与分析)

    <计算机网络课程设计二(网络抓包与分析)>由会员分享,可在线阅读,更多相关<计算机网络课程设计二(网络抓包与分析)(9页珍藏版)>请在人人文库网上搜索. 1.课程设计课程名称: ...

最新文章

  1. Java接地气日常编码技巧
  2. Implicit declaration of function 'NSFileTypeForHFSTypeCode' is invalid in C99
  3. 大大刷新记录!Swin Transformer v2.0 来了,30亿参数!
  4. 浙大版python_浙大版《Python 程序设计》题目集1-5
  5. I/O: 阻塞非阻塞I/O 同步异步I/O
  6. 4亿线上用户性能保证:Linked Redliner架构解密
  7. Linux 命令之 scp 文件传输
  8. java-线程同步问题
  9. 视频教程-R语言数据挖掘-模型评估篇-大数据
  10. AD的PCB文件无法保存问题
  11. 【JAVA】Socket文件上传遇到的问题!~
  12. php开发之文件指针,文件锁定
  13. 最新公司级 OKRs 案例
  14. 【java基础领域】高内聚、低耦合理解
  15. python怎么编写对称图案_python – 无论matplotlib中的箭头角度如何,都使箭头形状对称...
  16. 请教高手(关于视频语音聊天室)
  17. js 日期判断是否是今天
  18. STM32系统滴答_及不可不知的延时技巧 - (上)
  19. 计算机机考试卷分析,在线考试系统 ——试卷分析
  20. 石化人员定位方案:uBeacon+ibeacon融合定位特点

热门文章

  1. 用户研究专题:定量研究
  2. 微信开发——人脸识别 车牌识别 语言识别
  3. 【OS笔记 14】进程同步篇——基本概念
  4. 攻防世界misc新手之give_you_flag
  5. Federated Learning of Multi-branch Networks from Periodically Shifting Distributions
  6. 文件流FileStream
  7. 将文件流(InputStream)写入文件 将上传文件MultipartFile写到文件
  8. 激光测距误差对激光脚点定位的影响
  9. 该如何旋转EDIUS 8中的图片
  10. 空间计量实践操作-MATLAB代码①