tcp抓包分析
tcpdump抓包分析详解

tcpdump抓包分析详解[root@linux ~]# tcpdump [-nn] [-i 接口] [-w 储存档名] [-c 次数] [-Ae][-qX] [-r 档案] [所欲撷取的数据内容]参数:-nn:直接以IP 及port number 显示,而非主机名与服务名称-i :后面接要『监听』的网络接口,例如eth0, lo, ppp0 等等的界面;-w :如果你要将监听所得的封包数据储存下来,用这个参数就对了!后面接档名-c :监听的封包数,如果没有这个参数,tcpdump 会持续不断的监听,直到使用者输入[ctrl]-c 为止。
-A :封包的内容以ASCII 显示,通常用来捉取WWW 的网页封包资料。
-e :使用资料连接层(OSI 第二层) 的MAC 封包数据来显示;-q :仅列出较为简短的封包信息,每一行的内容比较精简-X :可以列出十六进制(hex) 以及ASCII 的封包内容,对于监听封包内容很有用-r :从后面接的档案将封包数据读出来。
那个『档案』是已经存在的档案,并且这个『档案』是由-w 所制作出来的。
所欲撷取的数据内容:我们可以专门针对某些通讯协议或者是IP 来源进行封包撷取,那就可以简化输出的结果,并取得最有用的信息。
常见的表示方法有:'host foo', 'host 127.0.0.1' :针对单部主机来进行封包撷取'net 192.168' :针对某个网域来进行封包的撷取;'src host 127.0.0.1' 'dst net 192.168':同时加上来源(src)或目标(dst)限制'tcp port 21':还可以针对通讯协议侦测,如tcp, udp, arp, ether 等还可以利用and 与or 来进行封包数据的整合显示呢!范例一:以IP 与port number 捉下eth0 这个网络卡上的封包,持续 3 秒[root@linux ~]# tcpdump -i eth0 -nntcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes01:33:40.41 IP 192.168.1.100.22 > 192.168.1.11.1190: P 116:232(116) ack 1 win 964801:33:40.41 IP 192.168.1.100.22 > 192.168.1.11.1190: P 232:364(132) ack 1 win 9648<==按下[ctrl]-c 之后结束6680 packets captured <==捉下来的封包数量14250 packets received by filter <==由过滤所得的总封包数量7512 packets dropped by kernel <==被核心所丢弃的封包如果你是第一次看tcpdump 的man page 时,肯定一个头两个大,因为tcpdump 几乎都是分析封包的表头数据,用户如果没有简易的网络封包基础,要看懂粉难吶!所以,至少您得要回到网络基础里面去将TCP 封包的表头数据理解理解才好啊!^_^!至于那个范例一所产生的输出范例中,我们可以约略区分为数个字段,我们以范例一当中那个特殊字体行来说明一下:01:33:40.41:这个是此封包被撷取的时间,『时:分:秒』的单位;IP:透过的通讯协议是IP ;192.168.1.100.22 > :传送端是192.168.1.100 这个IP,而传送的port number 为22,您必须要了解的是,那个大于(>) 的符号指的是封包的传输方向喔!192.168.1.11.1190:接收端的IP 是192.168.1.11,且该主机开启port 1190 来接收;P 116:232(116):这个封包带有PUSH 的数据传输标志,且传输的数据为整体数据的116~232 byte,所以这个封包带有116 bytes 的数据量;ack 1 win 9648:ACK与Window size 的相关资料。
TCP抓包

网络抓包分析硕4033班晋毓泽3114033007打开wireshark, 打开浏览器输入一个网址。
例如:在wireshark中设置Http过滤,然后选中GET /baidu HTTP/1.1的那条记录,右键点击“Follow TCP Stream”;1.TCP协议分析下面我们来对TCP协议三次握手进行简单的分析。
进行了上面的操作后,会得到如下图:图中可以看到wireshark截获了三次握手的三个数据包。
第四个才是HTTP的数据包,这说明HTTP确实是使用TCP建立起来的。
(1)第一次握手的数据包客户端发送一个TCP,标志位为SYN,序列号为0,代表客户端请求建立连接。
如下图:(2)第二次握手的数据包服务器发回确认包,标志位为SYN,ACK.将确认序号(Acknowledgment Number)设置为客户的ISN加1。
即0+1=1,如下图:(3)第三次握手的数据包:客户端再次发送确认包(ACK)SYN标志位为0,ACK标志位为1,并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方。
并且在数据段放写ISN的+1,如下图:2.HTTP包分析:(1)首先获得HTTP协议的相关信息。
Wireshark抓获HTTP包,用的是get方法。
Request Method: GETRequest URI: /v39_pf /c.gif ? p=(2)获取HTTP协议的传输内容这个http协议除有gif图片内容信息外,还包含了诸如:服务器;获取报文日期;报文类型;报文长度;最后更新日期;连接类型;接收范围;等必要的报文信息。
tcp握手的过程及抓包分析原理详细版

