网络安全-利用sniffer工具,分析TCP头的结构,并分析TCP的三次握手过程(详细)
利用sniffer工具,分析TCP头的结构,并分析TCP的三次握手过程
1.分析TCP头的结构
(1)重新设置过滤器
步骤:点击菜单栏Capture→Define Filter,再选择Advance,勾选IP选项,在勾选IP项的时候,先将其展开,下拉,找到TCP,将其勾选,点击确定。
(2)先将主机1的cmd窗口关闭,将主机2的服务器关闭,在主机2上打开Quick Easy FTP Server 软件,开启服务器。
在Sniffer中下图开始按钮,准备抓包。
在主机1的cmd中输入ftp 172.20.62.17 ,回车,输入连接服务器的用户名,回车,输入密码,回车。显示连接成功。
在Sniffer中点击下图的停止并显示按钮。然后在显示结果的页面选择Decode。查看抓包的情况。
(3)分析TCP的头结构
首先看一下TCP报文段的首部格式:
再看一下抓包的情况:
这里以第一次向服务请求时的TCP头部信息分析:
- 源端口(Source port):1104,表示源端口号。
- 目的端口号(Destination port):21,表示目的端口号,这里主机2的服务器开放的端口为21,所以目的端口号为21,提供ftp服务。
- 序号(Initial sequence number):2419433438。序号的范围为[0,2^32-1],在一个TCP连接中传送的字节流中的每一个字节都按顺序编号。
- 确认号(Next expected Seq number):2419433439。表示期望收到对方下一个报文段的第一个数据字节的字号。
- 数据偏移(Data offset):28 bytes。表示TCP报文段的数据起始处距离TCP报文段的起始处有多远。
- 保留(Reserved Bits):保留为今后使用。
- 紧急URG(urgent):0。当URG=1时,表明紧急指针有效,告诉系统此报文段中有紧急数据,应尽快传送,而不要按原来的排队顺序来传送。
- 确认ACK(acknowledgment):0。仅当ACK=1时确认号字段才有效。TCP规定,在连接建立后所有传送的报文段都必须把ACK置1。
- 推送PSH(push):0。当两个应用进程进行交互式的通信时,有时在一端的应用进程希望在键入一个命令后立即就能够收到对方的响应,这种情况下,TCP就可以使用推送(push)操作。
- 复位RST(reset):0。当RST=1时,表明TCP连接中出现严重错误,必须释放连接,然后再重新建立运输连接。
- 同步SYN(SYN):1。在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个请求报文字段。
- 终止FIN(FIN):0。用来释放一个连接,当FIN=1时,表明此报文段的发送方的数据已发送完毕,并要求释放运输连接。
- 窗口(Window):64240。指的是发送本报文段的一方的接受窗口(而不是自己的发送窗口)。窗口值告诉对方:从本报文段首部中的确认号算起,接收方目前允许对方发送的数据量。
- 检验和(Checksum):7F69。检验和字段检验的范围包括首部和数据这两部分。括号中显示correct表示检验正确。
- 紧急指针(Urgent pointer):0。紧急指针仅在URG=1时才有意义,它指出本报文段中的紧急数据的字节数。
- 选项(Options follow):长度可变。follow表示选项中有内容。
- 最大报文长度(Maximum segment size):1460。是每一个TCP报文段中的数据字段的最大长度。
2.分析TCP的三次握手过程
(1)在抓取的数据报中找到TCP进行3次握手的过程:
(2)分析
- 第一次握手:主机1首先向主机2的服务器发送连接请求,携带同步序号SYN=1和初始序号SEQ=2419433438。
- 第二次握手:服务器同意建立连接,向主机1发送确认,携带同步序号SYN=1和确认号ACK=2419433439以及一个初始序号SEQ=240475417。
- 第三次握手:然后主机1再向主机2的服务器发送确认收到,携带确认号ACK=240475148和序号SEQ=2419433439。
TCP连接已建立,主机1和主机2均进入已建立连接状态。
建立连接的3个数据包的TCP包头结构:
第一个:
第二个:
第三个:
本文通过Sniffer、ftp server等工具在虚拟机上进行抓包操作,根据抓包结果,详细分析了TCP的头部结构及TCP三次握手的过程。