当前位置:文档之家› FTP协议分析

FTP协议分析

FTP是早期互联网协议(注:IP协议组)中的一个,FTP协议是设计用在当时还比较封闭的互联网

上传输文件,当时互联网只是互连了一些大学、政府机构和设计该互联网模型的一些商业公司

。FTP在当今网络上,特别是在安全问题比较严重的网络上(如互联网Internet)的行为模式

是有一些问题的,本白皮书也提供了一些理论背景知识,这些知识可以帮助你在一个有防火墙

或者使用NAT的网络上正确实施FTP。

FTP协议早在Client/Server(C/S)模式流行前就已经被设计,但FTP工作模式与C/S模式十分

相似。FTP使用两个TCP连接,一个TCP连接用于控制信息(控制连接),一个TCP连接用于实际

的数据传输(数据连接)。对FTP对话的分析包括在控制连接上所发送命令的检查和在数据连

接上发送的TCP数据段(注:segment---OSI模型中对第4层数据单元的称呼)的评估。对于普通

的(活跃的)FTP,控制连接由客户端初始化,数据连接由服务器端初始化。活跃的FTP也称为

(Port模式)。另一种模式是被动模式(Passive模式),这种模式下客户端初始化数据连接。

>>1.0<< FTP和TCP端口号

根据是使用Port模式还是Passive模式,FTP使用不同的TCP端口号,在详细描述FTP前,我们来

简单讨论一下TCP端口号的一些基本概念。TCP使用端口号来标识所发送和接收的应用,端口号

可以帮助TCP来分离字节流并且帮相应字节传递给正确的应用程序。

TCP端口号可以是半永久的和暂时的。服务器端监听在半永久的端口上来让客户端访问。客户

端使用暂时的端口在本地标识一个对话,客户端端口只在使用TCP服务时候才存在,而服务器

端口只要服务器在运行就一直在监听。

TCP端口可以归为3类:

1、众所周知的端口来标识在TCP上运行的标准服务,包括FTP、HTTP、TELNET、SMTP 等,这些

端口号码范围为0-1023;

2、注册端口号用来标识那些已经向IANA(Internet Assigned Numbers Assigned Numbers Authority)注册的应用,注册端口号为1024-49151;

3、私有端口号是非注册的并且可以动态地分配给任何应用,私有端口为49152-65535;

注册的端口号本来打算只给注册的应用使用,可近年来端口号已经陷入了到达极限的困境,你

可能会看到本来应该是给注册应用使用的注册端口被非注册应用用做暂时的端口。RFC1700

细标注了众所周知的和注册的端口号,然而不幸的是,这个RFC文档自从1994年以来一直没有

被更新,然后你仍可以从IANA得到一个及时更新的端口列表,详细URL为:

http://biz.doczj.com/doc/a55712805.html,/assignments/port-numbers

>>2.0<< FTP Port模式和FTP Passive模式

当你对一个FTP问题进行排错时候,你首先要问的一个问题是使用的是port模式的还是passive

模式。因为这两种行为迥异,所以这两种模式引起的问题也不同;在过去,客户端缺省为acti

ve(port)模式;近来,由于Port模式的安全问题,许多客户端的FTP应用缺省为Passive模式。

>>2.1 FTP Port模式

Port模式的FTP步骤如下:

1、客户端发送一个TCP

SYN(TCP同步)包给服务器段众所周知的FTP控制端口21,客户端使用暂时的端口作为它的源

端口;

2、服务器端发送SYN

ACK(同步确认)包给客户端,源端口为21,目的端口为客户端上使用的暂时端口;

3、

客户端发送一个ACK(确认)包;客户端使用这个连接来发送FTP命令,服务器端使用这个连接

来发送FTP应答;

4、

当用户请求一个列表(List)请求或者发起一个要求发送或者接受文件的请求,客户端软件使用

PORT命令,这个命令包含了一个暂时的端口,客户端希望服务器在打开一个数据连接时候使用

这个暂时端口;PORT命令也包含了一个IP地址,这个IP地址通常是客户自己的IP地址,而且FT

P也支持第三方(third-party)模式,第三方模式是客户端告诉服务器端打开与另台主机的连

接;

5、

服务器端发送一个SYN包给客户端的暂时端口,源端口为20,暂时端口为客户端在PORT 命令中

发送给服务器端的暂时端口号;

6、客户端以源端口为暂时端口,目的端口为20发送一个SYN ACK包;

7、服务器端发送一个ACK包;

8、

发送数据的主机以这个连接来发送数据,数据以TCP段(注:segment,第4层的PDU)形式

发送(

一些命令,如STOR表示客户端要发送数据,RETR表示服务器段发送数据),这些TCP段都需要

对方进行ACK确认(注:因为TCP协议是一个面向连接的协议)

9、

当数据传输完成以后,发送数据的主机以一个FIN命令来结束数据连接,这个FIN命令需要另一

台主机以ACK确认,另一台主机也发送一个FIN命令,这个FIN命令同样需要发送数据的主机以A

CK确认;

10、

客户端能在控制连接上发送更多的命令,这可以打开和关闭另外的数据连接;有时候客户端结

束后,客户端以FIN命令来关闭一个控制连接,服务器端以ACK包来确认客户端的FIN,服务器

同样也发送它的FIN,客户端用ACK来确认。

下图图示了FTP PORT模式前几步步骤:

/====================================================================\ | |

| [ ftp Client ] [ ftp Server ] |

| |

| (TCP:21 连接初始化,控制端口) |

| SYN |

| Port xxxx ----------------------> Port 21 [TCP] |

| SYN+ACK |

| Port xxxx <---------------------- Port 21 |

| ACK |

| Port xxxx ----------------------> Port 21 |

| |

| (控制操作: 用户列目录或传输文件) |

| |

| Port, IP, Port yyyy |

| Port xxxx <---------------------- Port 21 |

| Port Seccussful |

| Port xxxx <---------------------- Port 21 |

| List, Retr or Stor |

| Port xxxx ----------------------> Port 21 |

| |

| |

| (TCP:20 连接初始化,数据端口) |

| SYN |

| Port yyyy <---------------------- Port 20 |

| SYN+ACK |

| Port yyyy ----------------------> Port 20 |

| ACK |

| Port yyyy <---------------------- Port 20 |

| |

| |

| (数据操作: 数据传输) |

| Data + ACK |

| Port yyyy <---------------------> Port 20 |

| . |

| . |

| . |

| |

\====================================================================/

FTP

Port模式会给网络管理人员在许多方面带来很多问题,首先,在PORT命令消息中的IP地址和端

口号的编码不是直白地显示。另外,应用层的协议命令理论上不应该包含网络地址信息(注:IP地址),因为这打破了协议层的原则并且可能导致协同性和安全性方面的问题。

下图是WildPackets

EtherPeek协议分析仪解码了PORT命令的地址参数,地址参数后是端口号,见PORT 192,168,10,232,6,127;6,127部分的第一个阿拉伯数字乘以256,然后加上第2个阿拉伯数字

就得到端口号,所以客户端指定了端口号为6*256+127=1663;

/====================================================================\ | IP Header - Internet Protocol Datagram |

| Version: 4 |

| Header Length: 5 (20 bytes) |

| |

| ............... |

| |

| Time To Live: 128 |

| Protocol: 6 TCP - Transmission Control Protocol |

| Header Checksum: 0xAA36 |

| Source IP Address: 192.168.0.1 DEMO |

| Dest. IP Address: 192.168.0.3 VI |

| No IP Options |

| |

| TCP - Transport Control Protocol |

| Source Port: 2342 manage-exec |

| Destination Port: 21 ftp |

| Sequence Number: 2435440100 |

| Ack Number: 9822605 |

| Offset: 5 (20 bytes) |

| Reserved: %000000 |

| Flags: %011000 |

| 0. .... (No Urgent pointer) |

| .1 .... Ack |

| .. 1... Push |

| .. .0.. (No Reset) |

| .. ..0. (No SYN) |

| .. ...0 (No FIN) |

| |

| Window: 65150 |

| Checksum: 0x832A |

| Urgent Pointer: 0 |

| No TCP Options |

| |

| FTP Control - File Transfer Protocol |

| Line 1: PORT 192,168,0,1,9,39 |

| |

| FCS - Frame Check Sequence |

| FCS (Calculated): 0xF4C04A4F |

\====================================================================/

下图验证了服务器端的确从端口20打开到端口1663的TCP连接:

/====================================================================\ | TCP - Transport Control Protocol |

| Source Port: 20 ftp-data |

| Destination Port: 1663 |

| Sequence Number: 2578824336 |

| Ack Number: 0 |

| Offset: 6 (24 bytes) |

| Reserved: %000000 |

| Flags: %000010 |

| 0. .... (No Urgent pointer) |

| .0 .... (No Ack) |

| .. 0... (No Push) |

| .. .0.. (No Reset) |

| .. ..1. SYN |

| .. ...0 (No FIN) |

| |

| Window: 3731 |

| Checksum: 0x8A4C |

| Urgent Pointer: 0 |

| No TCP Options |

| |

| TCP Options |

| Options Type: 2 Maxinum Segment Size |

| Length: 4 |

| MSS: 1460 |

| |

| FCS - Frame Check Sequence |

| FCS (Calculated): 0x5A1BD023 |

\====================================================================/

当使用FTP时候,网络中的防火墙必须要声明相应的端口,防火墙必须要跟踪FTP对话然后检查

PORT命令,防火墙必须要参与从服务器端到客户端在PORT命令中指定的端口连接的建立过程。

如果网络中使用了NA T(注:网络地址翻译),那么NAT的网关同样也需要声明相应的端口,网

关需要把在PORT命令中指定的IP地址翻译成分配给客户的地址,然后重新计算TCP的Checksum

;如果网关没有正确地执行这个操作,FTP就失败了。

黑客可能会利用FTP支持第三方特性这一特点,在PORT命令中设置IP地址和端口号参数来指定

一台目标主机的地址和端口号(有时候称这种攻击为FTP反弹攻击),例如黑客可以让一台FTP

服务器不断地从它的源端口20发送TCP

SYN包给一系列目的端口,让FTP服务器看起来正在进行端口扫描,目的主机不知道攻击来自黑

客的主机,看起来攻击象是来自FTP服务器。一些常用的FTP应用在PORT命令中设置地址为0.0.

0.0,这样做的意图是让FTP服务器只需要与打开控制连接的相同客户进行数据连接,设置地址

为0.0.0.0可能会让防火墙不知所措。例如,CISCO

