TCP/IP协议分析及应用
在计算机网络的发展过程中,TCP/IP网络是迄今为止对人类社会影响最重要的一种网络。TCP和IP是两种网络通信协议,以这两种协议为核心协议的网络总称为TCP/IP网络。人们常说的国际互联网或因特网就是一种TCP/IP网络,大多数企业的内部网也是TCP/IP网络。
作为一名学习计算机的学生,我们一定要对TCP/IP协议进行深刻的解析。通过对协议的分析进一步了解网络上数据的传送方式和网络上出现的问题的解决方法。本实验就是对文件传输协议进行分析来确定FTP协议工作方式。
目的:通过访问FTP:202.207.112.32,向FTP服务器上传和下载文件。用抓包工作来捕捉数据在网络上的传送过程。为的方便数据包的分析,通过上传一个内容为全A的TXT文件,来更直观的分析文件传输的过程。
过程: 1.在本机上安装科莱抓包软件
2.对科莱进行进滤器的设置(arp、ftp、ftp ctrl、ftp data)
3.通过运行CMD窗口进行FTP的访问
4.用PUT和GET进行文件的上传与下载
5.对抓到的包进行详细的分析
CMD中的工作过程:
C:\Documents and Settings\Administrator>ftp 202.207.112.32
Connected to 202.207.112.32.
220 Serv-U FTP Server v5.1 for WinSock ready...
User (202.207.112.32:(none)): anonymous //通过匿名方式访问
331 User name okay, please send complete E-mail address as password.
Password:
230 User logged in, proceed.
ftp> cd 学生作业上传区/暂存文件夹
250 Directory changed to /学生作业上传区/暂存文件夹
ftp> put d:\aaa123.txt //上传aaa123.txt文件
200 PORT Command successful.
150 Opening ASCII mode data connection for aaa123.txt.
226 Transfer complete.
ftp: 1736 bytes sent in 0.00Seconds 1736000.00Kbytes/sec.
ftp> get aaaaa.txt //下载aaaaa.txt文件
200 PORT Command successful.
150 Opening ASCII mode data connection for aaaaa.txt (580 Bytes).
226 Transfer complete.
ftp: 580 bytes received in 0.00Seconds 580000.00Kbytes/sec.
ftp> quit
221 Goodbye!
对FTP响应代码说明见表1:
表1 FTP响应代码
IP数据包分析:(按照数据包的顺序进行分析)
表2和表3是对两个往返的数据报进行分析:
表2 捕获的第1个数据包
表3 捕获的第2个数据包
目标MAC:00 E0 FC 18 7B 46 源MAC:00 0D 87 90 74 FA 版本:4(IPv4)
首部长度:5(20字节)上层协议:06(TCP)
源IP地址:C0 A8 0B F7 目的IP地址:CA CF 70 20
TCP源端口:11 8F(随机产生)目的端口:00 15(熟知端口21表示FTP)
TCP报文段数据分析:
众所周知的端口来标识在TCP上运行的标准服务,包括FTP、HTTP、TELNET、SMTP等,这些端口号码范围为0-1023。根据TCP端口号80可以确定TCP是为FTP 提供服务的。下面就讨论TCP报文段的首部格式。
TCP 报文段首部的前20个字节是固定的(图1),后面有4N字节是根据需要而
增加的选项(N 是整数)。因此TCP 首部的最小长度是20字节。
通过理论与实际相结合对表4的TCP 报文进行更好的掌握与分析。
表4 捕获的第4个数据包
TCP - 传输控制协议
11 8F 源端口: 4495 00 15 目标端口: 21 (ftp) C2 C0 EC 07序列号: 3267423239 00 00 00 00 确认号: 0 70 TCP 偏移量: 7
02 标志:..00 0010 0x003F
40 00窗口: 16384 [48/2] 7B 23校验和: 0x7B23 (正确) [50/2] 00 00紧急指针: 0 [52/2]由于FTP 是封装在TCP 中传输的,所以首先会进行TCP 的三次握手。图2是对各标志位的解释:
URG:紧急位,用来指示紧急指针有效。 ACK:确认位,用来指示确认号有效。 PSH:请求推送。
RST:重建位,用于重新建立连接。
SYN:同步位,用来在建立连接时同步序号。 FIN:终止位,用来释放一连接。
建立连接的三次握手的状态标志位:
图2 三次握手的状态标志位
图1 TCP 报文段的首部格式
←→分别表示进入、出去的数据包
通过上面FTP 的分析:可以确定FTP 用到两个端口,一个端口是作为控制连接的端口21,用于发送指令给服务器以及等待服务器响应;另一个端口是作为数据传输的端口20,用来建立数据传输通道。控制连接(端口21)在整个FTP 工作过程中始终保持连接状态。数据连接则是在每传输一个文件时都要开启和关闭。也就是说,在一个FTP 的工作过程中,控制连接是永久的,数据连接是交互式的。
表6 释放连接时的状态标志位
第61包是客户向服务器发送的终止报文,第62包是服务器对客户机的确认。此时,客户已
经结束了对服务器的访问。但服务器并没有结束对客户机的会话。后边的第63包是服务器向客户发送的终止报文,第64包是客户对服务器的确认。这时双方的会话才真正终止。
数据据链式路层(ARP )
图3是ARP 请求和应答包:
表6 捕获的ARP
请求数据报
表7 捕获的ARP 应答数据报
图(4、5)分别为ARP 请求与应答的过程: