-
2021-09-18 11:25:33
1.jpcap抓包
https://github.com/kumqu/java-jpcap
2.TCP逻辑分析
3.TCP数据包解析
3.1 数据包解析源码
import com.alibaba.fastjson.JSON; import com.sun.jmx.remote.internal.ArrayQueue; import com.sun.xml.internal.messaging.saaj.util.ByteInputStream; import jpcap.packet.TCPPacket; import sun.misc.FloatingDecimal; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.nio.ByteBuffer; import java.util.*; /** * @description: * @date: 2021-09-16 17:38 */ class Data{
更多相关内容 -
实验12 Wireshark 工具的使用与TCP数据包分析.doc
2019-12-10 09:12:13cisco 实验12 Wireshark 工具的使用与TCP数据包分析.doc -
TCP数据包分析
2019-05-24 10:35:49通信过程中,每层协议都要加上一个数据首部(header),称为封装...不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)。数据封...转载:http://www.cnblogs.com/feitian629/archive/2012/11/16/2774065.html
通信过程中,每层协议都要加上一个数据首部(header),称为封装(Encapsulation),如下图所示
不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)。数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,最后将应用层数据交给应用程序处理。
3、集线器(Hub)是工作在物理层的网络设备,用于双绞线的连接和信号中继(将已衰减的信号再次放大使之传得更远)。
交换机是工作在链路层的网络设备,可以在不同的链路层网络之间转发数据帧(比如十兆以太网和百兆以太网之间、以太网和令牌环网之间),由于不同链路层的帧格式不同,交换机要将进来的数据包拆掉链路层首部重新封装之后再转发。
路由器是工作在第三层的网络设备,同时兼有交换机的功能,可以在不同的链路层接口之间转发数据包,因此路由器需要将进来的数据包拆掉网络层和链路层两层首部并重新封装。
5、 数据传输经过的各层协议过程如下
以太网驱动程序首先根据以太网首部中的“上层协议”字段确定该数据帧的有效载荷(payload,指除去协议首部之外实际传输的数据)是IP、ARP 还是RARP 协议的数据报,然后交给相应的协议处理。假如是IP 数据报,IP 协议再根据IP 首部中的“上层协议”字段确定该数据报的有效载荷是TCP、UDP、ICMP 还是IGMP,然后交给相应的协议处理。假如是TCP 段或UDP段,TCP 或UDP 协议再根据TCP 首部或UDP 首部的“端口号”字段确定应该将应用层数据交给哪个用户进程。IP 地址是标识网络中不同主机的地址,而端口号就是同一台主机上标识不同进程的地址,IP 地址和端口号合起来标识网络中唯一的进程。
6、以太网帧格式
(1)其中的源地址和目的地址是指网卡的硬件地址(也叫MAC 地址),长度是48 位,是在网卡出厂时固化的。
(2)注意网卡芯片(例如DM9000A)收到的数据就是如上所示的一长串数据;其中包括以太网帧头、IP报报头、传输层协议段头、应用层所需数据。
(3)以太网帧中的数据长度规定最小46 字节,最大1500 字节,ARP 和RARP 数据包的长度不够46 字节,要在后面补填充位。最大值1500 称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU,如果一个数据包从以太网路由到拨号链路上,数据包度大于拨号链路的MTU了,则需要对数据包进行分片fragmentation)。ifconfig 命令的输出中也有“MTU:1500”。注意,MTU 个概念指数据帧中有效载荷的最大长度,不包括帧首部的长度。
7、IP数据报格式
IP 数据报的首部长度和数据长度都是可变长的,但总是4 字节的整数倍。对于IPv4,4 位版本字段是4。4 位首部长度的数值是以4 字节为单位的,最小值为5,也就是说首部长度最小是4x5=20 字节,也就是不带任何选项的IP 首部,4 位能表示的最大值是15,也就是说首部长度最大是60 字节。8 位TOS 字段有3 个位用来指定IP 数据报的优先级(目前已经废弃不用),还有4 个位表示可选的服务类型(最小延迟、最大呑吐量、最大可靠性、最小成本),还有一个位总是0。总长度是整个数据报(包括IP 首部和IP 层payload)的字节数。每传一个IP 数据报,16 位的标识加1,可用于分片和重新组装数据报。3 位标志和13 位片偏移用于分片。TTL(Time to live)是这样用的:源主机为数据包设定一个生存时间,比如64,每过一个路由器就把该值减1,如果减到0 就表示路由已经太长了仍然找不到目的主机的网络,就丢弃该包,因此这个生存时间的单位不是秒,而是跳(hop)。协议字段指示上层协议是TCP、UDP、ICMP 还是IGMP。然后是校验和,只校验IP 首部,数据的校验由更高层协议负责。IPv4的IP 地址长度为32 位。
9、TCP段格式
(1)序号:指出段中的数据部分在发送方数据流中的位置。
确认号:指出接收方希望收到对方下次发送的数据的第一个字节的序号。
TCP段首部的定长部分为20个字节,即5个单位的长度。
URG位:紧急标志,和紧急指针配合使用,当其为1时表示,此报文要尽快传送。
ACK位:确认标志,和确认号字段配合使用,当ACK位置1时,确认号字段有效。
PSH位:为推送标志,置1时,发送方将立即发送缓冲区中的数据。
RST位:复位标志,置1时,表明有严重差错,必须释放连接。
SYN位: 同步标志,置1时,表示请求建立连接。
FIN位:终止标志,置1时,表明数据已经发送完,请求释放连接。
窗口大小:32bit,用于向对方通告当前本机的接受缓冲区的大小。
校验和字段长度:16bit,校验范围包括段首部、数据以及伪首部。
(2)TCP数据传输过程
(3)TCP连接的建立
建立连接的过程:
【1】. 客户端发出段1,SYN 位表示连接请求。序号是1000,这个序号在网络通讯中用作临时的地址,每发一个数据字节,这个序号要加1,这样在接收端可以根据序号排出数据包的正确顺序,也可以发现丢包的情况,另外,规定SYN 位和FIN 位也要占一个序号,这次虽然没发数据,但是由于发了SYN 位,因此下次再发送应该用序号1001。mss表示最大段尺寸,如果一个段太大,封装成帧后超过了链路层的最大帧长度,就必须在IP 层分片,为了避免这种情况,客户端声明自己的最大段尺寸,建议服务器端发来的段不要超过这个长度。
【2】 服务器发出段2,也带有SYN 位,同时置ACK 位表示确认,确认序号是1001,表示“我接收到序号1000 及其以前所有的段,请你下次发送序号为1001 的段”,也就是应答了客户端的连接请求,同时也给客户端发出一个连接请求,同时声明最大尺寸为1024。
【3】 客户端发出段3,对服务器的连接请求进行应答,确认序号是8001。
在这个过程中,客户端和服务器分别给对方发了连接请求,也应答了对方的连接请求,其中服务器的请求和应答在一个段中发出,因此一共有三个段用于建立连接,称为'''三方握手(three-way-handshake)'''。在建立连接的同时,双方协商了一些信息,例如双方发送序号的初始值、最大段尺寸等。
(4)TCP数据传输过程
【1】 客户端发出段4,包含从序号1001 开始的20 个字节数据。
【2】 服务器发出段5,确认序号为1021,对序号为1001-1020 的数据表示确认收到,同时请求发送序号1021 开始的数据,服务器在应答的同时也向客户端发送从序号8001 开始的10 个字节数据,这称为piggyback。
【3】 客户端发出段6,对服务器发来的序号为8001-8010 的数据表示确认收到,请求发送序号8011 开始的数据。
在数据传输过程中,ACK 和确认序号是非常重要的,应用程序交给TCP 协议发送的数据会暂存在TCP 层的发送缓冲区中,发出数据包给对方之后,只有收到对方应答的ACK 段才知道该数据包确实发到了对方,可以从发送缓冲区中释放掉了,如果因为网络故障丢失了数据包或者丢失了对方发回的ACK 段,经过等待超时后TCP 协议自动将发送缓冲区中的数据包重发。
(5)TCP连接的关闭
【1】 客户端发出段7,FIN 位表示关闭连接的请求。
【2】 服务器发出段8,应答客户端的关闭连接请求。
【3】 服务器发出段9,其中也包含FIN 位,向客户端发送关闭连接请求。
【4】 客户端发出段10,应答服务器的关闭连接请求。
建立连接的过程是三方握手,而关闭连接通常需要4 个段(四次握手),服务器的应答和关闭连接请求通常不合并在一个段中,因为有连接半关闭的情况,这种情况下客户端关闭连接之后就不能再发送数据给服务器了,但是服务器还可以发送数据给客户端,直到服务器也关闭连接为止,稍后会看到这样的例子。
-
TCP/IP——TCP数据包分析
2021-05-18 17:07:02一.实验目的 学习和掌握TCP协议的应用和报文格式 二.实验拓扑 三....GNS3和Wireshark抓包分析软件 四.TCP协议的封装格式 ...6.分析TCP三次握手数据包 1)第一次握手数据包 2)第二次握手数据包 3)第三次握手一.实验目的
学习和掌握TCP协议的应用和报文格式
二.实验拓扑
三.实验工具
GNS3和Wireshark抓包分析软件
四.TCP协议的封装格式
五.TCP三次握手实验步骤
1.按照拓扑图,搭建实验环境
2.配置接口IP
1)配置IP地址
PC:
SERVER:
3.在SERVER上创建一个用户,用于远程登录
4.开启抓包工具抓取PC的F0/0端口的流量
5.在PC上telnet 12.1.1.2
6.分析TCP三次握手数据包
1)第一次握手数据包
2)第二次握手数据包
3)第三次握手数据包
7.还原TCP三次握手数据包“序列号”字段的值
原始序列号的三次握手数据包
1)第一次握手数据包
2)第二次握手数据包
3)第三次握手数据包
六. TCP四次挥手实验步骤
1.开启抓包工具抓取PC的F0/0端口的流量
2. 在PC上telnet 12.1.1.2,并输入用户名和密码,登录SERVER后,再退出。
3.分析TCP四次挥手数据包
1)第1次挥手数据包
2)第2次挥手数据包
3)第3次挥手数据包
4)第4次挥手数据包
七. TCP连接建立超时重传实验步骤
1.SYN重传原理
2.在GNS3中,将SERVER暂停,如下图所示
将SERVER暂停即右键点击SERVER,点击“Suspend”
3.开启抓包工具抓取PC的F0/0端口流量,在PC上Telnet 12.1.1.2
4.分析SYN重传
//重传4次
5.SYN/ACK重传原理
6.在PC 上写一个ACL语句禁止ACK位置1的TCP数据包进入PC,并在PC的f0/0端口入方向调用,同时禁止PC向SERVER发送ICMP Unreachable messages 报文(做这步之前要右键点击SERVER,点击“Start”)
7.开启抓包工具抓取PC的F0/0端口流量,在PC上Telnet 12.1.1.2
8.分析SYN/ACK重传数据包
八. TCP连接关闭超时重传实验步骤
1.FIN超时重传原理
2.将PC上的ACL删除,并在SERVER上,配置ACL禁止FIN位置1的TCP数据包进入SERVER,并在SERVER的f0/0端口入方向调用,同时禁止SERVER向PC发送ICMP Unreachable messages 报文
//禁止SERVER向PC发送ICMP Unreachable messages 报文
3.开启抓包工具抓取PC的F0/0端口流量,在PC上Telnet 12.1.1.2,输入用户名和密码登录成功后,再退出
4.分析FIN重传数据包
-
tcp数据包分析.doc编程资料
2022-04-26 11:02:19tcp数据包分析.doc -
TCP数据包分析 TCP数据包分析 TCP数据包分析
2011-04-13 22:17:15自己整理的 TCP IP 数据包分析 对于初学以太网相关协议有一定帮助 TCP数据包分析 TCP数据包分析 -
实验12Wireshark工具的使用与TCP数据包分析.rar
2022-02-22 11:28:00实验12Wireshark工具的使用与TCP数据包分析.rar -
实验12Wireshark工具的使用与TCP数据包分析.pdf
2021-11-29 08:37:41实验12Wireshark工具的使用与TCP数据包分析.pdf -
云安全产品配置与应用 配置案例 Wireshark 工具的使用与TCP数据包分析.doc
2020-10-18 18:13:36Wireshark 工具的使用与TCP数据包分析(SEC-W07-007.1) Wireshark前称Ethereal是一个网络封包分析软件网络封包分析软件的功能是捕捉网络数据包并尽可能显示出最为详细的数据包内容在过去网络数据包分析软件或者非常... -
Tcp数据包详细解析
2011-02-22 09:51:51这是我利用网络抓包工具抓取数据以后,然后按照TCP协议,对照把数据解析出来的过程,对照这个文档很容易就能让你了解TCP协议包的组成。 -
wireshark抓包分析TCP数据包
2020-06-24 18:23:181、直接从TCP的三次握手开始说起 三次握手就是客户与服务器建立连接的过程 客户向服务器发送SYN(SEQ=x)报文,然后就会进入SYN_SEND状态 服务器收到SYN报文之后,回应一个SYN(SEQ=y)ACK(ACK=x+1)报文,然后...1、直接从TCP的三次握手开始说起
三次握手就是客户与服务器建立连接的过程
- 客户向服务器发送SYN(SEQ=x)报文,然后就会进入SYN_SEND状态
- 服务器收到SYN报文之后,回应一个SYN(SEQ=y)ACK(ACK=x+1)报文,然后就会进入SYN_RECV状态
- 客户收到服务器的SYN报文,回应一个ACK(ACK=y+1)报文,然后就会进入Established状态
图片来自百度百科
举例时间到!我们把客户端比作男生,服务器比作女生
第一次握手就像是男生对女生的告白:我喜欢你我们在一起吧。(之后,男孩就要等待女孩的回复,因为要确定女孩听到他说的话)
第二次握手则是女生的回应:好呀好呀。(之后,女孩也要等待,因为要确定男孩听到她的答复)
第三次握手就是男生的回应:真好,我们去吃火锅吧~。(此时,两人都确定对方收到了消息,关系成功建立)
也就是客户端和服务器数据的传输
接下来,我们抓包分析一下三次握手建立的过程
第一次握手:我向服务器发送了SYN,并设置Seq=0(x),请求与服务器建立连接第二次握手:服务器向我回应了SYN,并设置Seq=0(y),ACK=1(x+1)
第三次握手:我收到服务器的SYN报文,回应一个ACK=1(y+1)
2、再接着说说四次挥手
四次挥手就是客户与服务器断开连接的过程
- 客户发送一个FIN,断开与服务器的连接
- 服务器收到FIN,回应一个ACK,确认序号为收到的序号加1
- 服务器关闭客户端的连接,并发送一个FIN
- 客户回发ACK确认,并将确认序号设置为收到序号加1
图片来自百度百科
又到了举例时间!我们同样把客户端比作男生,服务器比作女生
第一次挥手:随着时间的流逝,女生变了,于是男生给女生发了分手短信,然后等待女生的回复
第二次挥手:女生听到后,伤心欲绝,就告诉男生:分手就分手,我把你的东西收拾收拾都还给你。男生就知道了女生同意了分手,于是等待女生把东西收拾好交还给他
第三次挥手:女生把男生的东西都收拾好,给男生发了第二条短信让他来取
第四次挥手:男生收到后,在回复最后一条短信,我知道了,我现在去取。于是关系断了
也就是客户端和服务器的连接中断
接下来,抓包看一下四次挥手的过程
第一次挥手:我向服务器发送FIN,Seq=3092,Ack=183
第二次挥手:服务器回发了ACK,Seq=183,Ack=3093
第三次挥手:服务器发送FIN,Seq=183,Ack=3093
第四次挥手:我向服务器回复了ACK,Seq=3093,Ack=184
3、TCP报文段格式分析
话不多说,直接上图
wireshark抓包分析
源端口和目的端口:各占16位,这两个字段分别填入发送该报文段应用程序的源端口号和接收该报文段的应用程序的目的端口号
序列号:占32位,TCP连接中传送的数据流中的每一个字节都编上一个序号,序号字段的值则指的是本报文段所发送的数据的第一个字节的序号
确认号:占32位,表示期望收到对方下一个报文段的第一数据字节的序号。
数据偏移:占4位,又称首部长度。指出首部的长度,即数据离开报文段开始的偏移量。
保留:占6位,留待后用,目前置为0
标志:占6位,又称控制字段,各位都有特定意义
- 紧急URG,表示本报文数据的紧急程度,URG=1表示本报文具有高优先级
- 确认ACK,ACK=1时,确认号字段才有意义
- 推送PSH,PSH=1时,表示请求接收端TCP将本报文段立即送往其应用层
- 复位RST,RST=1时,表示TCP连接中出现了严重错误,必须释放传输连接,而后在重建
- 同步SYN,该位在连接建立时使用,起着序号同步的作用
- 终止FIN,用来释放一个链接
窗口:占16位,该字段用于流控制
校验和:占16位,该字段的校验范围是整个报文段(包括首部和数据)
紧急指针:占16位,当URG=1时有意义,指出紧急数据的末尾在报文段中的位置,使得接收端能知道紧急数据的字节数
选项与填充:最长可达40B
-
Hyo原创TCPIP数据包分析工具-TCP数据包.rar
2019-08-13 04:59:31Hyo原创TCPIP数据包分析工具-TCP数据包.rar 传输控制协议是最重要的协议之一。通过介绍TCP连接的建立过程(通常称作三阶段握手),进而展开讲述TCP连接的建立与终止的过程,并通过对实验数据编写程序分析截获的一... -
TCP_IP 数据包分析程序篇
2017-05-16 11:35:11TCP_IP 数据包分析程序篇,小高知宏 -
TCP数据包及连接建立过程分析
2011-05-31 19:37:42TCP数据包及连接建立过程分析,是一个实验报告。希望对大家有用 -
用Java实现对IP/TCP协议数据包的拦截和分析
2017-12-19 13:08:39用Java实现对IP/TCP协议数据包的拦截和分析,得出IP的详细信息。 -
GET产生一个TCP数据包,POST产生两个TCP数据包
2020-04-05 22:10:59火焰课堂专注于分布式架构、高并发解决方案、JVM性能优化、Linux高可用集群部署、底层源码分析的高端Java视频课程, 成为全网最火的Java视频学习平台。拥有完整的Java互联网高并发与分布式架构课程,帮助大家少走弯路... -
UDP/TCP数据包分析
2011-11-16 16:04:08本文旨在分析使用抓包工具抓取到的数据包。 (一)抓包工具 tcpdump:linux下的抓包利器 wireshark:带GUI的抓包工具,其前身是大名鼎鼎的Ethereal (二)抓包 这里只简述tcpdump的一般用法,详细资料可参考tcpdump... -
TCP抓包分析
2021-05-26 11:23:40这里写目录标题实验内容实验步骤环境配置设置账户密码打开FTP站点A访问BB进行抓包数据包分析TCP数据包分析连接建立数据传送连接释放 实验内容 学会安装使用自由软件SNORT 截获以太网数据包,并描述以太网数据包的各... -
TCP IP数据包分析程序篇
2018-10-25 11:14:49本书是“TCP/IP系列”之一。本书从计算机网络基础知识入手,介绍了数据包分析程序的安装方法、运行情况及编写过程。 -
Hyo原创TCPIP数据包分析工具-TCP_IP.rar
2019-08-13 04:59:20Hyo原创TCPIP数据包分析工具-TCP_IP.rar 传输控制协议是最重要的协议之一。通过介绍TCP连接的建立过程(通常称作三阶段握手),进而展开讲述TCP连接的建立与终止的过程,并通过对实验数据编写程序分析截获的一个... -
iOS App的tcp、udp数据包抓取与分析.pdf
2020-06-02 23:02:17在对app进行安全分析时,有时需要检查...前面文章已介绍过http、https数据包的捕获,该篇文章主要介绍捕获app的tcp、udp流量数据。我们将使用tcpdump捕获tcp、udp流量,再通过wireshark过滤、分析app的tcp、udp流量。 -
java tcp封装成数据包【相关词_ tcp数据包处理java】
2021-02-28 10:02:06数据序号32位,TCP为发送的每一个字节都编一个号码,这里存储当前数据包数据第一 包括 网络编程结构数据JavaTCPIP的信息,所有JAVA网络编程:TCP/IP数据包结构相关内Java实现以太网帧的封装_360问答600x312 - 74KB - PNG... -
tcp/udp数据包格式详解 抓包分析二进制数据代表的意思
2021-11-10 18:58:53tcp/udp网络数据包帧格式详解 -
wireshark分析TCP数据包
2017-09-09 22:05:16TCP/IP协议不清楚请回看TCP/IP协议理论在虚拟机运行ubuntu,通过windows下的cuteftp连接ubuntu,利用wireshark进行抓包分析。出现如下数据帧(注意wireshark如何过滤消息): 其中47,48,49分别是三次握手对应的帧... -
实验报告:用Ethereal捕获并分析TCP数据包.pdf
2021-11-02 05:20:48实验报告:用Ethereal捕获并分析TCP数据包.pdf -
实验4-TCP数据包及连接建立过程分析.pdf
2021-10-24 04:06:06实验4-TCP数据包及连接建立过程分析.pdf -
TCP数据包协议格式详解
2021-01-29 18:20:54出一个专栏把通信协议搞一下吧,万物互联的根本呀。 IP 版本4位:4(二进制0100)表示IPv4,6(二进制0110)表示IPv6 ... 查看往期专栏 TCP数据包协议格式详解 UDP数据包协议详解 TCP/UDP伪头部详解 COAP数据包协议格式详解 -
计算机网络实验5 - TCP数据包及连接建立过程分析
2021-08-11 14:38:49计算机网络实验5 - TCP数据包及连接建立过程分析 -
Wireshark 数据包分析实战详解 PDF版
2019-07-10 12:12:28本书共分3篇。第1篇介绍Wireshark的各项功能...第2篇介绍基于Wireshark对TCP/IP协议族中常用协议的详细分析,如ARP、IP、UDP、TCP、HTTP、HTTPS和FTP等;第3篇介绍借助Wireshark分析操作系统启动过程中的网络通信情况。