使用抓包软件抓取tcp三次协议的数据包.docx
- 文档编号:15933190
- 上传时间:2023-07-09
- 格式:DOCX
- 页数:7
- 大小:19.56KB
使用抓包软件抓取tcp三次协议的数据包.docx
《使用抓包软件抓取tcp三次协议的数据包.docx》由会员分享,可在线阅读,更多相关《使用抓包软件抓取tcp三次协议的数据包.docx(7页珍藏版)》请在冰点文库上搜索。
使用抓包软件抓取tcp三次协议的数据包
竭诚为您提供优质文档/双击可除
使用抓包软件抓取tcp三次协议的数据包
篇一:
tcp抓包分析
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就代表是其他包;
windowsize:
16bit窗口大小,表示准备收到的每个tcp数据的大小;checksum:
16bit的tcp头部校验,计算tcp头部,从而证明数据的有效性;
urgentpointer:
16bit紧急数据点,当功能bit中的uRg取值为1时有效;options:
tcp的头部最小20个字节。
如果这里有设置其他参数,会导致头部增大;
padding:
当tcp头部小于20字节时会出现,不定长的空白填充字段,填充内容都是0,但是填充长度一定会是32的倍数;
data:
被tcp封装进去的数据,包含应用层协议头部和用户发出的数据。
二数据截图
1.第一个tcp报文:
2.第二个tcp报文:
3.第三个tcp报文:
二分析
上面截图的三个tcp报文段表示了tcp连接时的三次握手阶段。
1.第一个tcp报文
这是要建立连接的客户(我)向服务器发出连接请求段
在tRansmissioncontRolpRotocol这张截图中我们可以知道源端口号也就是主机端口号为50590,而目的端口号为http的80端口,确认号为0(相对的),而首部长度为32字节,在标志位Flags(0x0002)中,只设置了syn,也就是位同步标志,表示请求建立连接。
窗口大小windowsize为8192,校验和checksum为0x553a,说明是正确的。
选项是12字节,里面的内容有最大段(mss)大小为1440字节,占4个字节。
2.第二个tcp报文
这是服务器在收到请求后,发回确认(syn+ack)。
在tRansmissioncontRolpRotocol这张截图中我们可以知道源主机(服务器)端口号为80,目的主机(客户机)端口号为50590,sequencenumbeR=0,ack=1,首部长度为32字节。
在标志位(0x0012)中设置了ack和syn,其中syn表示认可连接,ack表示对所接受的段的确认。
窗口大小(windowsize)为5840,校验和(checksum)为0x646d,表示正确。
选项(options)占12字节,其中包括最大段(mss)大小为1460字节,占4字节。
3.第三个tcp报文
这是客户向服务器发出的确认段
源主机(客户机)端口号为50590,目的主机(服务器)端口号为80,sequencenumbeR=1,ack=1,首部长度为20字节。
标志位(0x0010)中只设置了ack,表示对所接受的段的确认。
窗口大小为16560,校验和为0x7b5f,表示正确。
这样就完成了tcp连接的建立阶段。
没有options选项。
篇二:
tcp三次握手抓包及过程分析
三次握手的原理与抓包情况
1.1三次握手的定义所谓三次握手(three-wayhandshake),是指建立一个tcp连接时,需要客户端和服务器总共发送3个包。
三次握手的目的是连接服务器指定端口,建立tcp连接,并同步连接双方的序列号和确认号并交换tcp窗口大小信息.在socket编程中,客户端执行connect()时。
将触发三次握手。
图1抓包情况
图2tcp三次握手示意图
1.2三次握手的具体过程
1.2.1
客户端发送一个tcp的syn标志位置1的包指明客户打算连接的服务器的端口,以及初始序号x,保存在包头的序列号(sequencenumber)字段里。
如图3所示
图3第一次握手情况
1.2.2第二次握手:
服务器发回确认包(ack)应答。
即syn标志位和ack标志位均为1同时,将确认序号(acknowledgementnumber)设置为客户的isn加1以.即x+1,图4所示。
图4第二次握手情况
1.2.3第三次握手:
客户端再次发送确认包(ack)syn标志位为0,ack标志位为1.并且把服务器发来ack的序号字段+1,放在确定字段中发送给对方.并且在数据段放写isn的+1。
如图5所示
图5第三次握手情况
思考点:
2.1为什么要进行三次握手
三次握手的最主要目的是保证连接是双工的,可靠更多的是通过重传机制来保证的。
但是为什么一定要进行三次握手来保证连接是双工的呢,一次不行么?
两次不行么?
我们举一个现实生活中两个人进行语言沟通的例子来模拟三次握手。
第一次对话:
老婆让甲出去打酱油,半路碰到一个朋友乙,甲问了一句:
哥们你吃饭了么?
结果乙带着耳机听歌呢,根本没听到,没反应。
甲心里想:
跟你说话也没个音,不跟你说了,沟通失败。
说明乙接受不到甲传过来的信息的情况下沟通肯定是失败的。
如果乙听到了甲说的话,那么第一次对话成功,接下来进行第二次对话。
第二次
对话:
乙听到了甲说的话,但是他是老外,中文不好,不知道甲说的啥意思也不知道怎样回答,于是随便回答了一句学过的中文:
我去厕所了。
甲一听立刻笑喷了,“去厕所吃饭”道不同不相为谋,离你远点吧,沟通失败。
说明乙无法做出正确应答的情况下沟通失败。
如果乙听到了甲的话,做出了正确的应答,并且还进行了反问:
我吃饭了,你呢?
那么第二次握手成功。
通过前两次对话证明了乙能够听懂甲说的话,并且能做出正确的应答。
接下来进行第三次对话。
第三次对话:
甲刚和乙打了个招呼,突然老婆喊他,“你个死鬼,打个酱油咋这么半天,看我回家咋收拾你”,甲是个妻管严,听完吓得二话不说就跑回家了,把乙自己晾那了。
乙心想:
这什么人啊,得,我也回家吧,沟通失败。
说明甲无法做出应答的情况下沟通失败。
如果甲也做出了正确的应答:
我也吃了。
那么第三次对话成功,两人已经建立起了顺畅的沟通渠道,接下来开始持续的聊天。
通过第二次和第三次的对话证明了甲能够听懂乙说的话,并且能做出正确的应答。
可见,两个人进行有效的语言沟通,这三次对话的过程是必须的。
同理对于tcp为什么需要进行三次握手我们可以一样的理解:
为了保证服务端能收接受到客户端的信息并能做出正确的应答而进行前两次(第一次和第二次)握手,为了保证客户端能够接收到服务端的信息并能做出正确的应答而进行后两次(第二次和第三次)握手。
2.2syn攻击的原理
在三次握手过程中,服务器发送syn-ack之后,收到客户端的ack之前的tcp连接称为半连接(half-openconnect).此时服务器处于syn_RecV状态.当收到ack后,服务器转入established状态.
syn攻击就是攻击客户端在短时间内伪造大量不存在的ip地址,向服务器不断地发送syn包,服务器回复确认包,并等待客户的确认,由于源地址是不存在的,服务器需要不断的重发直至超时,这些伪造的syn包将长时间占用未连接队列,正常的syn请求被丢弃,目标系统运行缓慢,严重者引起网络堵塞甚至系统瘫痪。
syn攻击是一个典型的ddos攻击。
检测syn攻击非常的方便,当你在服务器上看到大量的半连接状态时,特别是源ip地址是随机的,基本上可以断定这是一次syn攻击.在linux下可以如下命令检测是否被syn攻击
netstat-n-ptcp|grepsyn_RecV
一般较新的tcp/ip协议栈都对这一过程进行修正来防范syn攻击,修改tcp协议实现。
主要方法有synattackprotect保护机制、syncookies技术、增加最大半连接和缩短超时时间等.
但是不能完全防范syn攻击。
篇三:
wireshark抓包图解tcp三次握手四次挥手详解
wireshark抓包图解tcp三次握手
/四次挥手详解
一.tcp/ip协议族
tcp/ip是一个协议族,通常分不同层次进行开发,每个层次负责不同的通信功能。
包含以下四个层次:
1.链路层,也称作数据链路层或者网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。
它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。
2.网络层,也称作互联网层,处理分组在网络中的活动,例如分组的选路。
网络层协议包括ip协议(网际协议)、icmp协议(internet互联网控制报文协议),以及igmp协议(internet组管理协议)。
3.运输层主要为两台主机上的应用程序提供端到端的通信。
在tcp/ip协议族中,有两个互不相同的传输协议:
tcp(传输控制协议)和udp(用户数据报协议)。
tcp为两台主机提供高可靠性的数据通信。
他所作的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。
由于运输层提供了高可靠性的端到端通信,因此应用层可
以忽略所有这些细节。
而另一方面,udp则为应用层提供一种非常简单的服务。
它只是把称作数据报的分组从一台主机发送到另一台主机,
但并不保证该数据报能到达另一端。
任何必须的可靠性必须由应用层来提供。
4.应用层负责处理特定的应用程序细节。
包括telnet(远程登录)、Ftp(文件传输协议)、smtp(简单邮件传送协议)以及snmp(简单网络管理协议)等。
wireshark抓到的包与对应的协议层如下图所示:
1.Frame:
物理层的数据帧概况
2.ethernetii:
数据链路层以太网帧头部信息
3.internetprotocolVersion4:
互联网层ip包头部信息
4.transmissioncontrolprotocol:
传输层的数据段头部信息,此处是tcp
5.hypertexttransferprotocol:
应用层的信息,此处是http协议
二.tcp协议
tcp是一种面向连接(连接导向)的、可靠的基于字节流的传输层通信协议。
tcp将用户数据打包成报文段,它发送后启动一个定时器,另一端收到的数据进行确认、对失序的数据重新排序、丢弃重复数据。
tcp的特点有:
1.tcp是面向连接的运输层协议
2.每一条tcp连接只能有两个端点,每一条tcp连接只能是点对点的
3.tcp提供可靠交付的服务
4.tcp提供全双工通信。
数据在两个方向上独立的进行传输。
因此,连接的每一端必须保持每个方向上的传输数据序号。
5.面向字节流。
面向字节流的含义:
虽然应用程序和tcp交互是一次一个数据块,但tcp把应用程序交下来的数据仅仅是一连串的无结构的字节流tcp报文首部,如下图所示:
1.源端口号:
数据发起者的端口号,16bit
2.目的端口号:
数据接收者的端口号,16bit
3.序号:
32bit的序列号,由发送方使用
4.确认序号:
32bit的确认号,是接收数据方期望收到发送方的下一个报文段的序号,因此确认序号应当是上次已成功收到数据字节序号加1。
5.首部长度:
首部中32bit字的数目,可表示15*32bit=60字节的首部。
一般首部长度为20字节。
6.保留:
6bit,均为0
7.紧急uRg:
当uRg=1时,表示报文段中有紧急数据,应尽快传送。
8.确认比特ack:
ack=1时代表这是一个确认的tcp包,取值0则不是确认包。
9.推送比特psh:
当发送端psh=1时,接收端尽快的交付给应用进程。
10.复位比特(Rst):
当Rst=1时,表明tcp连接中出现严重差错,必须释放连接,再重新建立连接。
11.同步比特syn:
在建立连接是用来同步序号。
syn=1,ack=0表示一个连接请求报文段。
syn=1,ack=1表示同意建立连接。
12.终止比特Fin:
Fin=1时,表明此报文段的发送端的数据已经发送完毕,并要求释放传输连接。
13.窗口:
用来控制对方发送的数据量,通知发放已确定的发送窗口上限。
14.检验和:
该字段检验的范围包括首部和数据这两部分。
由发端计算和存储,并由收端进行验证。
15.紧急指针:
紧急指针在uRg=1时才有效,它指出本报文段中的紧急数据的字节数。
16.选项:
长度可变,最长可达40字节
wireshark捕获到的tcp包中的每个字段如下图所示:
三.tcp三次握手
tcp建立连接时,会有三次握手过程,如下图所示,wireshark截获到了三次握手的三个数据包。
第四个包才是http的,说明http的确是使用tcp建立连接的。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 使用 软件 抓取 tcp 三次 协议 数据包
![提示](https://static.bingdoc.com/images/bang_tan.gif)