Java教程

网络抓包与HTTP协议

本文主要是介绍网络抓包与HTTP协议,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

网络抓包与HTTP协议

  • 一、TCP协议
    • 1. TCP简介
    • 2. TCP工作原理
  • 二、HTTP协议
    • 1. HTTP简介
    • 2. HTTP工作原理
  • 三、Wireshark
    • 1. 简介
    • 2. 工作流程
  • 四、网络抓包
  • 五、Fiddler查看返回数据
  • 六、总结
  • 七、参考

一、TCP协议

1. TCP简介

  传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。
  TCP旨在适应支持多网络应用的分层协议层次结构。 连接到不同但互连的计算机通信网络的主计算机中的成对进程之间依靠TCP提供可靠的通信服务。
  TCP假设它可以从较低级别的协议获得简单的,可能不可靠的数据报服务。 原则上,TCP应该能够在从硬线连接到分组交换或电路交换网络的各种通信系统之上操作。

2. TCP工作原理

  1. 一次完整的TCP通讯包括:建立连接、数据传输、关闭连接
    建立连接(三次握手):

    1. 客户端通过向服务器端发送一个SYN来建立一个主动打开,作为三路握手的一部分。
    2. 服务器端应当为一个合法的SYN回送一个SYN/ACK。
    3. 最后,客户端再发送一个ACK。这样就完成了三路握手,并进入了连接建立状态。

    数据传输:

    1. 发送数据端传输PSH数据包
    2. 接收数据端回复ACK数据包

    关闭连接(四次分手):

    1. 一端主动关闭连接。向另一端发送FIN包
    2. 接收到FIN包的另一端回应一个ACK数据包
    3. 另一端发送一个FIN包。
    4. 接收到FIN包的原发送方发送ACK对它进行确认。

在这里插入图片描述
2. TCP发送数据包过程:

  1. 应用程序write数据到发送缓冲区
  2. TCP根据MSS(Maxitum Segment Size)指对数据分段发送。

二、HTTP协议

1. HTTP简介

  1. HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网服务器传输超文本本地浏览器的传送协议
  2. HTTP是一个基于TCP/IP通信协议来传递数据

2. HTTP工作原理

  HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URLHTTP服务端即WEB服务器发送所有请求。

HTTP三点注意事项:

  • HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
  • HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。
  • HTTP是无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

HTTP协议通信流程:
在这里插入图片描述

三、Wireshark

1. 简介

Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是截取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。

2. 工作流程

  • 确定Wireshark的位置。如果没有一个正确的位置,启动Wireshark后会花费很长的时间捕获一些与自己无关的数据。
  • 选择捕获接口。一般都是选择连接到Internet网络的接口,这样才可以捕获到与网络相关的数据。否则,捕获到的其它数据对自己也没有任何帮助。
  • 使用捕获过滤器。通过设置捕获过滤器,可以避免产生过大的捕获文件。这样用户在分析数据时,也不会受其它数据干扰。而且,还可以为用户节约大量的时间。
  • 使用显示过滤器。通常使用捕获过滤器过滤后的数据,往往还是很复杂。为了使过滤的数据包再更细致,此时使用显示过滤器进行过滤。
  • 使用着色规则。通常使用显示过滤器过滤后的数据,都是有用的数据包。如果想更加突出的显示某个会话,可以使用着色规则高亮显示。
  • 构建图表。如果用户想要更明显的看出一个网络中数据的变化情况,使用图表的形式可以很方便的展现数据分布情况。
  • 重组数据。Wireshark的重组功能,可以重组一个会话中不同数据包的信息,或者是一个重组一个完整的图片或文件。由于传输的文件往往较大,所以信息分布在多个数据包中。为了能够查看到整个图片或文件,这时候就需要使用重组数据的方法来实现。

四、网络抓包

  1. 实验工具Wireshark
    在这里插入图片描述
    如果软件一直提示弹窗,使用管理员模式打开
  2. 接口选择:
    选择对应的网卡,右键,会出现Start Capture(开始捕获),点击即可进行捕获该网络信息,开始抓取网络包
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  3. 执行需要抓包的操作
  4. 过滤
    在这里插入图片描述
  5. 观察TCP的三次握手
    选取其中一条记录,来观察三次握手的过程,鼠标右键,点击追踪流里的tcp流
    在这里插入图片描述
    在这里插入图片描述
    • 选取第一条指令,查看TCP报文格式
      第一次握手,同步请求
      在这里插入图片描述
    • 选取第二条指令
      第二次握手,同步请求确认
      在这里插入图片描述
    • 第三条指令
      第三次握手,请求确认在这里插入图片描述

五、Fiddler查看返回数据

  1. tools->options
    在这里插入图片描述
  2. 勾选https项,同时请求权限,勾选同意
    在这里插入图片描述
    在这里插入图片描述
  3. 选取需要打开网站的信息
    在这里插入图片描述
    这时会发现捕获列表里就有这个网址,如果没有可以多刷新几次浏览器界面,然后点击go,有这个选项之后,选择这个它,再在接收数据端点击json格式,就可以看到了
    在这里插入图片描述
    在这里插入图片描述

六、总结

建立连接(三次握手):

  • 客户端通过向服务器端发送一个SYN来建立一个主动打开,作为三路握手的一部分。
  • 服务器端应当为一个合法的SYN回送一个SYN/ACK。
  • 最后,客户端再发送一个ACK。这样就完成了三路握手,并进入了连接建立状态。

七、参考

网络分析工具——WireShark的使用(超详细)
TCP协议实现原理
HTTP 简介
Fiddler教程

这篇关于网络抓包与HTTP协议的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!