一、TCP协议
1.1 简介
传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。
TCP旨在适应支持多网络应用的分层协议层次结构。 连接到不同但互连的计算机通信网络的主计算机中的成对进程之间依靠TCP提供可靠的通信服务。
TCP假设它可以从较低级别的协议获得简单的,可能不可靠的数据报服务。 原则上,TCP应该能够在从硬线连接到分组交换或电路交换网络的各种通信系统之上操作。
1.2 工作原理
一次完整的TCP通讯包括:建立连接、数据传输、关闭连接
建立连接(三次握手):
- 客户端通过向服务器端发送一个SYN来建立一个主动打开,作为三路握手的一部分。
- 服务器端应当为一个合法的SYN回送一个SYN/ACK。
- 最后,客户端再发送一个ACK。这样就完成了三路握手,并进入了连接建立状态。
数据传输:
- 发送数据端传输PSH数据包
- 接收数据端回复ACK数据包
关闭连接(四次分手):
- 一端主动关闭连接。向另一端发送FIN包。
- 接收到FIN包的另一端回应一个ACK数据包。
- 另一端发送一个FIN包。
- 接收到FIN包的原发送方发送ACK对它进行确认。
具体详情参考:TCP协议实现原理
二、HTTP协议
2.1 简介
HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网服务器传输超文本到本地浏览器的传送协议。
HTTP是一个基于TCP/IP通信协议来传递数据
2.2 工作原理
客户机与服务器建立连接后,浏览器可以向web服务器发送请求并显示收到的网页,当用户在浏览器地址栏中输入一个URL或点击一个超连接时,浏览器就向服务器发出了HTTP请求,请求方式的格式为:统一资源标识符、协议版本号,后边是MIME(Multipurpose Internet Mail Extensions)信息包括请求修饰符、客户机信息和可能的内容。
该请求被送往由URL指定的WEB服务器,WEB服务器接收到请求后,进行相应反映,其格式为:一个状态行包括信息的协议版本号、一个成功或错误的代码,后边服务器信息、实体信息和可能的内容。即以HTTP规定的格式送回所要求的文件或其他相关信息,再由用户计算机上的浏览器负责解释和显示。
具体详情参考:HTTP协议工作原理及其特点
三、wireshark进行抓包
3.1 wireshark简介
Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是截取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。
3.2 抓包
- 打开wireshark软件
- 查看自己电脑网络状态
- 根据自己的网络状态选择接口
- 右键接口,点击Start Capture(开始捕获),开始抓取网络包
封包列表:
封包列表的面板中显示,编号,时间戳,源地址,目标地址,协议,长度,以及 封包信息。
封包信息详情
Frame: 物理层的数据帧概况
(2) Ethernet II: 数据链路层以太网帧头部信息
(3) Internet Protocol Version 4: 互联网层 IP 包头部信息
(4) Transmission Control Protocol: 传输层 T 的数据段头部信息,此处是 TCP
(5) Hypertext Transfer Protocol: 应用层的信息,此处是 HTTP 协议
- 过滤
我们使用Wireshark时,毫无意外会得到大量的冗余信息,为了找到我们需要的部分,信息过滤是十分有必要的。该工具提供了两种过滤器,一种是显示过滤器,在该页面菜单栏下方有一个显示过滤器,当我们设置条件时,封包列表中就会选中符合条件的封包并显示出来
右键点击需要的信息,设置为条件(这里设置的是ip.src == 192.168.0.102)
6. 观察TCP三次握手
选取其中一条TCP,来观察三次握手的过程,鼠标右键,点击追踪流里的tcp流
得到如下结果
客户端发送syn报文,并置发送序号为X,服务端发送syn+ack报文,并置发送序号为Y,再确认序号为X+1,客户端发送ack报文,并置发送序号为Z,再确认序号为Y+1。
1. 选取第一条指令,查看TCP报文格式
客户端发送了一个TCP,标志位为SYN,序列号为0,代表客户端请求建立连接。
2. 选取第二条指令
服务器发回确认包,标志位为SYN,ACK。将确认序号设置为酷虎的ISN+1,即0+1=1。
3. 选取第三条指令
客户端再次发送确认包,SYN标志位为0,ACK标志位为1,并且把服务器发来的ACK的序号字段+1,放在确认字段中发送给对方,并且在数据段写ISN+1。
四、总结
一次完整的TCP通讯包括:建立连接、数据传输、关闭连接。TCP通过三次握手建立连接,第四次分手关闭连接。