PIX IOS 6.0以上版本的PIX(注:CISCO硬件防火墙设备,6.0以上版本为其修正了相关的FTP协议)

要求数据连接的IP地址与已经存在的控制连接的IP地址必须相同。这样做的原因是防止黑客用

PORT命令来攻击别的机器,虽然一些FTP应用设置IP地址为0.0.0.0不是有意图的攻击,但在PI

X修正协议环境下的确引起了一些问题,同时对其他不允许第三方模式和避免FTP反弹攻击的防

火墙来说,这也会引起相同的问题。

>>2.2 FTP Passive模式

下面的列表描述了Passive模式的FTP的步骤,步骤1到3和Port模式FTP相同,步骤9到11同样与

Port模式FTP最后三步相同。

1、客户端发送一个TCP

SYN(TCP同步)包给服务器段众所周知的FTP控制端口21,客户端使用暂时的端口作为它的源

端口;

2、服务器端发送SYN

ACK(同步确认)包给客户端,源端口为21,目的端口为客户端上使用的暂时端口;

3、

客户端发送一个ACK(确认)包;客户端使用这个连接来发送FTP命令,服务器端使用这个连接

来发送FTP应答;

4、

当用户请求一个列表(List)或者发送或接收文件时候,客户端软件发送PASV命令给服务器端表

明客户端希望进入Passive模式;

5、

服务器端进行应答,应答包括服务器的IP地址和一个暂时的端口,这个暂时的端口是客户端在

打开数据传输连接时应该使用的端口;

6、

客户端发送一个SYN包,源端口为客户端自己选择的一个暂时端口,目的端口为服务器在PASV

应答命令中指定的暂时端口号;

7、服务器端发送SYN

ACK包给客户端,目的端口为客户端自己选择的暂时端口,源端口为PASV应答中指定的暂时端

口号;

8、客户端发送一个ACK包;

9、

发送数据的主机以这个连接来发送数据,数据以TCP段(注:segment,第4层的PDU)形式发送(

一些命令,如STOR表示客户端要发送数据,RETR表示服务器段发送数据),这些TCP段都需要

对方进行ACK确认;

10、

当数据传输完成以后,发送数据的主机以一个FIN命令来结束数据连接,这个FIN命令需要另一

台主机以ACK确认,另一台主机也发送一个FIN命令,这个FIN命令同样需要发送数据的主机以A

CK确认;

11、

客户端能在控制连接上发送更多的命令,这可以打开和关闭另外的数据连接;有时候客户端结

束后,客户端以FIN命令来关闭一个控制连接,服务器端以ACK包来确认客户端的FIN,服务器

同样也发送它的FIN,客户端用ACK来确认。

下图图示了Passive模式FTP的开始几个步骤:

/====================================================================\ | |

| [ ftp Client ] [ ftp Server ] |

| |

| (TCP:21 连接初始化,控制端口) |

| SYN |

| Port xxxx ----------------------> Port 21 [TCP] |

| SYN+ACK |

| Port xxxx <---------------------- Port 21 |

| ACK |

| Port xxxx ----------------------> Port 21 |

| |

| (PASV操作: 被动连接数据端口初始化) |

| |

| PASV |

| Port xxxx ----------------------> Port 21 |

| PASV OK, IP, Port yyyy |

| Port xxxx <---------------------- Port 21 |

| SYN |

| Port zzzz ----------------------> Port yyyy |

| SYN+ACK |

| Port zzzz <---------------------- Port yyyy |

| ACK |

| Port zzzz ----------------------> Port yyyy |

| |

| |

| (数据操作: 数据传输) |

| List, Retr or Stor |

| Port xxxx ----------------------> Port 21 |

| Data + ACK |

| Port zzzz <---------------------> Port yyyy |

| . |

| . |

| . |

| |

\====================================================================/ 一个PASV请求要求服务器在服务器选择的一个新的端口上接受数据连接,PASV命令没有任何参

数,服务器端的回应只是一行显示服务器IP地址和服务器接受连接的TCP端口号。

下图显示了服务器对PASV命令的回应,服务器告诉客户端它在端口5365(192,168,179,100,20

,245)上进行监听,计算端口的方法是20*256+245=5365;

/====================================================================\ | TCP - Transport Control Protocol |

| Source Port: 21 ftp |

| Destination Port: 1249 |

| Sequence Number: 4239887193 |

| Ack Number: 36925357 |

| Offset: 5 (20 bytes) |

| Reserved: %000000 |

| Flags: %011000 |

| 0. .... (No Urgent pointer) |

| .1 .... Ack |

| .. 1... Push |

| .. .0.. (No Reset) |

| .. ..0. (No SYN) |

| .. ...0 (No FIN) |

| |

| Window: 8760 |

| Checksum: 0x3EAB |

| Urgent Pointer: 0 |

| No TCP Options |

| |

| FTP Control - File Transfer Protocol |

| Line 1: PASV 192,168,0,1,100,20,245 |

| |

| FCS - Frame Check Sequence |

| FCS (Calculated): 0xBED4346D |

\====================================================================/ 当收到PASV命令的回应后,客户端打开一个TCP连接,源端口为一个暂时的端口,目的端口为

服务器提供的暂时端口。

下图显示了客户端的TCP连接建立过程,正如上面所说,目的端口为5365。

/====================================================================\ | TCP - Transport Control Protocol |

| Source Port: 1250 |

| Destination Port: 5365 |

| Sequence Number: 36931503 |

| Ack Number: 0 |

| Offset: 7 (28 bytes) |

| Reserved: %000000 |

| Flags: %000010 |

| 0. .... (No Urgent pointer) |

| .0 .... (No Ack) |

| .. 0... (No Push) |

| .. .0.. (No Reset) |

| .. ..1. SYN |

| .. ...0 (No FIN) |

| |

| Window: 8192 |

| Checksum: 0x1A57 |

| Urgent Pointer: 0 |

| No TCP Options |

| |

| TCP Options |

| Options Type: 2 Maxinum Segment Size |

| Length: 4 |

| MSS: 1460 |

| |

| FCS - Frame Check Sequence |

| FCS (Calculated): 0x5A1BD023 |

\====================================================================/

大多数人认为在防火墙网络环境中Passive模式比Port模式的问题小,但我们注意到在Passive

模式下,客户端打开一个暂时的目的端口连接,一些防火墙或者CISCO设备的访问列表(ACL)可

能会阻止这种连接,同样服务器的回应也是从一个暂时的端口到一个暂时的端口,防火墙或者

CISCO的访问列表也会阻止这种连接。在CISCO路由器上你可以用访问列表关键字"established

"来避免第二个问题,"established"关键字告诉路由器允许带ACK字端的包通过,服务器端的S

YN ACK包带有ACK字端。在新版本PIX IOS中也可以通过fixit关键字建立针对ftp协议的深层状

态检测过滤,其他大多数状态检测防火墙例如LinuxNetfilters也支持ftp协议的状态检测,进行

准确的PASV动态端口过滤。

>>2.3 用户名和口令的明文传输

FTP另一个声名狼藉的问题是它以明文方式发送用户名和口令,也就是不加密地发送。任何人

只要在网络中合适的位置放置一个协议分析仪就可以看到用户名和口令;FTP发送的数据也是

以明文方式传输,通过对ftp连接的监控和数据收集就可以收集和重现ftp的数据传输并实

协议连接回放。事实上很多用户把相同的用户名和口令用在不同的应用中,这样这个问题可能

看起来更为糟糕;如果黑客收集到FTP口令,他们也可能就得到了你在线帐号或者其他一些

机密数据的口令。

下面是通过tcpdump -- 一个著名的网络协议分析程序抓取的ftp的完整通讯过程。

/===================================================================== ==========\

21:55:36.682402 IP 192.168.0.1.2323 > 192.168.0.3.21: S 2047626269:2047626269(0)

win 65535 (DF)

21:55:36.682792 IP 192.168.0.3.21 > 192.168.0.1.2323: S 3917547047:3917547047(0)

ack 2047626270 win 65535 (DF)

21:55:36.682855 IP 192.168.0.1.2323 > 192.168.0.3.21: . ack 1 win 65535 (DF)

21:55:36.854899 IP 192.168.0.3.21 > 192.168.0.1.2323: P 1:115(114) ack 1 win 65535

(DF)

0x0000 4500 009a d570 4000 8006 a398 c0a8 0003 E....p@.........

0x0010 c0a8 0001 0015 0913 e981 0628 7a0c 4c1e ...........(z.L.

0x0020 5018 ffff cd50 0000 3232 302d 5468 6973 P....P..220-This

0x0030 2073 6572 7665 7220 6973 2066 6f72 2070 .server.is.for.p

0x0040 7269 7661 7465 2075 7365 206f 6e6c 790d http://biz.doczj.com/doc/a55712805.html,e.only.

0x0050 0a32 .2

21:55:37.016115 IP 192.168.0.1.2323 > 192.168.0.3.21: . ack 115 win 65421 (DF)

0x0000 4500 0028 b8d0 4000 8006 c0aa c0a8 0001 E..(..@.........

0x0010 c0a8 0003 0913 0015 7a0c 4c1e e981 069a ........z.L.....

0x0020 5010 ff8d 6f83 0000 P...o...

21:55:37.016471 IP 192.168.0.3.21 > 192.168.0.1.2323: P 115:154(39) ack 1 win

65535 (DF)

0x0000 4500 004f d586 4000 8006 a3cd c0a8 0003 E..O..@.........

0x0010 c0a8 0001 0015 0913 e981 069a 7a0c 4c1e ............z.L.

0x0020 5018 ffff 074f 0000 3232 3020 506c 6561 P....O..220.Plea

0x0030 7365 2065 6e74 6572 2079 6f75 7220 6c6f se.enter.your.lo

0x0040 6769 6e20 6e61 6d65 206e 6f77 2e0d 0a http://biz.doczj.com/doc/a55712805.html,.now...

21:55:37.022282 IP 192.168.0.1.2323 > 192.168.0.3.21: P 1:12(11) ack 154 win 65382

(DF)

0x0000 4500 0033 b8d2 4000 8006 c09d c0a8 0001 E..3..@.........

0x0010 c0a8 0003 0913 0015 7a0c 4c1e e981 06c1 ........z.L.....

0x0020 5018 ff66 c4eb 0000 5553 4552 2065 6c6c http://biz.doczj.com/doc/a55712805.html,ER.ell

0x0030 790d 0a y..

<用户名:elly>

21:55:37.059430 IP 192.168.0.3.21 > 192.168.0.1.2323: P 154:188(34) ack 12 win

65524 (DF)

0x0000 4500 004a d58b 4000 8006 a3cd c0a8 0003 E..J..@.........

0x0010 c0a8 0001 0015 0913 e981 06c1 7a0c 4c29 ............z.L)

0x0020 5018 fff4 b343 0000 3333 3120 5061 7373 P....C..331.Pass

0x0030 776f 7264 2072 6571 7569 7265 6420 666f word.required.fo

0x0040 7220 656c 6c79 202e 0d0a r.elly....

21:55:37.060301 IP 192.168.0.1.2323 > 192.168.0.3.21: P 12:27(15) ack 188 win

65348 (DF)

0x0000 4500 0037 b8db 4000 8006 c090 c0a8 0001 E..7..@.........

0x0010 c0a8 0003 0913 0015 7a0c 4c29 e981 06e3 ........z.L)....

