资源描述
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响应代码
响应代码
解释说明
响应代码
解释说明
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 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
表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 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 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字节。
首部
数据
0 15 16 31
源端标语(16bit)
目的端标语(16bit)
序列号(32bit)
确认号(32bit)
首部长度(4bit)
保存(6bit)
URG
ACK
PSH
RST
SYN
FIN
窗口大小(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 06 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紧急指针: 0 [52/2]
由于FTP是封装在TCP中传输的,所以一方面会进行TCP的三次握手。图2是对各标志位的解释:
URG:紧急位,用来指示紧急指针有效。
ACK:确认位,用来指示确认号有效。
PSH:请求推送。
RST:重建位,用于重新建立连接。
SYN:同步位,用来在建立连接时同步序号。
FIN:终止位,用来释放一连接。
建立连接的三次握手的状态标志位:
标志位
第1包
第2包
第3包
图2 三次握手的状态标志位
←→分别表达进入、出去的数据包
表5 对捕获的TCP数据重要字段的分析
TCP - 传输控制协议个别字段分析
编号
序列号
确认号
窗口
作用
登陆FTP过程
1→
0
16384
TCP的三次握手
2←
16384
3→
17520
4←
65535
服务器发送49字节确认
5→
17471
客户确认收到(280+49=329)
6→
17471
客户输入用户名
7←
65519
服务器验证用户名
8→
17401
客户对服务确认
9→
17401
客户输入PASS
10←
65512
服务确认PASS
11→
17276
客户对服务确认
上传aa123.txt文献
23→
0
重置连接
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 0A
24→
17276
采用Port模式
25←
65448
服务器确认建立成功
26→
17246
客户端发送的文献名
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端口)
27←
0
65535
服务器建
立端口为20号新连接的三次TCP握手
28→
17520
30←
65535
29包内容
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 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 0A
29←
65429
对第26包的确认并且发送传输方式为ASCII mode
31→
17520
传输数据
32→
17520
33→
17520
终止位为1、客户端传输数据结束
34←
65535
服务器对客户的确认
35←
65535
终止位为1、服务器完毕接受
36→
17520
客户对服务器的确认
37→
17188
客户对服务器的第29包确认
38←
65429
传输数据完毕
通过上面FTP的分析:可以拟定FTP用到两个端口,一个端口是作为控制连接的端口21,用于发送指令给服务器以及等待服务器响应;另一个端口是作为数据传输的端口20,用来建立数据传输通道。控制连接(端口21)在整个FTP工作过程中始终保持连接状态。数据连接则是在每传输一个文献时都要启动和关闭。也就是说,在一个FTP的工作过程中,控制连接是永久的,数据连接是交互式的。
表6 释放连接时的状态标志位
标志位
第61包
第62包
第63包
第64包
紧急位
0
0
0
0
确认位
1
1
1
1
急切位
0
0
0
0
重置位
0
0
0
0
同步位
0
0
0
0
终止位
1
0
1
0
第61包是客户向服务器发送的终止报文,第62包是服务器对客户机的确认。此时,客户已经结束了对服务器的访问。但服务器并没有结束对客户机的会话。后边的第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
:
0x8
03
5
1
:
ARP
请求
2
:
AR
P
应答
3
:
RARP
请求
4
:
RARP
应答
0x0800
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 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 57
IP地址:192.168.2.105 IP地址:192.168.2.1
物理地址: 00:0A:E6:7F:FE:05 物理地址: 00 0F E2 F5 0D 57
IP地址为192.168.2.1的物理地址是00 0F E2 F5 0D 57
图4 ARP的请求过程
图5 ARP的应答过程
注意:当发送IP数据报需要获取目的主机的物理地址时,一方面检查它的ARP高速缓存,假如ARP高速缓存中已经存在相应的映射表项,则目的主机的硬件地址可以从ARP高速缓存中获得,主机可以立即发送IP数据报。只有当ARP高速缓存中不存在与该目的IP地址相应的映射表项时,才广播ARP请求。所以一般我们在抓取ARP数据之前,尽量先通过ARP –d命令先把ARP缓存清除,那样你才会抓到你想要的ARP数据包。否则就抓不到ARP请求报文和对方的应当包文。
总结:
通过开设TCP/IP这门课程,我们学到了好多。特别是在实验课上,我们通过刚开始对一串串16进制数据是什么都不知道到现在可以将报文和一协议相结合,分析出每位数据的含义,从而更深的了解了网络分层的必要性,对所谓的“协议是水平的、服务是垂直的”有了更好的理解。对网络的工作方式有了进一步的结识。当然,在分析过程中我们也曾有许多困难,心中存在好多问题,但最终通过老师的指导和我们的共同努力,都很好的将其解决。在很大限度上提高了我们的动手和解决实际问题能力。对这门课程学习让我们对网络产生了更深厚的爱好。也让我们结识不管做什么事情碰到什么问题,只要专心去解决,在难的问题也会变的简朴。
附页
展开阅读全文