1、TCP/IP协议分析及应用在计算机网络的发展过程中,TCP/IP网络是迄今为止对人类社会影响最重要的一种网络。TCP和IP是两种网络通信协议,以这两种协议为核心协议的网络总称为TCP/IP网络。人们常说的国际互联网或因特网就是一种TCP/IP网络,大多数公司的内部网也是TCP/IP网络。作为一名学习计算机的学生,我们一定要对TCP/IP协议进行深刻的解析。通过对协议的分析进一步了解网络上数据的传送方式和网络上出现的问题的解决方法。本实验就是对文献传输协议进行分析来拟定FTP协议工作方式。目的:通过访问FTP:202.207.112.32,向FTP服务器上传和下载文献。用抓包工作来捕获数据在网络
2、上的传送过程。为的方便数据包的分析,通过上传一个内容为全A的TXT文献,来更直观的分析文献传输的过程。过程: 1.在本机上安装科莱抓包软件2.对科莱进行进滤器的设立(arp、ftp、ftp ctrl、ftp data)3.通过运营CMD窗口进行FTP的访问4.用PUT和GET进行文献的上传与下载5.对抓到的包进行具体的分析CMD中的工作过程:C:Documents and SettingsAdministratorftp 202.207.112.32 Connected to 202.207.112.32.220 Serv-U FTP Server v5.1 for WinSock ready
3、.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
4、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 5800
5、00.00Kbytes/sec.ftp quit221 Goodbye!对FTP响应代码说明见表1:表1 FTP响应代码响应代码解释说明响应代码解释说明150文献OK,数据连接将在短时间内打开230登录成功200成功331用户名有效,需要密码220服务器准备就绪332需要账号名221服务关闭421关闭服务器226数据连接关闭500无效命令IP数据包分析:(按照数据包的顺序进行分析)表2和表3是对两个往返的数据报进行分析:表2 捕获的第1个数据包00 E0 FC 18 7B 46 00 0D 87 90 74 FA 08 00 45 00 00 30 92 19 40 00 80 06 61 1
6、F C0 A8 0B F7 CA CF 70 20 11 8F 00 15 C2 C0 EC 07 00 00 00 00 70 02 40 00 7B 23 00 00 02 04 05 B4 01 01 04 02表3 捕获的第2个数据包00 0D 87 90 74 FA 00 E0 FC 18 7B 46 08 00 45 00 00 30 25 2D 00 00 7F 06 0F 0C CA CF 70 20 C0 A8 0B F7 00 15 11 8F D6 41 CF DF C2 C0 EC 08 70 12 40 00 D4 F0 00 00 02 04 05 B4 01 01
7、 04 02目的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 20TCP源端口:11 8F(随机产生) 目的端口:00 15(熟知端口21表达FTP)TCP报文段数据分析:众所周知的端口来标记在TCP上运营的标准服务,涉及FTP、HTTP、TELNET、SMTP等,这些端标语码范围为0-1023。根据TCP端标语80可以拟定TCP是为FTP提供服务的。下面就讨论TCP报文段的首部格式。TCP 报文段首部的前20
8、个字节是固定的(图1),后面有4N字节是根据需要而增长的选项(N是整数)。因此TCP首部的最小长度是20字节。首部数据0 15 16 31源端标语(16bit)目的端标语(16bit)序列号(32bit)确认号(32bit)首部长度(4bit)保存(6bit)URGACKPSHRSTSYNFIN窗口大小(16bit)校验和(16bit)紧急指针(16bit)选项和填充图1 TCP 报文段的首部格式通过理论与实际相结合对表4的TCP报文进行更好的掌握与分析。00 E0 FC 18 7B 46 00 0D 87 90 74 FA 08 00 45 00 00 30 92 19 40 00 80 0
9、6 61 1F C0 A8 0B F7 CA CF 70 20 11 8F 00 15 C2 C0 EC 07 00 00 00 00 70 02 40 00 7B 23 00 00 02 04 05 B4 01 01 04 02表4 捕获的第4个数据包TCP - 传输控制协议 11 8F 源端口: 4495 00 15 目的端口: 21 (ftp) C2 C0 EC 07序列号: 00 00 00 00 确认号: 0 70 TCP偏移量: 7 02 标志:.00 0010 0x003F 40 00窗口: 16384 48/2 7B 23校验和: 0x7B23 (对的) 50/2 00 00紧
10、急指针: 0 52/2由于FTP是封装在TCP中传输的,所以一方面会进行TCP的三次握手。图2是对各标志位的解释:URG:紧急位,用来指示紧急指针有效。ACK:确认位,用来指示确认号有效。PSH:请求推送。RST:重建位,用于重新建立连接。SYN:同步位,用来在建立连接时同步序号。FIN:终止位,用来释放一连接。建立连接的三次握手的状态标志位:标志位第1包第2包第3包图2 三次握手的状态标志位分别表达进入、出去的数据包表5 对捕获的TCP数据重要字段的分析TCP - 传输控制协议个别字段分析编号序列号确认号窗口作用登陆FTP过程1016384TCP的三次握手216384317520465535
11、服务器发送49字节确认517471客户确认收到(280+49=329)617471客户输入用户名765519服务器验证用户名817401客户对服务确认917401客户输入PASS1065512服务确认PASS1117276客户对服务确认上传aa123.txt文献230重置连接24包内容11 8F 00 15 C2 C0 EC 43 D6 41 D0 D4 50 18 43 7C 35 15 00 00 50 4F 52 54 20 31 39 32 2C 31 36 38 2C 31 31 2C 32 34 37 2C 31 37 2C 31 38 30 0D 0A2417276采用Port模
12、式2565448服务器确认建立成功2617246客户端发送的文献名27包内容00 14 11 B4 33 78 C8 32 00 00 00 00 70 02 FF FF 6E 1D 00 00 02 04 05 B4 01 01 04 02(00 14代表20端口)27065535服务器建立端口为20号新连接的三次TCP握手2817520306553529包内容00 15 11 8F D6 41 D0 F2 C2 C0 EC 72 50 18 FF 95 18 48 00 00 31 35 30 20 4F 70 65 6E 69 6E 67 20 41 53 43 49 49 20 6D
13、6F 64 65 20 64 61 74 61 20 63 6F 6E 6E 65 63 74 69 6F 6E 20 66 6F 72 20 61 61 31 32 33 34 35 36 2E 74 78 74 2E 0D 0A2965429对第26包的确认并且发送传输方式为ASCII mode3117520传输数据32175203317520终止位为1、客户端传输数据结束3465535服务器对客户的确认3565535终止位为1、服务器完毕接受3617520客户对服务器的确认3717188客户对服务器的第29包确认3865429传输数据完毕通过上面FTP的分析:可以拟定FTP用到两个端口,
14、一个端口是作为控制连接的端口21,用于发送指令给服务器以及等待服务器响应;另一个端口是作为数据传输的端口20,用来建立数据传输通道。控制连接(端口21)在整个FTP工作过程中始终保持连接状态。数据连接则是在每传输一个文献时都要启动和关闭。也就是说,在一个FTP的工作过程中,控制连接是永久的,数据连接是交互式的。 表6 释放连接时的状态标志位标志位第61包第62包第63包第64包紧急位0000确认位1111急切位0000重置位0000同步位0000终止位1010第61包是客户向服务器发送的终止报文,第62包是服务器对客户机的确认。此时,客户已经结束了对服务器的访问。但服务器并没有结束对客户机的会
15、话。后边的第63包是服务器向客户发送的终止报文,第64包是客户对服务器的确认。这时双方的会话才真正终止。数据据链式路层(ARP)图3是ARP请求和应答包: 帧类型 ARP/RARP报文 PAD 字节 2 28 18 图3 ARP/RARP报文封装在以太网帧中格式 CRC 4 硬件 类型 目的地址 源地址 6 6 协议 类型 硬件地址长度 协议地 址长度 操作 类型 发送者 以太网地址 目的 以太网地址 发送者 IP地址 目的 IP地址 2 2 2 1 1 6 6 4 4 ARP:0x0806 RARP:0x8035 1:ARP请求 2:ARP应答 3:RARP请求 4:RARP应答 0x080
16、0 0x06 0x04 0x0001 表6 捕获的ARP请求数据报00 0A E6 7F FE 05 00 0F E2 F5 0D 57 08 06 00 01 08 00 06 04 00 02 00 0F E2 F5 0D 57 C0 A8 02 01 00 0A E6 7F FE 05 C0 A8 02 69 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00表7 捕获的ARP应答数据报FF FF FF FF FF FF 00 0A E6 7F FE 05 08 06 00 01 08 00 06 04 00 01 00 0A E6
17、 7F FE 05 C0 A8 02 69 00 00 00 00 00 00 C0 A8 02 01图(4、5)分别为ARP请求与应答的过程:请求IP地址为192.168.2.1的物理地址IP地址:192.168.2.105 IP地址:192.168.2.1物理地址: 00:0A:E6:7F:FE:05 物理地址: 00 0F E2 F5 0D 57IP地址:192.168.2.105 IP地址:192.168.2.1物理地址: 00:0A:E6:7F:FE:05 物理地址: 00 0F E2 F5 0D 57IP地址为192.168.2.1的物理地址是00 0F E2 F5 0D 57图4
18、 ARP的请求过程图5 ARP的应答过程注意:当发送IP数据报需要获取目的主机的物理地址时,一方面检查它的ARP高速缓存,假如ARP高速缓存中已经存在相应的映射表项,则目的主机的硬件地址可以从ARP高速缓存中获得,主机可以立即发送IP数据报。只有当ARP高速缓存中不存在与该目的IP地址相应的映射表项时,才广播ARP请求。所以一般我们在抓取ARP数据之前,尽量先通过ARP d命令先把ARP缓存清除,那样你才会抓到你想要的ARP数据包。否则就抓不到ARP请求报文和对方的应当包文。总结:通过开设TCP/IP这门课程,我们学到了好多。特别是在实验课上,我们通过刚开始对一串串16进制数据是什么都不知道到现在可以将报文和一协议相结合,分析出每位数据的含义,从而更深的了解了网络分层的必要性,对所谓的“协议是水平的、服务是垂直的”有了更好的理解。对网络的工作方式有了进一步的结识。当然,在分析过程中我们也曾有许多困难,心中存在好多问题,但最终通过老师的指导和我们的共同努力,都很好的将其解决。在很大限度上提高了我们的动手和解决实际问题能力。对这门课程学习让我们对网络产生了更深厚的爱好。也让我们结识不管做什么事情碰到什么问题,只要专心去解决,在难的问题也会变的简朴。附页