0x0020 5018 ff44 e479 0000 5041 5353 2038 3838 P..D.y..PASS.888

0x0030 3838 3838 380d 0a 88888..

<密码:88888888>

21:55:37.243954 IP 192.168.0.3.21 > 192.168.0.1.2323: . ack 27 win 65509 (DF)

0x0000 4500 0028 d59d 4000 8006 a3dd c0a8 0003 E..(..@.........

0x0010 c0a8 0001 0015 0913 e981 06e3 7a0c 4c38 ............z.L8

0x0020 5010 ffe5 6ec8 0000 0000 0000 0000 P...n.........

21:55:37.285586 IP 192.168.0.3.21 > 192.168.0.1.2323: . 188:1648(1460) ack 27 win

65509 (DF)

0x0000 4500 05dc d5a4 4000 8006 9e22 c0a8 0003 E.....@...."....

0x0010 c0a8 0001 0015 0913 e981 06e3 7a0c 4c38 ............z.L8

0x0020 5010 ffe5 0300 0000 3233 302d 5765 6c63 P.......230-Welc

0x0030 6f6d 6520 746f 2076 6920 4654 5020 7365 ome.to.vi.FTP.se

0x0040 7276 6572 0d0a 3233 302d 0d0a 3233 302d rver..230-..230-

0x0050 4375 Cu

<明文数据传输>

\===================================================================== ==========/

>>3.0<< 改进: ftp安全扩展, SSL/TLS

在传统的ftp通讯和传输过程中可以看出,ftp协议提供了一种简单实用的网络文件传输方法,

但是缺陷也是显而易见的。传统ftp服务缺乏对数据的机密性和完整性保护,对通讯双方也没

有可靠的认证措施,同时还存在着明文信息传输的弱点--

在同一个网络上的任何用户都可能窃取到重要的信息。虽然近年来出现了很多种ftp的替代服

务,例如ssh加密通道的sftp/scp,或使用IPSEC协议的VPN通道等等,但是在大多数情况下,f

tp的通用性和易用性使得它在很长一段时间内必然无法被完全取代。所以如同其他一系列古董

服务(例如SMTP/HTTP)一样,近年来也出现了一些不需要对ftp协议自身做完全更改的协议扩展

模块,能够良好的完成兼容性和功能扩展。ftp SSL/TLS Extension就是其中一种方式。

FTP安全扩展: http://biz.doczj.com/doc/a55712805.html,/rfc/rfc2228.txt

http://biz.doczj.com/doc/a55712805.html,/rfc/rfc2246.txt

FTP安全扩展,SSL接口草案:

http://biz.doczj.com/doc/a55712805.html,/internet-drafts/draft-murray-auth-ftp-ssl-13.txt

>>3.1 SSL/TLS简介

先说一下SSL/TLS协议,SSL(Secure Socket

Layer)最早是netscape公司设计的用于HTTP协议加密的安全传输协议,SSL工作于TCP协议的传

输层(TCP层)和应用程序之间。作为一个中间层,应用程序只要采用SSL提供的一套SSL 套接字A

PI来替换标准的Socket套接字,就可以把程序转换为SSL化的安全网络程序,在传输过程中将

由SSL协议实现数据机密性和完整性的保证。SSL协议的当前版本为3.0,当SSL取得大规模成功

后,IETF(http://biz.doczj.com/doc/a55712805.html,)将SSL作了标准化,规范为RFC2246,并将其称为TLS(Transport Layer

Security)。从技术上讲,TLS1.0与SSL3.0的差别非常微小,SSL由于其历史应用的原因在当

前的商业应用程序之中使用得更多一些。

TLS协议,RFC 2246: http://biz.doczj.com/doc/a55712805.html,/rfc/rfc2246.txt

>>3.2 数据机密性和完整性

前面多次提到了数据的机密性和完整性两个方面,在此略微解释一下。数据的机密性确保数据

信息机密可靠,不会被没有权限的对象所访问和浏览到,基本的机密性保护手段就是数据加密

;而数据的完整性则是指数据在传输和存储过程中将保证数据的唯一和完整,不会被恶意篡改

着所修改,保证数据完整性的基本手段主要有数字签名。

这里就牵扯到数据加密领域的两类算法,加密算法和散列算法。加密算法从数学原理上看可以

分为对称加密和非对称加密,从数据处理方法上可以分为流加密和分组加密,本文重点不在此

,不再赘述,只举例几种常用的加密算法: DES, 3DES, AES,

BlowFish,RC2-RC6等等。数据签名算法是加密领域的另一套方法,又叫数据散列算法,用于

对数据进行处理生成一个唯一的等长签名字符串,原数据的长度可能是任意的,而任意两个相

似但哪怕只有少许细微差别的数据集,都将产生差别非常大的等长签名字符串,这个字符串在

一般意义下被认为是极少会发生空间冲突(重复)的,因此数据散列算法对于确保数据的唯一

是一种必要的手段;常见的数字散列算法有MD5,SHA-1,CAST-256等等。

可以看出,面对如此多种类的加密算法,应用程序处理起来是很繁琐的。SSL在这个层次中就

提供了一种自动的算法协商,密钥交换和数据加密过程。SSL协议分为两部分:Handshake Protocol和Record

Protocol,HandShake部分用于处理通讯双方的算法协商和密钥交换过程,Record部分用于对

数据进行加密传输。

整个的SSL基本通讯过程如下:

/====================================================================\ | |

| [ SSL Client ] [ SSL Server ] |

| |

| (TCP三步握手) |

| (SSL套结字连接) |

| . |

| . SSLSocket() |

| . Bind() |

| SSLSocket() -------------------> |

| <------------------- Connect |

| (连接加密算法协商) |

| ClientHello() -------------------> |

| (服务器端算法确认和证书发送)|

| ServerHello |

| Certificate* |

| ServerKeyExchange* |

| CertificateRequest* |

| <------------------- ServerHelloDone |

| (客户端证书验证与密钥交换) |

| Certificate* |

| ClientKeyExchange |

| CertificateVerify* |

| [ChangeCipherSpec] |

| Finished -------------------> (数据加密算法协商) |

| [ChangeCipherSpec] |

| <------------------- Finished |

| (应用数据加密传输) |

| Application Data <------------------> Application Data |

| ... |

\====================================================================/

SSL套结字通讯过程如下:

1, Client和Server双方程序通过ssl socket系列函数替换BSD Socket系列函数;

2, Client通过TCP协议连接到Server端应用程序;

3, Client发起连接质询,发送自身所能实现的"安全集合",其中包含加密和签名算法协商;4, Server回应连接,包含本次通讯所使用的算法集合,以及Server端证书;

5, Client收到证书后,使用Server端协商的算法,用Server端证书中包含的Server公钥加密一个

随机序列,作为一个挑战质询发回Server;

6, Server收到加密密文,使用自身的私钥进行数据解密,如果成功,代表SA协商匹配,可以

开始通讯;

7, 可选过程,继续发起Client端验证过程,Client端发出Client证书,进行Client端验证过程;

8, 可选过程,数据传输过程加密算法协商;

9, 协商完毕,开始加密数据传输;

可以看出,SSL Socket通讯过程相比正常的BSD Socket,只不过多了一个安全集合交换协商的过程,

这个过程由SSL实现自身来完成,相对于应用程序,只要采用了SSL Socket,其他的过程都是

透明的。SSL通讯过程中的第3-6步是必须操作,包含了Server端验证过程和加密算法协商,类

似于TCP协议的三步握手过程,这个过程中通过公钥加密算法加密密钥(公钥)和解密秘钥(私钥)

不同的功能,巧妙地实现了密钥交换和算法协商,并且由于解密秘钥不需要在网络上传输,这样

就同时实现了数据通讯过程的保密性和内部应用程序协议的保密性。在第7步进行Client 端证书

的验证过程中,由于当前网络环境下PKI和CA体系尚不完善,并且由于SSL设计的工作环境相对

对Client端的安全需求并不很高,所以Client端验证一般作为一种可选手段来实现,取决于应

用程序的安全等级需求。

SSL数据通讯的机密性特性就是由上面的过程完成的,在算法协商过程中除了加密算法的协商外

还会交换一个数据签名算法,用于对数据生成一个唯一的散列校验码,防止在传输过程中数据

被篡改,数据签名过程实现了通讯过程的完整性保证。

对应于SSL所提供的两种安全特性,机密性和保密性,ssl定义了四个安全级别,分别是这两种

特性的状态组合:

'C' - Clear - 没有任何保护

'S' - Safe - 完整性实现,但是没有机密性

'E' - Confidential - 机密性实现,但是没有完整性

'P' - Private - 同时实现机密性和完整性

ftp的ssl扩展使用了其中的两种状态

1)Clear (requested by 'PROT C')

2)Private (requested by 'PROT P')

在连接过程中通过ftp扩展指令PROT来完成状态的切换。

>>3.3 ssl FTP扩展

在RFC 2228中,ftp协议扩展了如下指令:

AUTH (Authentication/Security Mechanism),

ADAT (Authentication/Security Data),

PROT (Data Channel Protection Level),

PBSZ (Protection Buffer Size),

CCC (Clear Command Channel),

MIC (Integrity Protected Command),

CONF (Confidentiality Protected Command), and

ENC (Privacy Protected Command).

其中和SSL扩展相关的主要指令有以下几条:

AUTH (协商扩展验证): 指定扩展认证方法,SSL或TLS;

PBSZ (协商保护缓冲区): 制定保护缓冲区,SSL/TLS模式中必须为0;

PROT (切换保护级别): 切换保护级别,可以为"C"无保护,或"P"保护级别;

在一个典型的ftp ssl通讯过程中指令序列如下:

/====================================================================\ | Client Server |

| control data data control |

|====================================================================| | |