TCP 握手的过程及抓包分析原理TCP 连接建立在TCP/IP 协议中,TCP 协议提供可靠的连接服务,采用三次握手建立一个连接。
服务器必须准备好接受外来的连接。
这通过调用socket 、 bind 和listen 函数来完成,称为被动打开(passive open)。
第一次握手:客户端通过调用connect 进行主动打开(active open)。
这引起客户TCP 发送一个SYN (表示同步)分节(SYN=J ),它告诉服务器客户将在连接中发送到数据的初始序列号。
并进入SYN_SEND 状态,等待服务器的确认。
第二次握手:服务器必须确认客户的SYN ,同时自己也得发送一个SYN 分节,它含有服务器将在同一连接中发送的数据的初始序列号。
服务器以单个字节向客户发送SYN 和对客户SYN 的ACK (表示确认),此时服务器进入SYN_RECV 状态。
第三次握手:客户收到服务器的SYN+ACK 。
向服务器发送确认分节,此分节发送完毕,客户服务器进入ESTABLISHED 状态,完成三次握手。
图1:TCP 握手建立连接客户端的初始序列号为J ,而服务器的初始序列号为K 。
在ACK 里的确认号为发送这个ACK 的一端所期待的下一个序列号。
因为SYN 只占一个字节的序列号空间,所以每一个SYN 的ACK 中的确认号都是相应的初始序列号加1.类似地,每一个FIN (表示结束)的ACK 中的确认号为FIN 的序列号加1.客户connet (阻塞connet 返回socket,bind,listen (被动打开) accept (阻塞) accdept 返回read (阻塞)。
Linux命令高级技巧通过tcpdump命令进行网络抓包和分析

Linux命令高级技巧通过tcpdump命令进行网络抓包和分析Linux是一款广泛应用于服务器和嵌入式设备的操作系统,具有强大的功能和灵活性。
与其他操作系统相比,Linux提供了丰富的命令行工具,其中之一就是tcpdump命令。
tcpdump是一款用于抓取网络数据包并进行分析的强大工具,它可以帮助用户深入了解网络通信,解决网络故障和排查安全问题。
在本文中,我们将介绍如何使用tcpdump 命令进行网络抓包和分析。
一、什么是网络抓包?网络抓包是指在计算机网络中捕获和保存网络数据包的过程。
网络数据包是信息在网络中传输的基本单位,它包含了源IP地址、目标IP 地址、协议类型、端口号等重要信息。
通过抓包,我们可以观察和分析网络通信的行为,帮助我们了解网络设备之间的交互过程,诊断网络故障,以及排查安全问题。
二、tcpdump命令的基本用法tcpdump命令是一款基于命令行的工具,用于捕获和分析网络数据包。
下面是tcpdump命令的基本用法:```tcpdump [选项] [表达式]```其中,选项用于配置tcpdump的行为,表达式用于过滤需要捕获的数据包。
下面是一些常用的选项:- `-i`:指定要监听的网络接口。
- `-n`:禁用主机名解析,显示ip地址而非域名。
- `-X`:以16进制和ASCII码显示数据包内容。
- `-c`:指定捕获数据包的数量。
- `-s`:指定捕获数据包的最大长度。
例如,我们可以使用以下命令来捕获网络接口eth0上的前10个数据包,并以16进制和ASCII码显示数据包内容:```tcpdump -i eth0 -c 10 -X```三、tcpdump命令的高级用法除了基本用法外,tcpdump命令还提供了一些高级的用法,帮助用户更加灵活和精确地进行网络抓包和分析。
1. 根据协议过滤数据包tcpdump支持根据不同协议类型进行数据包的过滤。
常见的协议包括TCP、UDP、ICMP等。
TCP-IP协议抓包分析实验报告

TCP协议分析实验____院系:专业:一.实验目的学会使用Sniffer抓取ftp的数据报,截获ftp账号与密码,并分析TCP 头的结构、分析TCP的三次"握手"和四次"挥手"的过程,熟悉TCP协议工作方式.二.实验〔软硬件以与网络〕环境利用VMware虚拟机建立网络环境,并用Serv-U FTP Server在计算机上建立FTP服务器,用虚拟机进行登录.三.实验工具sniffer嗅探器,VMware虚拟机,Serv-U FTP Server.四.实验基本配置Micrsoft Windows XP操作系统五.实验步骤1.建立网络环境.用Serv-U FTP Server在计算机上建立一台FTP服务器,设置IP地址为:192.168.0.10,并在其上安装sniffer嗅探器.再并将虚拟机作为一台FTP客户端,设置IP地址为:192.168.0.12.设置完成后使用ping命令看是否连通.2.登录FTP运行sniffer嗅探器,并在虚拟机的"运行"中输入,点确定后出现如下图的登录窗口:在登录窗口中输入:用户名〔hello〕,密码〔123456〕[在Serv-U FTPServer中已设定],就登录FTP服务器了.再输入"bye"退出FTP3.使用sniffer嗅探器抓包再sniffer软件界面点击"stop and display" ,选择"Decode"选项,完成FTP命令操作过程数据包的捕获.六.实验结果与分析1.在sniffer嗅探器软件上点击Objects可看到下图:再点击"DECODE<反解码>"按钮进行数据包再分析,我们一个一个的分析数据包,会得到登录用户名〔hello〕和密码〔123456〕.如下图:2. TCP协议分析三次握手:发报文头——接受报文头回复——再发报文〔握手〕开始正式通信.第一次握手:建立连接时,客户端发送syn包<syn=j>到服务器,并进入SYN_SEND 状态,等待服务器确认;第二次握手:服务器收到syn包,必须确认客户的SYN〔ack=j+1〕,同时自己也发送一个SYN包〔syn=k〕,即SYN+ACK包,此时服务器进入SYN_RECV状态;第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK<ack=k+1>,此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手.完成三次握手,客户端与服务器开始传送数据.四次挥手:由于TCP连接是全双工的,因此每个方向都必须单独进行关闭.这个原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接.收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据.首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭.〔1〕虚拟机发送一个FIN,用来关闭用户到服务器的数据传送.〔2〕服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1.和SYN 一样,一个FIN将占用一个序号.〔3〕服务器关闭与虚拟机的连接,发送一个FIN给虚拟机.〔4〕虚拟机发回ACK报文确认,并将确认序号设置为收到序号加1.。
网络层数据包抓包分析

网络层数据包抓包分析引言:在计算机网络中,网络层是由网络协议和路由器实现的一种协议层,用于在不同的网络之间进行数据传输。
网络层数据包抓包分析是一种技术,通过捕获网络流量来分析和诊断网络通信问题。
本文将介绍网络层数据包抓包分析的背景、工具和实际应用,帮助读者理解并运用该技术。
一、背景在计算机网络中,网络层是实现数据传输的核心部分。
网络层负责将传输层的数据分组打包成数据包,并根据网络地址将它们发送到目标主机或网络。
网络层数据包抓包分析可以帮助我们深入了解网络中的数据传输过程,以及定位和解决网络通信故障。
二、工具1. WiresharkWireshark是一款开源的网络协议分析工具,可以捕获和解析网络数据包。
它支持多种协议,包括Ethernet、IP、TCP和UDP等。
Wireshark可以在各种操作系统上运行,并且提供了丰富的过滤和统计功能,便于对网络流量进行分析和排查问题。
2. tcpdumptcpdump是一个命令行工具,用来捕获和分析网络数据包。
它可以在多种操作系统上使用,并且支持各种网络协议。
tcpdump可以通过命令行参数进行不同层次、不同协议的过滤,并将捕获的数据包保存到文件中,方便后续分析。
3. WinPcapWinPcap是一个Windows平台上的网络抓包库,它提供了一个对网络数据包进行捕获和处理的接口。
许多网络抓包工具都基于WinPcap开发,包括Wireshark和tcpdump等。
通过使用WinPcap,可以在Windows系统上进行网络数据包的抓包分析工作。
三、实际应用1. 诊断网络问题网络层数据包抓包分析可以帮助诊断网络通信问题,如网络延迟、丢包、带宽不足等。
通过捕获网络数据包,我们可以分析数据包的发送和接收时间、路径以及传输速率等信息,从而确定问题的原因,并采取相应的措施进行修复。
2. 监控网络流量网络层数据包抓包分析还可以用于监控网络流量,了解网络中不同主机之间的通信情况。
传输层数据包抓包分析

传输层数据包抓包分析传输层是计算机网络中的一个重要层次,负责实现可靠的数据传输。
在进行传输层数据包的抓包分析时,我们可以从以下几个方面来分析:1.数据包的协议首先,我们要确定抓到的数据包是属于哪个传输层协议的。
在互联网中,最常用的传输层协议是传输控制协议(TCP)和用户数据报协议(UDP)。
通过查看数据包的头部信息,我们可以确定数据包所使用的协议。
如果数据包的目的端口号是80或443,那么该数据包很可能是使用TCP协议进行HTTP或HTTPS通信的;而如果数据包的目的端口号是53,那么该数据包很可能是使用UDP协议进行域名解析的。
2.数据包的源和目的地址在抓包分析中,我们也要关注数据包的源地址和目的地址。
通过分析源地址和目的地址,我们可以了解到数据包的流向和通信的源和目的地。
同时,我们还可以通过比较源地址和目的地址的变化来追踪网络路径的变动。
3.数据包的序号和确认号对于TCP协议的数据包,我们还需要关注数据包的序号和确认号。
序号表示本次传输的数据包的序列号,而确认号表示已经成功接收的数据包的序号。
通过比较数据包的序号和确认号,我们可以了解到当前传输的数据包是否有丢失或重复。
4.数据包的负载最后,我们还需要关注数据包的负载。
数据包的负载是指传输层以上的数据部分,可以是应用层的数据、应用层头部信息或其他额外信息。
通过查看数据包的负载,我们可以了解到具体的应用层协议和数据内容。
抓包分析可以通过网络抓包工具来实现,比如Wireshark等。
在进行抓包分析时,可以按照以下步骤进行:1.配置网络抓包工具,选择合适的网卡和过滤规则。
2.开始抓包,进行数据传输操作。
3.停止抓包,保存抓到的数据包。
4.打开抓包文件,查看数据包的协议、源地址、目的地址、序号和确认号等信息。
5.对相关数据包进行分析,比如分析请求和响应的关系、数据包的流向和路径变动等。
6.根据具体需要,可以进一步分析数据包的负载,获取更详细的信息。
通过传输层数据包的抓包分析,我们可以了解到网络传输的细节,从而帮助我们定位和解决网络问题,提高网络的性能和可靠性。
TCPdump抓包及分析方法1

1关键字Tcpdump,丢包,抓包2Tcpdump抓包的作用Tcpdump是linux系统自带的抓包工具,功能:>抓进出Linux服务器的IP包>抓下的IP包,可由WireShark等工具,解码为UDP和RTP包。
>抓下的IP包,可由WireShark等工具分析丢包情况3Tcpdump常用方法Tcpdump是linux系统自带的抓包工具,需要root权限才能运行。
//抓网卡eth2上所有进出的数据包,如果没有数据包,则通常会抓到广播包数会保留所有TS数据包,故重要。
3.4指定入向端口设入向端口为11866,转换为十六进制,即是0x2e5a,所以:其中,ether[36]和ether[37]为接收端口的16进制表示。
3.5指定出向端口其中, Ether[34]和ether[35]为发送端口的16进制表示。
3.6长时间抓包在抓包命令后加“-C 100”,它会满100M后写到下一个新的文件。
直到磁盘满。
3.7后台执行在抓包命令最后面再加一个&,这样可以后台一直抓。
这样的话,登录窗口可以关掉。
你想停止抓包,则得用PS把进程杀死。
4抓包分析快进快退4.1找关键帧RTP包是否为关键帧的标识保存在RTP扩展位中。
WireShark查看RTP包是否为关键帧。
00或者10:普通帧20或者30: 关键帧首包40或者50: 关键帧中间包80或者90: 关键帧尾包注:以上判断之所以有“或者”,是因为关键帧位只占了3比特。
4.2判断时戳如果抓包为32倍速,要判断时戳是否正常,则可以用抓包里的:(最大时戳-最小时戳)/90000/倍速=倍速播放时常例如:(709506270-490114260)/90000/32=76.17(秒)然后可以查看每二列的Time是否约等于76秒。
如果是,则是正常的。
5抓包分析是否丢包注意,不同版本的WireShark操作有所区别,下文中所用版本为1.3.05.1主要步骤>确定端口号并转换为16进制。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
TCP抓包分析
一TCP格式
源端口:数据发起者的端口号;?
目的端口:数据接收方的端口号;
32bit序列号:标识当前数据段的唯一性;
32bit的确认号:接收数据方返回给发送方的通知;
TCP头部长度为20字节,若TCP头部的Options选项启用,则会增加首部长度,因此TCP是首部变长的传输层协议;
Reserved、Reserved、Nonce、CWR、ECN-Echo:共6bit,保留待用。
?
URG:1bit紧急指针位,取值1代表这个数据是紧急数据需加速传递,取值0代表这是普通数据;?
ACK:1bit确认位,取值1代表这是一个确认的TCP包,取值0则不是确认包;PSH:1bit紧急位,取值1代表要求发送方马上发送该分段,而接收方尽快的将报文交给应用层,不做队列处理。
取值0阿迪表这是普通数据;?
RST:1bit重置位,当TCP收到一个不属于该主机的任何一个连接的数据,则向对方发一个复位包,此时该位取值为1,若取值为0代表这个数据包是传给自己的;?
SYN:1bit请求位,取值1代表这是一个TCP三次握手的建立连接的包,取值为0就代表是其他包;?
FIN:1bit完成位,取值1代表这是一个TCP断开连接的包,取值为0就代表是其他包;?
Window?Size:16bit窗口大小,表示准备收到的每个TCP数据的大小;?
Checksum:16bit的TCP头部校验,计算TCP头部,从而证明数据的有效性;?
Urgent?Pointer:16bit紧急数据点,当功能bit中的URG取值为1时有效;?
Options:TCP的头部最小20个字节。
如果这里有设置其他参数,会导致头部增大;?
Padding:当TCP头部小于20字节时会出现,不定长的空白填充字段,填充内容都是0,但是填充长度一定会是32的倍数;?
Data:被TCP封装进去的数据,包含应用层协议头部和用户发出的数据。
二数据截图
1.第一个TCP报文:
2.第二个TCP报文:
3.第三个TCP报文:
二分析
上面截图的三个TCP报文段表示了TCP连接时的三次握手阶段。
1.第一个TCP报文
这是要建立连接的客户(我)向服务器发出连接请求段
在TRANSMISSION CONTROL PROTOCOL这张截图中我们可以知道源端口号也就是主机端口号为50590,而目的端口号为HTTP的80端口,确认号为0(相对的),而首部长度为32字节,在标志位FLAGS(0x0002)中,只设置了SYN,也就是位同步标志,表示请求建立连接。
窗口大小WINDOW SIZE为8192,校验和CHECKSUM为0x553a,说明是正确的。
选项是12字节,里面的内容有最大段(MSS)大小为1440字节,占4个字节。
2.第二个TCP报文
这是服务器在收到请求后,发回确认(SYN+ACK)。
在TRANSMISSION CONTROL PROTOCOL这张截图中我们可以知道源主机(服务器)端口号为80,目的主机(客户机)端口号为50590,SEQUENCE NUMBER=0,ACK=1,首部长度为32字节。
在标志位(0x0012)中设置了ACK和SYN,其中SYN表示认可连接,ACK表示对所接受的段的确认。
窗口大小(WINDOW SIZE)为5840,校验和(checksum)为0x646d,表示正确。
选项(options)占12字节,其中包括最大段(MSS)大小为1460字节,占4字节。
3.第三个TCP报文
这是客户向服务器发出的确认段
源主机(客户机)端口号为50590,目的主机(服务器)端口号为80,SEQUENCE NUMBER=1,ACK=1,首部长度为20字节。
标志位(0x0010)中只设置了ACK,表示对所接受的段的确认。
窗口大小为16560,校验和为0x7b5f,表示正确。
这样就完成了TCP连接的建立阶段。
没有options选项。