| socket() |

| bind() |

| socket() |

| connect() -------------------------------------------> accept() |

| <------------------------------------------- 220 |

| AUTH TLS -------------------------------------------> |

| <------------------------------------------- 234 |

| TLSneg() <------------------------------------------> TLSneg() |

| PBSZ 0 -------------------------------------------> |

| <------------------------------------------- 200 |

| PROT P -------------------------------------------> |

| <------------------------------------------- 200 |

| USER elly -------------------------------------------> |

| <------------------------------------------- 331 |

| PASS **** -------------------------------------------> |

| <------------------------------------------- 230 |

| |

\====================================================================/

一个SSL FTP的连接过程实例:

/====================================================================\ | |

| WinSock 2.0 -- OpenSSL 0.9.7d 17 Mar 2004 |

| [R] Connecting to 192.168.21.3 -> IP=192.168.21.3 PORT=2121 |

| [R] Connected to 192.168.21.3 |

| [R] 220 Please enter your login name now. |

| [R] AUTH TLS (认证方法)|

| [R] 234 AUTH Command OK. Initializing SSL connection. |

| [R] Connected. Negotiating SSL/TLS session.. |

| [R] SSL/TLS negotiation successful... (协商关联)|

| [R] TLSv1/SSLv3 encrypted session using cipher AES256-SHA (256 bits)

| [R] PBSZ 0 (PBSZ设置)|

| [R] 200 PBSZ Command OK. Protection buffer size set to 0. |

| [R] USER elly (ftp传统认证)|

| [R] 331 Password required for elly . |

| [R] PASS (hidden) |

| [R] 230 User elly logged in. |

| [R] SYST |

| [R] 215 UNIX Type: L8 , CP:936 |

| [R] FEAT (扩展指令测试)|

| [R] 211-Extensions supported: |

| [R] SIZE |

| [R] MDTM |

| [R] MDTM YYYYMMDDHHMMSS filename |

| [R] LIST -laT |

| [R] STAT -laT |

| ... |

| [R] AUTH SSL |

| [R] AUTH TLS |

| [R] PROT |

| [R] PBSZ |

| [R] SSCN |

| [R] UTF8 |

| [R] 211 END |

| [R] CLNT FlashFXP 2.2.985 |

| [R] 213 client type set to FlashFXP 2.2.985. |

| [R] PWD (传统通讯过程)|

| [R] 257 "/" is current directory |

| [R] TYPE A |

| [R] 200 Type set to ASCII. |

| [R] PROT P (切换到保护模式)|

| [R] 200 PROT P accepted. |

| [R] PASV |

| [R] 227 Entering Passive Mode (192,168,21,3,5,122) |

| [R] Opening data connection IP: 192.168.21.3 PORT: 1402 |

| [R] LIST -al |

| [R] Connected. Negotiating SSL/TLS session.. (加密通讯过程)|

| [R] 150 Opening ASCII data connection for ls / using SSL/TLS. |

| [R] SSL/TLS negotiation successful... |

| [R] TLSv1/SSLv3 encrypted session using cipher AES256-SHA (256 bits)

| [R] 226-free disk space under this directory : 101 mb |

| [R] 226 Transfer finished successfully. Data connection closed . |

| [R] List Complete: 181 bytes in 0.14 seconds (1.26 KBps) |

| |

\====================================================================/

在ssl ftp中,有以下几个特殊点:

1, AUTH是可选指令,因为ssl ftp实现的方式不同而存在,详见下一节explicit SSL

与implicit SSL;

2, PBSZ和PROT是必须指令,用于切换到保护通道模式;

3, AUTH,PBSZ和PROT指令是实现SSL认证方式的必须方法,但可以与传统的User/Password

模式共存,或只取其一;

4, SSL认证方法的SSL认证过程(AUTH/PBSZ)和传统模式认证并无严格的先后顺序关联,可能在

用户名和密码之前,也可能在之后;但出于安全因素,最好在User/Password传输之前切换到安全模式,可以确保User/Password的传输安全;

5, 在explicit SSL模式中,可以在任何时间切换到保护模式,如第四条所述;在implicit SSL模式中,初始化连接将直接采用SSL Socket建立,不需要AUTH指令切换。

>>3.4 Explicit SSL和Implicit SSL

由于历史和软件兼容性因素,ssl FTP的实现有两种方式,分别是Explicit SSL和Implicit SSL,上面的大部分数据都是以explicit SSL为范例。

Explicit SSL(外部SSL),又被称为AUTH SSL方式;Explicit SSL保持了与传统ftp服务的良好兼容性,以一个ftp服务扩展指令的方式存在。初始化连接可以采用与传统ftp兼容的连接模

式,当需要传输加密信息时使用AUTH SSL指令切换到保护模式。使用Explicit SSL时Server

必须完整地实现AUTH/PBSZ/PROT等指令。

Implicit SSL(隐含SSL),是一个全新的ftp实现方式,在TCP三步握手完成之后就直接使用SSL

Socket进行协商和通讯,之后将全程采用SSL加密连接。在这种模式中一般ftp server将监听在

一个新的服务端口,IANA指定ftps:tcp:990为implicit SSL ftp的默认端口。因为在连接初始阶段就自动由SSL实现完成了协商,因此implicit模式中AUTH指令是可选的。

在不考虑兼容性的因素下,在服务期端最好优先使用implicit SSL模式,可以获得更好的保密特性。

比较两种ssl ftp实现模式区别如下:

/===================================================================== =\

| explicit implicit |

| client server client server |

|===================================================================== =|

| | |

| connect() ------> -+-明文| sslConnect() ------> 加密|

| <------ 220 | | <------ 220 -+ |

| AUTH SSL ------> | | USER *** ------> | |

| <------ 234 -+ | <------ 331 | |

| TLSneg() <-----> TLSneg() -+-加密| PASS *** ------> | |

| <------ 200 | | <------ 230 | |

| USER *** ------> | | LIST <-----> ... | |

| <------ 331 | | RETR <-----> ... | |

| PASS *** ------> | | ... | |

| <------ 230 | | | |

| LIST/RETR <-----> ... | | sslClose() <-----> ... -+ |

| close() <-----> ... -+ | |

| | |

\===================================================================== =/

>>3.5 一些杂乱图示

在3.3种引用了一个Explicit SSL连接指令序列,这里是对应的Implicit SSL连接过程:

/===================================================================== =\

| WinSock 2.0 -- OpenSSL 0.9.7d 17 Mar 2004 |

| [R] Connecting to 192.168.21.3 -> IP=192.168.21.3 PORT=9909 |

| [R] Connected to 192.168.21.3 |

| [R] Connected. Negotiating SSL/TLS session.. |

| [R] SSL/TLS negotiation successful... |

| [R] TLSv1/SSLv3 encrypted session using cipher AES256-SHA (256 bits) |

| [R] 220 Please enter your login name now. |

| [R] PBSZ 0 |

| [R] 200 PBSZ Command OK. Protection buffer size set to 0. |

| [R] USER elly |

| [R] 331 Password required for elly . |

| [R] PASS (hidden) |

| [R] 230 User elly logged in. |

| [R] SYST |

| [R] 215 UNIX Type: L8 , CP:936 |

| [R] PROT P |

| [R] 200 PROT P accepted. |

| [R] PASV |

| [R] 227 Entering Passive Mode (192,168,21,3,5,122) |

| [R] Opening data connection IP: 192.168.21.3 PORT: 1402 |

| [R] LIST -al |

| [R] Connected. Negotiating SSL/TLS session.. |

| [R] 150 Opening ASCII data connection for ls / using SSL/TLS. |

| [R] SSL/TLS negotiation successful... |

| [R] TLSv1/SSLv3 encrypted session using cipher AES256-SHA (256 bits) |

| [R] List Complete: 181 bytes in 0.17 seconds (1.04 KBps) |

\===================================================================== =/

Explicit SSL模式下ftp client <-- server的通讯数据,可以看到AUTH SSL之后的指令

全部都已经加密,无法看到。对应2.3节中的传统通讯过程,这确保了传输过程中数据无法被窃

听到。在Implicit SSL模式中,从初始化连接开始的数据将全部加密,无法分析,因此此处不

摘录。

/===================================================================== =\

21:34:22.095241 IP 192.168.0.1.2279 > 192.168.0.3.999: S 1727744887:1727

744887(0) win 65535 (DF)

0x0000 4500 0030 e6b7 4000 8006 92bb c0a8 0001 E..0..@.........

0x0010 c0a8 0003 08e7 03e7 66fb 4b77 0000 0000 ........f.Kw....

0x0020 7002 ffff 428a 0000 0204 05b4 0101 0402 p...B...........

21:34:22.095576 IP 192.168.0.3.999 > 192.168.0.1.2279: S 3598555607:3598

555607(0) ack 1727744888 win 65535 (DF)

0x0000 4500 0030 8d9e 4000 8006 ebd4 c0a8 0003 E..0..@.........

0x0010 c0a8 0001 03e7 08e7 d67d 99d7 66fb 4b78 .........}..f.Kx

0x0020 7012 ffff d223 0000 0204 05b4 0101 0402 p....#..........

21:34:22.095639 IP 192.168.0.1.2279 > 192.168.0.3.999: . ack 1 win 65535 (DF)

协议分析实验5-20100505

实验五应用层协议分析1 实验目的: 掌握http协议过程;了解FTP协议过程;了解SMTP协议过程;了解POP3协议过程。 实验类型:验证 实验学时:3学时 实验内容及方法: 观察http协议过程;观察一个FTP协议过程;观察SMTP协议过程;观察POP3协议过程 实验仪器设备:计算机、Ethereal软件。 实验步骤: 1.观察http协议过程。 (1)在计算机上打开Ethereal软件,进行报文截获。 (2)从浏览器上访问http://biz.doczj.com/doc/a55712805.html,页面,具体操作为打开网页,浏览网页,关掉网页。 (3)停止Ethereal的报文截获。 (4)通过在上网过程中截获报文,分析HTTP协议的报文格式和工作过程。 http通信基本路线是:打开TCP连接、发送图像请求、接收文件、当图像下载完成之后关闭连接。 HTTP协议的工作过程:1、主机先与服务器进行三次握手,握手成功后进行数据传输,得到WEB网页。2、传输完成后进行第二个三次握手握手,传送数据,得到图像。。。。依次进行三次握手得到完整的网页,浏览,断开连接。

2.观察一个FTP协议过程 (1)在计算机上打开Ethereal软件,进行报文截获。 (2)单击“开始/运行”,在运行框中输入命令,打开命令行窗口。 (3)在命令行窗口中,登陆FTP服务器,并下载文件。 (4)停止Ethereal的报文截获。 (5)通过在上网过程中截获报文,分析FTP报文格式和FTP协议的工作过程。 FTP通信工作过程:当命令提示符窗口输入FTP://IP address登录FTP服务器时,进行三次TCP握手,服务器默认为匿名用户登录,当服务器端不支持匿名用户登录时,等待客户端输入用户名和密码进行登录。验证通过后,服务器就会发出已经准备好的信息。再输入提取命令,从服务器上得到一个文件,输入下载命令下载文件,此时进行数据传输,传输完成后输入关闭命令断开连接,关闭数据连接,退出服务器。 3.观察SMTP协议过程 (1)在计算机上打开Ethereal软件,进行报文截获。 (2)使用用户代理发送邮件。 (3)停止Ethereal的报文截获。 (4)通过截获报文,分析SMTP的工作过程 A、安装代理发送邮件的软件 B、使用用户代理发送邮件,分析SMTP的工作过程:用代理发送邮件时,首先要使用代理服务登陆邮箱服务器,建立smtp tcp 连接,建立初始smtp通信。 C、然后发送邮件到smtp服务器,最后关闭smtp 和tcp 连接

计算机网络实验-HTTP、FTP协议分析

实验二HTTP、FTP协议分析 1. 本次实验包括HTTP、FTP两个协议的分析(详见一、二)。 2. 参考文档所述步骤,完成数据包的捕获并进行分析; 3. 认真撰写实验报告,叙述实验过程要层次分明,对关键的过程或结果截图说明、分析,回答实验文档所提的思考题、问题。 一、超文本传输协议(HTTP)分析 【实验目的】 掌握HTTP协议的原理和报文格式; 了解HTTP协议的工作过程; 了解应用层协议与传输层协议的关系。 【实验内容】 用浏览器打开网页,捕获HTTP报文并进行分析 编辑一个HTTP数据报文并进行发送,并捕获该报文进行分析。 【实验步骤】 步骤一:使用浏览器打开网页,捕获HTTP数据包并分析: (1) 在主机上打开协议分析仪,点击工具栏上的“过滤器”,“类型过滤器”的下拉列表中 选择“HTTP协议”,确定后开始进行数据捕获:

(2) 使用实验室主机上的浏览器,例如IE,打开一个网页,如URL是 HTTP//http://biz.doczj.com/doc/a55712805.html, (3) 在协议分析器中找到捕获的数据包,观察HTTP请求报文和响应报文,以及其中所使用的命令:

【思考问题】 结合实验过程中的实验结果,问答下列问题: 1. 当实验主机上同时打开多个浏览器窗口并访问同一WEB站点的不同页面时,系统是根据什么把返回的页面正确地显示到相应窗口的?一个主页是否只有一个连接? 2. 请求主页后,返回的浏览器内容的字节长度是多少? 3. 如果请求一个不存在的网页,服务器将会应答什么? 答: 1. 当实验主机上同时打开多个浏览器窗口并访问同一WEB站点的不同页面时,系统是根据地址信息把返回的页面正确地显示到相应窗口的,一个主页是只有一个连接。 2. 请求主页后,返回的浏览器内容的字节长度是 3. 如果请求一个不存在的网页,服务器将会应答404错误。 二、FTP协议分析 【实验目的】 1、掌握FTP协议的工作原理; 2、了解FTP协议的常用命令,并领会其链路管理、理解FTP的主动模式和被动模式 3、了解应用层协议与传输层协议的关系; 【实验内容】 1. 登录FTP服务器,并捕获FTP报文进行分析;

FTP协议分析报告

工程类实验报告 系:网络工程专业:网络工程年级: 2009 姓名:学号:实验课程:网络协议分析 实验室号:____田C510__ 实验设备号:实验时间: 12.26 指导教师签字:成绩: 实验四 FTP 协议分析实验 一、实验目的和要求 学习 Serv-U FTP Server 服务软件的基本配置和 FTP 客户端命令的使用,分析FTP 报文格式和 FTP 协议的工作过程。 二、实验原理 FTP 是文件传输协议(File Transfer Protocol)的简称。 FTP 基于 TCP 协议,它通过两个 TCP 连接来传输一个文件,一个是控制连接,另一个 是数据连接。相应的,在进行文件传输时,FTP 需要两个端口,分别用于控制连接端口(用 于给服务器发送指令以及等待服务器响应)和数据传输端口(在客户机和服务器之间发送 一个文件或目录列表)。 两种连接的建立都要经过一个“三次握手”的过程,同样,连接释放也要采用“四次 握手”方法。控制连接在整个回话期间一直保持打开状态。数据连接是临时建立的,在文件 传送结束后被关闭。 FTP 的连接模式有两种,PORT 和 PASV。PORT 模式是一个主动模式,PASV 是被动模式, 这里都是相对于服务器而言的。 当 FTP 客户以 PORT 模式连接服务器时,它首先动态地选择一个端口号连接服务器 的 21 端口,注意这个端口号一定是 1024 以上的,因为 1024 以前的端口都已经预先被定 义好,被一些典型的服务使用或保留给以后会用到这些端口的资源服务。经过 TCP 的三次 握手后,控制连接被建立。这时客户就可以利用这个连接向服务器发送指令和等待服务器响 应了。当需要从(或向)服务器传送数据时,客户会发出 PORT 指令告诉服务器用自己的 那个端口来建立一条数据连接(这个命令由控制连接发送给服务器),当服务器接到这一指 令时,会使用 20 端口连接客户指定的端口号,用以数据传送。 当FTP 客户以 PASV 模式连接服务器时,控制连接的建立过程与 PORT 模式相同,不 同的是,在数据传送时,客户不向服务器发送 PORT 指令而是发送 PASV 指令,服务器收 到 PASV命令后选择一个端口号发送给客户,客户选择一个本地端口号与服务器发送过来的 端口建立一条数据连接。 微软自带的 FTP 客户端命令工具不支持 PASV 模式。 三、实验设备与环境 实验设备和连接图如图 6-5 所示,一台锐捷 S2126G 交换机连接了 2 台 PC 机,分别命名为

计算机网络实验HTTPFTP协议分析

实验二H T T P、F T P协议分析 1. 本次实验包括HTTP、FTP两个协议的分析(详见一、二)。 2. 参考文档所述步骤,完成数据包的捕获并进行分析; 3. 认真撰写实验报告,叙述实验过程要层次分明,对关键的过程或结果截图说明、分析,回答实验文档所提的思考题、问题。 一、超文本传输协议(HTTP)分析 【实验目的】 掌握HTTP协议的原理和报文格式; 了解HTTP协议的工作过程; 了解应用层协议与传输层协议的关系。 【实验内容】 用浏览器打开网页,捕获HTTP报文并进行分析 编辑一个HTTP数据报文并进行发送,并捕获该报文进行分析。 【实验步骤】 步骤一:使用浏览器打开网页,捕获HTTP数据包并分析: (1) 在主机上打开协议分析仪,点击工具栏上的“过滤器”,“类型过滤器”的下拉列表中 选择“HTTP协议”,确定后开始进行数据捕获:

(2) 使用实验室主机上的浏览器,例如IE,打开一个网页,如URL是 HTTP//http://biz.doczj.com/doc/a55712805.html, (3) 在协议分析器中找到捕获的数据包,观察HTTP请求报文和响应报文,以及其中所使用的命令:

【思考问题】 结合实验过程中的实验结果,问答下列问题: 1. 当实验主机上同时打开多个浏览器窗口并访问同一WEB站点的不同页面时,系统是根据什么把返回的页面正确地显示到相应窗口的?一个主页是否只有一个连接? 2. 请求主页后,返回的浏览器内容的字节长度是多少? 3. 如果请求一个不存在的网页,服务器将会应答什么? 答: 1. 当实验主机上同时打开多个浏览器窗口并访问同一WEB站点的不同页面时,系统是根据地址信息把返回的页面正确地显示到相应窗口的,一个主页是只有一个连接。 2. 请求主页后,返回的浏览器内容的字节长度是 3. 如果请求一个不存在的网页,服务器将会应答404错误。 二、FTP协议分析 【实验目的】 1、掌握FTP协议的工作原理; 2、了解FTP协议的常用命令,并领会其链路管理、理解FTP的主动模式和被动模式 3、了解应用层协议与传输层协议的关系; 【实验内容】 1. 登录FTP服务器,并捕获FTP报文进行分析;

通信协议之FTP协议ftp协议详解

通信协议之 FTP 协议完全详解
?
1. 介绍 FTP 的目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对 用户透明和可靠高效地传送数据。虽然我们也可以手工使用它,但是它的主要 作用是供程序使用的。在阅读本文之前最好能够阅读 TCP 协议标准规范和 Tel net 协议标准规范。 2. 概览 在本节中我们将讨论一些表面上的问题,有些名词的定义请参阅 TCP 和 Telne t 参考文献。我们先介绍一下(1)字节大小,在 FTP 中字节大小有两个:逻辑 字节大小和用于传输的字节大小。后者通常是 8 位,而前者可不一定是多少 了。传输字节不必等于逻辑字节大小,也不必对数据结构进行解释。(2)控 制连接是建立在 USER-PIT 和 SERVER-PI 之间用于交换命令与应答的通信链 路。(3)数据连接是传输数据的全双工连接。传输数据可以发生在服务器 DT P 和用户 DTP 之间也可以发生在两个服务器 DTP 之间。(4)DTP:数据传输 过程(DTP)建立和管理数据连接,DTP 可以是主动的也可以是被动的。 (5)EOR 代表记录尾。(6)NTV 代表网络虚拟终端,它的定义与在 Telnet 协议中的定义一致。(7)NVFS 代表网络虚拟文件系统。(8)FTP 可以传输 非连续的文件,这些文件的一部分称为页。(9)PI 代表协议解释器。(10) 服务器 DTP 代表一种传输过程,它通常处于“主动”状态,它和侦听端口建立数 据连接,它还可以为传输和存储设置参数,并根据 PI 的指令传输数据。当然, DTP 也可以转入“被动”状态。(11)服务器 FTP 进程,它是和用户 FTP 进程 一起工作的,它由 PI 和 DTP 组成。至于用户 FTP 进程则是由 PI,DTP 和用

网络协议分析实验总结

实验一IP协议 练习一利用仿真编辑器发送IP数据包 描述:收发IPv4报文,不填上层协议. 问题:①查看捕获到得报文长度是60,和你编辑的报文长度不同,为什么? 最小帧长度为60,当不足60时,在源数据尾部添加0补足。 ②讨论,为什么会捕获到ICMP目的端口不可达差错报文? 差错报文的类型为协议不可达,因为上层协议为0,未定义。 练习二编辑发送IPV6数据包 描述:收发IPv6报文. 问题:①比较IPV4头,IPV6有了那些变化?IPV4的TTL字段在IPV6里对应那个字段? 比较IPv4 和IPv6 的报头,可以看到以下几个特点: ●字段的数量从IPv4 中的13(包括选项)个,降到了IPv6 中的8 个; ●中间路由器必须处理的字段从6 个降到了4 个,这就可以更有效地转发普通的 IPv6 数据包; ●很少使用的字段,如支持拆分的字段,以及IPv4 报头中的选项,被移到了IPv6 报 头的扩展报头中; ●● IPv6 报头的长度是IPv4 最小报头长度(20 字节)的两倍,达到40 字节。 然而,新的IPv6 报头中包含的源地址和目的地址的长度,是IPv4 源地址和目的 地址的4 倍。 对应:跳限制----这个8位字段代替了IPv4中的TTL字段。 练习三:特殊的IP地址 描述:直接广播地址包含一个有效的网络号和一个全“1”的主机号,只有本网络内的主机能够收到广播,受限广播地址是全为1的IP地址;有限广播的数据包里不包含自己的ip 地址,而直接广播地址里包含自身的ip地址 练习四: IP包分段实验 问题:讨论,数据量为多少时正好分两片?1480*2=2960 练习五: netstat命令 描述: C:>netstat –s ;查看本机已经接收和发送的IP报文个数 C:>netstat –s ;查看本机已经接收和发送的IP报文个数 C:>netstat –e ;观察以太网统计信息,

网络协议分析(免费下载)概要

实验报告 项目名称:网络协议分析工具的使用课程名称:计算机网络A 班级:计111 计111 姓名:葛一波叶博兴 学号:110776 110768 教师:张晓明 信息工程学院计算机系

一.实验目的 1.了解协议分析仪的使用方法和基本特点,掌握使用协议分析仪分析协议的方法。 2.了解Ping命令的工作过程; 3.了解FTP协议的工作过程。 二.实验前的准备 1.熟悉Ping命令,FTP协议; 2.了解协议分析仪的功能和工作原理; 3.了解Ethereal分析仪的使用方法; 4.阅读本实验的阅读文献; 三.实验内容 1.学习捕获选项的设置和使用。 2.使用Ethereal分析仪捕获一段Ping命令的数据流,并分析其工作过程。 3.登录ftp://http://biz.doczj.com/doc/a55712805.html,,并下载三个大小不同的文件(小于1KB、1KB—1MB、1MB 以上),使用Ethereal分析仪分析其工作过程。 4.设置显示过滤器,以显示所选部分的捕获数据。 5.保存捕获的数据,分别是TEXT文件和XML文件。 四.实验要求 1.完成上述实验内容; 2.记录捕获的关键数据,并分析协议工作过程。 3.上交实验报告和保存的实验数据。 Wireshark Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。网络封包分析软件的功能可想像成 "电工技师使用电表来量测电流、电压、电阻" 的工作 - 只是将场景移植到网络上,并将电线替换成网络线。 在过去,网络封包分析软件是非常昂贵,或是专门属于营利用的软件。Ethereal的出现改变了这一切。在GNUGPL通用许可证的保障范围底下,使用者可以以免费的代价取得软件与其程式码,并拥有针对其源代码修改及客制化的权利。Ethereal是目前全世界最广泛的网络封包分析软件之一。 软件简介 Wireshark使用目的以下是一些使用Wireshark目的的例子: 网络管理员使用Wireshark来检测网络问题,网络安全工程师使用Wireshark来检查资讯安全相关问题,开发者使用Wireshark来为新的通讯协定除错,普通使用者使用Wireshark 来学习网络协定的相关知识当然,有的人也会“居心叵测”的用它来寻找一些敏感信息…… Wireshark不是入侵侦测软件(Intrusion DetectionSoftware,IDS)。对于网络上的异常流量行为,Wireshark不会产生警示或是任何提示。然而,仔细分析Wireshark撷取的封包能够帮助使用者对于网络行为有更清楚的了解。Wireshark不会对网络封包产生内容的修改,

FTP协议分析报告

. 工程类实验报告 系:网络工程专业:网络工程年级: 2009 姓名:学号:实验课程:网络协议分析 实验室号:____田C510__ 实验设备号:实验时间: 12.26 指导教师签字:成绩: 实验四 FTP 协议分析实验 一、实验目的和要求 学习 Serv-U FTP Server 服务软件的基本配置和 FTP 客户端命令的使用,分析FTP 报文格式和 FTP 协议的工作过程。 二、实验原理 FTP 是文件传输协议(File Transfer Protocol)的简称。 FTP 基于 TCP 协议,它通过两个 TCP 连接来传输一个文件,一个是控制连接,另一个是 数据连接。相应的,在进行文件传输时,FTP 需要两个端口,分别用于控制连接端口(用 于给服务器发送指令以及等待服务器响应)和数据传输端口(在客户机和服务器之间发送 一个文件或目录列表)。 两种连接的建立都要经过一个“三次握手”的过程,同样,连接释放也要采用“四次 握手”方法。控制连接在整个回话期间一直保持打开状态。数据连接是临时建立的,在文件 传送结束后被关闭。 FTP 的连接模式有两种,PORT 和 PASV。PORT 模式是一个主动模式,PASV 是被动模式, 这里都是相对于服务器而言的。 当 FTP 客户以 PORT 模式连接服务器时,它首先动态地选择一个端口号连接服务器的 21 端口,注意这个端口号一定是 1024 以上的,因为 1024 以前的端口都已经预先被定义好, 被一些典型的服务使用或保留给以后会用到这些端口的资源服务。经过 TCP 的三次握手后,控 制连接被建立。这时客户就可以利用这个连接向服务器发送指令和等待服务器响应了。当需要从 (或向)服务器传送数据时,客户会发出 PORT 指令告诉服务器用自己的那个端口来建立一条 数据连接(这个命令由控制连接发送给服务器),当服务器接到这一指令时,会使用 20 端口 连接客户指定的端口号,用以数据传送。 当FTP 客户以 PASV 模式连接服务器时,控制连接的建立过程与 PORT 模式相同,不同 的是,在数据传送时,客户不向服务器发送 PORT 指令而是发送 PASV 指令,服务器收到

FTP协议分析论文

FTP协议分析 邬猛 (呼伦贝尔学院计算机科学与技术学院10级软件工程 2010121406) 摘要:本论文的目的是描述FTP协议的基础理论知识,分析FTP数据传输时所捕获的不同数据包,通过数据包的分析了解FTP的工作原理。FTP(文件传输协议)使得主机间可以共享文件。使用 TCP 生成一个虚拟连接用于控制信息,然后再生成一个单独的 TCP 连接用于数据传输。控制连接使用类似 TELNET 协议在主机间交换命令和消息。文件传输协议是TCP/IP 网络上两台计算机传送文件的协议,FTP是在TCP/IP网络和INTERNET上最早使用的协议之一,它属于网络协议组的应用层。FTP客户机可以给服务器发出命令来下载文件,上传文件,创建或改变服务器上的目录。 关键词:FTP 协议分析文件传输 1 引言 早期在Internet上传输文件,并不是一件容易的事,我们知道 Internet是一个非常复杂的计算机环境,有PC、工作站、MAC、服务器、大型机等等,而这些计算机可能运行不同的操作系统,有Unix、Dos、 Windows、MacOS等等,各种操作系统之间的文件交流,需要建立一个统一的文件传输协议,用来从一个主机把文件复制到另一个主机。虽然从一个系统向另一个系统传送文件看起来直截了当,但还有一些问题必须先解决。例如,两个文件系统可能使用不同的文件名约定,不同的方法表示文件和数据,不同的目录结构。所有这些问题已经由FTP以一种简单巧妙的方法解决了,FTP是应用层的协议,它基于传输层,为用户服务,它们负责进行文件的传输。本文就介绍了FTP的数据报文结构及其工作原理。 2FTP的工作模型 FTP采用了和HTTP一样的客户机/服务器方式,通过一系列的请求与响应来完成数据的传输。和Telnet一样,FTP需要提供一种登陆机制,即需要输入用户名和口令,才能进入远程FTP服务器,与其它客户机——服务器模型不同的是,FTP客户机与服务器之间用TCP 建立了双重连接,一个是控制连接、一个是数据连接。图2.1 给出了FTP的基本模型。客户有三个构件:用户接口、客户控制进程和客户数据传输进程。服务器有两个构件:服务器控制进程和服务器数据传输进程。控制连接是在控制进程之间进行的。数据连接是在数据传送进程间进行的。 图2.1 FTP基本模型

实验七 FTP报文格式及协议分析

实验七FTP报文格式及协议分析 【实验目的】 1、理解FTP的基本工作原理和工作过程; 2、熟悉常用的FTP命令。 【实验内容】 1、分析FTP报文的结构,熟悉各个字段的内容、功能、格式和取值范围; 2、单个或批量发送已经编辑好的FTP报文; 3、分析FTP的会话过程。 【实验原理】 FTP的连接 常用的文件传送协议包括FTP和TFTP,它们都是文件共享协议中的一个大类,即复制整个文件,其特点是:如果要存取一个文件,就必须先获得一个本地的文件副本。如果要修改文件,只能对文件的副本进行修改,然后再将修改后的文件副本传回到原结点。 FTP和其它C/S应用程序的不同是它在主机之间建立两条连接,一条连接用于数据传送,另一条连接用于传送控制信息(命令和响应)。FTP使用TCP的服务,熟知端口21用于控制连接,熟知端口20用于数据连接。 控制连接的步骤如下: ●服务器在熟知端口21发出被动打开,等待客户; ●客户使用临时端口发出主动打开。 数据连接的创建过程与其它不同,其步骤如下: ●客户使用临时端口发出被动打开; ●客户使用PORT命令把这个端口号发送到服务器; ●服务器收到端口号,并使用熟知端口20和收到的临时端口号发出打开。 FTP的通信 在异构计算机上运行的FTP客户和服务器必须进行通信,这两台计算机可以使用不同的操作系统、不同的字符集、不同的文件结构以及不同的文件格式,FTP必须使这种异构性得到兼容。通过控制连接的通信使用NVT ASCII字符集,通信通过命令和响应来完成。通过数据连接的通信遇到的异构问题由定义三个通信属性来解决: ●文件类型,FTP能够在数据连接上传送下列文件类型中的一种:ASCII文件、 EBCIDIC文件和图像文件,图像文件是一个二进制文件。

实验9_使用Wireshark分析FTP协议 V1

实验九使用Wireshark分析FTP协议 一、实验目的 分析FTP协议 二、实验环境 与因特网连接的计算机,操作系统为Windows,安装有Wireshark、IE等软件。三、实验步骤 HTTP和FTP都可以用来通过网络传输对象和文件,但它们的工作方式截然不同。HTTP侧重于传送立即浏览的文件或供暂时高速缓存于客户端的文件。HTTP还侧重于表达那些包含了用于规定文件格式的首部信息,以便让浏览器能正确解释内容。而FTP却更侧重于专门进行数据传输,让用户自己去决定文件在本机上的存储时间和如何处理数据。 FTP是一种有状态的协议。FTP客户端与服务器建立一个持续的会话,并通过这个会话发送多个请求。启动会话要输入用户名和密码,然而许多FTP服务器允许公开访问,即客户端可以使用匿名登录(anonymous)及随意设置的密码连接。 一旦建立连接,对FTP会话的操作类似命令行下的操作,用户在提示符下操作,并能浏览一些文件和目录。用户在浏览目录时,FTP服务器保持对用户目录位置的跟踪。用户还可以请求从服务器获取文件或向服务器存储文件,对这些请求的解释与当前工作的目录有关。 FTP总是为正在进行的控制通道维持一个TCP连接,然后建立一个独立的用于数据传输的TCP连接。控制通道通常建立在从客户端到FTP服务器端口21的连接,它用于描述每一个使用中的数据通道的属性,包括客户端或服务器是否启动传输,以及用什么IP地址和端口连接。 用RFC-Editor搜索功能找到定义FTP协议的RFC文档。搜索结果表明该RFC文档在URL ftp://http://biz.doczj.com/doc/a55712805.html,/in-notes/rfc 959.txt找到。如果你在浏览器窗口中输入以ftp://开头的URL,那么它将作为FTP客户端来获取想要的文件。 1、俘获FTP分组 (1)启动Wireshark嗅探器。 (2)浏览器地址栏中输入如下网址:ftp://http://biz.doczj.com/doc/a55712805.html,

(完整版)FTP协议详解

FTP 概述 文件传输协议(FTP)作为网络共享文件的传输协议,在网络应用软件中具有广泛的应用。FTP的目标是提高文件的共享性和可靠高效地传送数据。 在传输文件时,FTP 客户端程序先与服务器建立连接,然后向服务器发送命令。服务器收到命令后给予响应,并执行命令。FTP 协议与操作系统无关,任何操作系统上的程序只要符合FTP 协议,就可以相互传输数据。本文主要基于LINUX 平台,对FTP 客户端的实现原理进行详尽的解释并阐述如何使用C 语言编写一个简单的FTP 客户端。 FTP 协议 相比其他协议,如HTTP 协议,FTP 协议要复杂一些。与一般的C/S 应用不同点在于一般的C/S 应用程序一般只会建立一个Socket 连接,这个连接同时处理服务器端和客户端的连接命令和数据传输。而FTP协议中将命令与数据分开传送的方法提高了效率。 FTP 使用2 个端口,一个数据端口和一个命令端口(也叫做控制端口)。这两个端口一般是21 (命令端口)和20 (数据端口)。控制Socket 用来传送命令,数据Socket 是用于传送数据。每一个FTP 命令发送之后,FTP 服务器都会返回一个字符串,其中包括一个响应代码和一些说明信息。其中的返回码主要是用于判断命令是否被成功执行了。 命令端口 一般来说,客户端有一个Socket 用来连接FTP 服务器的相关端口,它负责FTP 命令的发送和接收返回的响应信息。一些操作如“登录”、“改变目录”、“删除文件”,依靠这个连接发送命令就可完成。 数据端口 对于有数据传输的操作,主要是显示目录列表,上传、下载文件,我们需要依靠另一个Socket来完成。 如果使用被动模式,通常服务器端会返回一个端口号。客户端需要用另开一个Socket 来连接这个端口,然后我们可根据操作来发送命令,数据会通过新开的一个端口传输。 如果使用主动模式,通常客户端会发送一个端口号给服务器端,并在这个端口监听。服务器需要连接到客户端开启的这个数据端口,并进行数据的传输。 下面对FTP 的主动模式和被动模式做一个简单的介绍。 主动模式(PORT) 主动模式下,客户端随机打开一个大于1024 的端口向服务器的命令端口P,即21 端口,发起连接,同时开放N +1 端口监听,并向服务器发出“port N+1” 命令,由服务器从它自己的数据端口(20) 主动连接到客户端指定的数据端口(N+1)。 FTP 的客户端只是告诉服务器自己的端口号,让服务器来连接客户端指定的端口。对于客户端的防火墙来说,这是从外部到内部的连接,可能会被阻塞。 被动模式(PASV)

TCP-IP协议抓包分析实验报告

TCP协议分析实验 学号: 姓名: 院系: 专业:

一.实验目的 学会使用Sniffer抓取ftp的数据报,截获ftp账号及密码,并分析TCP 头的结构、分析TCP的三次“握手”和四次“挥手”的过程,熟悉TCP 协议工作方式。 二.实验(软硬件以及网络)环境 利用VMware虚拟机建立网络环境,并用Serv-U FTP Server在计算机上建立FTP服务器,用虚拟机进行登录。 三.实验工具 sniffer嗅探器,VMware虚拟机,Serv-U FTP Server。 四.实验基本配置 Micrsoft Windows XP操作系统 五.实验步骤 1.建立网络环境。 用Serv-U FTP Server在计算机上建立一台FTP服务器,设置IP地址 为:,并在其上安装sniffer嗅探器。再并将虚拟机作为一台FTP客户 端,设置IP地址为:。设置完成后使用ping命令看是否连通。 2.登录FTP 运行sniffer嗅探器,并在虚拟机的“运行”中输入,点确定后出现 如下图的登录窗口: 在登录窗口中输入:用户名(hello),密码(123456)【在Serv-U FTP Server中已设定】,就登录FTP服务器了。再输入“bye”退出FTP 3.使用sniffer嗅探器抓包 再sniffer软件界面点击“stop and display”,选择“Decode”选 项,完成FTP命令操作过程数据包的捕获。 六.实验结果及分析 1.在sniffer嗅探器软件上点击Objects可看到下图:

再点击“DECODE(反解码)”按钮进行数据包再分析,我们一个一个的分析数据包,会得到登录用户名(hello)和密码(123456)。如下图: 2. TCP协议分析 三次握手: 发报文头——接受报文头回复——再发报文(握手)开始正式通信。

1-ftp协议分析实验模板

1. 实验报告如有雷同,雷同各方当次实验成绩均以0分计。 当次小组成员成绩只计学号、姓名登录在下表中的。 3. 在规定时间内未上交实验报告的,不得以其他方式补交,当次成绩按0分计。 4. 实验报告文件以PDF 格式提交。 Ftp 协议分析实验 一、打开“FTP 数据包”的“ftp 例1.cap”文件,进行观察分析,回答以下问题(见附件) 1、 FTP 客户端的mac 地址是多少? 2、 第1、2、3号报文的作用是什么? 3、 该数据包中共有多少个TCP 流? 4、 用什么用户和密码登录成功? 5、 该FTP 的命令连接和数据连接分别是什么样的连接? 6、 该FTP 的连接模式是那种?为什么? 7、 最后四个报文的作用是什么? 8、该数据包中有多少个ftp 的命令及应答,其含义分别是什么?

二、打开“FTP数据包”的“ftp例2.cap”文件,进行观察分析,回答以下问题 1、FTP服务器的ip是多少?FTP客户端的mac地址是多少? 2、该数据包中共有多少个TCP流? 3、最后用什么用户和密码登录成功? 4、该FTP的命令连接和数据连接分别是什么? 5、哪几个报文是FTP数据连接的三次握手报文? 6、哪几个报文是FTP数据连接的挥手报文(结束报文)? 7、该FTP的连接模式是那种?为什么?

三、在线捕获数据包实验 1. 阅读教材P303-308内容,熟悉FTP协议。 2. 完成P289的实例9-1。 本次实验完成后,请根据组员在实验中的贡献,请实事求是,自评在实验中应得的分数。(按百分制) 【交实验报告】 上传实验报告:ftp://222.200.180.109/截止日期(不迟于):1周之内 上传包括两个文件: (1)小组实验报告。上传文件名格式:小组号_ Ftp协议分析实验.pdf (由组长负责上传) 例如: 文件名“10_ Ftp协议分析实验.pdf”表示第10组的Ftp协议分析实验报告 (2)小组成员实验体会。每个同学单独交一份只填写了实验体会的实验报告。只需填写自己的学号和姓名。 文件名格式:小组号_学号_姓名_ Ftp协议分析实验.pdf (由组员自行上传) 例如: 文件名“10_05373092_张三_ Ftp协议分析实验.pdf”表示第10组的Ftp协议分析实验报告。 注意:不要打包上传!

FTP协议分析

FTP是早期互联网协议(注:IP协议组)中的一个,FTP协议是设计用在当时还比较封闭的互联网 上传输文件,当时互联网只是互连了一些大学、政府机构和设计该互联网模型的一些商业公司 。FTP在当今网络上,特别是在安全问题比较严重的网络上(如互联网Internet)的行为模式 是有一些问题的,本白皮书也提供了一些理论背景知识,这些知识可以帮助你在一个有防火墙 或者使用NAT的网络上正确实施FTP。 FTP协议早在Client/Server(C/S)模式流行前就已经被设计,但FTP工作模式与C/S模式十分 相似。FTP使用两个TCP连接,一个TCP连接用于控制信息(控制连接),一个TCP连接用于实际 的数据传输(数据连接)。对FTP对话的分析包括在控制连接上所发送命令的检查和在数据连 接上发送的TCP数据段(注:segment---OSI模型中对第4层数据单元的称呼)的评估。对于普通 的(活跃的)FTP,控制连接由客户端初始化,数据连接由服务器端初始化。活跃的FTP也称为 (Port模式)。另一种模式是被动模式(Passive模式),这种模式下客户端初始化数据连接。 >>1.0<< FTP和TCP端口号 根据是使用Port模式还是Passive模式,FTP使用不同的TCP端口号,在详细描述FTP前,我们来 简单讨论一下TCP端口号的一些基本概念。TCP使用端口号来标识所发送和接收的应用,端口号 可以帮助TCP来分离字节流并且帮相应字节传递给正确的应用程序。 TCP端口号可以是半永久的和暂时的。服务器端监听在半永久的端口上来让客户端访问。客户 端使用暂时的端口在本地标识一个对话,客户端端口只在使用TCP服务时候才存在,而服务器 端口只要服务器在运行就一直在监听。 TCP端口可以归为3类: 1、众所周知的端口来标识在TCP上运行的标准服务,包括FTP、HTTP、TELNET、SMTP 等,这些 端口号码范围为0-1023; 2、注册端口号用来标识那些已经向IANA(Internet Assigned Numbers Assigned Numbers Authority)注册的应用,注册端口号为1024-49151; 3、私有端口号是非注册的并且可以动态地分配给任何应用,私有端口为49152-65535; 注册的端口号本来打算只给注册的应用使用,可近年来端口号已经陷入了到达极限的困境,你 可能会看到本来应该是给注册应用使用的注册端口被非注册应用用做暂时的端口。RFC1700

实验八使用Wireshark分析FTP协议

实验八使用Wireshark分析FTP协议 一、实验目的 分析FTP协议 二、实验环境 与因特网连接的计算机,操作系统为Windows,安装有Wireshark、IE等软件。 三、实验步骤 HTTP和FTP都可以用来通过网络传输对象和文件,但它们的工作方式截然不同。HTTP侧重于传送立即浏览的文件或供暂时高速缓存于客户端的文件。HTTP还侧重于表达那些包含了用于规定文件格式的首部信息,以便让浏览器能正确解释内容。而FTP却更侧重于专门进行数据传输,让用户自己去决定文件在本机上的存储时间和如何处理数据。 FTP是一种有状态的协议。FTP客户端与服务器建立一个持续的会话,并通过这个会话发送多个请求。启动会话要输入用户名和密码,然而许多FTP服务器允许公开访问,即客户端可以使用匿名登录(anonymous)及随意设置的密码连接。 一旦建立连接,对FTP会话的操作类似命令行下的操作,用户在提示符下操作,并能浏览一些文件和目录。用户在浏览目录时,FTP服务器保持对用户目录位置的跟踪。用户还可以请求从服务器获取文件或向服务器存储文件,对这些请求的解释与当前工作的目录有关。 FTP总是为正在进行的控制通道维持一个TCP连接,然后建立一个独立的用于数据传输的TCP连接。控制通道通常建立在从客户端到FTP服务器端口21的连接,它用于描述每一个使用中的数据通道的属性,包括客户端或服务器是否启动传输,以及用什么IP地址和端口连接。 用RFC-Editor搜索功能找到定义FTP协议的RFC文档。搜索结果表明该RFC文档在URL 959.txt找到。如果你在浏览器窗口中输入以开头的URL,那么它将作为FTP客户端来获取想要的文件。 1、俘获FTP分组

网络协议实验报告6

组号:3F 学号:53131016 姓名:杨灵 实验7.1 FTP协议 【实验目的】 学习FTP协议的连接过程;理解FTP协议的工作原理。一人一组,一组提交报告。 【实验环境】 本实验采用网络结构一, 一定要设置DNS服务器,地址是:172.16.0.253 主机的IP地址使用172.16.0.0段。掩码255.255.255.0. IP地址分配方法: 172.16.0.组号、主机号 例如:第2组的B主机的IP地址设置为172.16.0.22 第5组的F主机的IP地址设置为 172.16.0.56 【实验内容】 本实验要求: FTP服务器已经启动,并提供一个公共帐户,用户名是:anonymous,口令:无。或用户名:group2_1,口令:group2_1 (可以上传数据)。练习一 FTP 本实验学生独立完成,目的是了解FTP协议的端口和连接过程。 实验步骤: 1、主机启动协议分析器,打开数据捕获窗口,设置过滤条件(提取FTP协议); 2、主机登录FTP服务器:在仿真端的命令行提示符下运行: >ftp 172.16.0.253 LOGIN:>group2_1 PASS:>group2_1 >dir >quit 3、查看主机捕获的数据,在会话分析中,查看TCP会话中的21端口和20端口的会话情况,记录21端口和20端口的会话过程; ●记录实验结果: ①粘贴捕获包的截图;

②是否可以捕获到用户名和密码? 答:可以,在USER和PASS会话中。 ③21端口和20端口分别传输什么内容? 答:一个是数据端口,一个是控制端口,控制端口一般为21,而数据端口不一定是20,这和FTP的应用模式有关,如果是主动模式,应该为20,如果为被动模式,由服务器端和客户端协商而定。练习二使用浏览器登入FTP 1、主机启动协议分析器,打开数据捕获窗口; 2、主机启动IE浏览器,在“地址”框中输入ftp://172.16.0.253 3、查看主机捕获的数据,在会话分析中,查看TCP会话中的端口情况。 4、结合练习1的会话过程,说明浏览器登入FTP的工作过程。 ●记录实验结果: ①粘贴捕获包的截图; ②对比上个实验,FTP服务器用哪个端口传输数据,数据连接是谁发起的连接? 答:ftp服务器用21端口传输数据,数据连接是客户端发起的的连接。 练习三在窗口模式下,上传/下传数据文件 熟悉FTP在窗口方式下的命令使用;在本地机的D:上建立一个文本文件,文件名为你的学号+姓名; 1、主机登录FTP服务器:在命令行提示符下运行: D:>ftp 172.16.0.253 >LOGIN:group2_1 >PASS: group2_1 >put 文件名(文件名为你的学号+姓名) >dir (查看FTP上是否已经上传) >get 文件名(FTP服务器) >quit 2、回到本地硬盘上查看是否已经下载到本地?(进入FTP时的目录下) ●记录实验结果: ①粘贴FTP上的文件列表;

ftp协议分析

FTP协议分析 一、实验目的 1、理解FTP协议的工作原理; 2、了解FTP协议的常用命令; 3、了解应用层协议与传输层协议的关系 二、实验原理 FTP(File Transfer Protocal),是文件传输协议的简称。 FTP使得主机间可以共享文件,用于控制Internet上文件的双向传输。它是一个客户机/服务器系统。用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP 服务器程序。用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。当FTP客户端与服务器建立FTP连接时,将与服务器上的两个端口建立联系:端口20和21。FTP使用不同的端口号传输不同的内容,会建立不同的TCP连接。首先,使用 TCP 生成一个虚拟连接用于控制信息,然后再生成一个单独的 TCP 连接用于数据传输。 FTP的工作过程 FTP使用2个TCP端口,一个数据端口和一个命令端口(也可叫做控制端口)。通常来说这两个端口是21——命令端口和20——数据端口,但根据FTP工作在主动模式还是被动模式,21和20端口的使用方法略有不同。主动模式的FTP是这样的:客户机从一个任意的非特权端口N(N≥1024),连接到FTP服务器的命令端口,也就是21端口,建立一个控制连接。这个连接用于传递客户端的命令和服务器端对命令的响应,生存期是整个FTP会话时间。如果期间需要传输文件和其它数据,例如:目录列表等,客户端就需要建立数据连接了。这种连接在需要数据传输时建立,而一旦数据传输完毕就关闭,整个FTP 期间可能会建立多次。在主动模式下,建立数据连接时,客户端会开始监听端口N+1,并发送FTP命令“port N+1”到FTP服务器。接着服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1),开始进行数据传输。图5- 13展示了一个FTP主动模式的例子,从中可以清楚的看到FTP主动模式下,控制连接和数据连接是如何建立的: 这种连接在需要数据传输时建立,而一旦数据传输完毕就关闭,整个FTP期间可能会建立多次。在主动模式下,建立数据连接时,客户端会开始监听端口N+1,并发送FTP命令“port N+1”到FTP服务器。接着服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1),开始进行数据传输。图5- 13展示了一个FTP主动模式的例子,从中可以清楚的看到FTP主动模式下,控制连

FTP协议解析课程设计报告

FTP协议实验报告 ●实验目的 1、在Linux系统上完成一个文件传输协议(FTP)的简单实现。 2、深入理解FTP协议的原理和协议细节。 3、学会利用Socket接口设计实现简单应用层协议。 4、掌握TCP/IP网络应用程序的基本设计方法和实现技巧。 ●实验原理 1、FTP协议 FTP是File Transfer Protocol,即文件传输协议的缩写。该协议用于在两台计算机之间传送文件。FTP会话包括了两个通道,一个是控制通道,一个是数据通道。控制通道是和FTP 服务器进行沟通的通道,连接FTP服务器,发送FTP指令;数据通道则是和FTP服务器进行文件传输或者获取文件列表的通道。 FTP协议中,控制连接的各种指令均由客户端主动发起,而数据连接有两种工作方式:主动方式(PORT方式)和被动方式(PASV方式)。主动方式下,FTP客户端首先和FTP服务器的控制通道对应端口(一般为21)建立连接,通过控制通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。PORT命令包含了客户端用什么端口(一个大于1024的端口)接收数据。在传输数据的时候,FTP服务器必须和客户端建立一个新的连接,服务器通过自己的TCP 20端口发送数据。被动方式下,建立控制通道的过程和主动方式类似,当客户端通过这个通道发送PASV命令的时候,FTP server打开一个位于1024-5000之间的随机端口并且通知客户端,然后客户端与服务器之间将通过这个端口进行数据的传送。 2、socket编程 (1)什么是Socket Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程。网络的Socket 数据传输是一种特殊的I/O,Socket也是一种文件描述符。 (2)Socket的建立 为了建立Socket,程序可以调用Socket函数,该函数返回一个socket描述符。Socket 描述符是一个指向内部数据结构的指针,它指向描述符表入口。调用Socket函数时,socket 执行体将建立一个Socket,实际上"建立一个Socket"意味着为一个Socket数据结构分配存储空间。Socket执行体为你管理描述符表。两个网络程序之间的一个网络连接包括五种信息:通信协议、本地协议地址、本地主机端口、远端主机地址和远端协议端口。Socket数据结构中包含这五种信息。 socket函数原型为:int socket(int domain, int type, int protocol); domain:指明所使用的协议族,通常为PF_INET,表示互联网协议族(TCP/IP协议族);type:指定socket的类型为SOCK_STREAM 或SOCK_DGRAM,Socket接口还定义了原始Socket (SOCK_RAW),允许程序使用低层协议; protocol:通常赋值"0"。 返回:整型socket描述符。 (3)Socket配置 无连接socket的客户端和服务端以及面向连接socket的服务端通过调用bind函数来

相关主题