/* 等待来自客户端的数据*/
SOCKADDR_IN saClient; char szBuf[1024]; int nLen;
while(1) {
/*准备接收数据*/
memset(szBuf, 0, sizeof(szBuf)); nRet = recvfrom(theSocket, szBuf, sizeof(szBuf), 0,
// 已绑定的socket // 接收缓冲区 // 缓冲区大小 // Flags
(LPSOCKADDR)&saClient, // 接收客户端地址的缓冲区 &nLen); // 地址缓冲区的长度
/*打印接收到的信息*/
printf(\
/* 发送数据给客户端*/
strcpy(szBuf, \
sendto(theSocket, szBuf, strlen(szBuf), 0,
// 已绑定的socket // 发送缓冲区
// 发送数据的长度 // Flags
(LPSOCKADDR)&saClient, // 目的地址 nLen); // 地址长度 }
closesocket(theSocket);
return; }
//////////////////////////////////////////////////////////// //数据报服务员端主程序 //
////////////////////////////////////////////////////////////
void main()
{
WORD wVersionRequested = MAKEWORD(1,1); WSADATA wsaData; int nRet; short nPort;
nPort = SERV_UDP_PORT;
/* 初始化Winsock*/
nRet = WSAStartup(wVersionRequested, &wsaData); if (wsaData.wVersion != wVersionRequested) {
fprintf(stderr,\ return; }
/*调用数据服务员子程序*/ DatagramServer(nPort);
/*结束WinSock*/
WSACleanup(); }
请学生认真阅读分析上述服务员程序,然后根据实验原理二中介绍的内容,自行编写相应的无连接的客户端程序并运行。从而实现客户和服务器间的数据传输。
要求在仿真机端运行客户端进程,在监控机端捕获数据并进行分析。
【思考问题】
根据实验中记录的客户和服务器程序的端口号并结合程序,说明:
在客户/服务器模型当中,客户进程的端口号和服务器进程的端口号都是由程序给出说明的吗?为什么?
【实验报告要求】
1、 写出客户端程序。 2、 回答提出的问题。
实验二 应用层协议分析:TELNET及FTP
【实验目的】
了解TELNET、FTP协议 【实验学时】 4学时
【实验类型】 综合型
【实验要求】
1、理解TELNET协议及作用 2、理解FTP协议及工作原理
【实验原理】
1、TELNET命令: 名称 EOF SUSP ABORT EOR SE NOP DM BRK IP AO AYT EC EL GA SB WILL WONT DO DONT IAC 代码(十进制) 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 描述 文件结束符 挂起当前进程(作业控制) 异常中止进程 记录结束符i 自选项结束 无操作 数据标记 中断 中断进程 异常中止输出 对方是否还在运行? 转义字符 删除行 继续进行 子选项开始 同意启动(enable)选项 拒绝启动选项 认可选项请求 拒绝选项请求 数据字节255
选项协商:4种请求
1)WILL:发送方本身将激活选项 2)DO:发送方想叫接受端激活选项 3)WONT:发送方本身想禁止选项
4)DON’T:发送方想让接受端去禁止选项 常用Telnet选项代码:
选项标识 1 3 5 6 24 31 32 33 34 36 名称 回显 抑制继续进行 状态 定时标记 终端类型 窗口大小 终端速度 远程流量控制 行方式 环境变量
【实验步骤】
练习一:运行TELNET命令 捕获数据并分析 1、在DOS命令提示符下运行:
a. telnet 本机名
b. telnet 本机IP地址
对上述两项操作,在监控机端是否捕获到数据?分析原因。
2、从地址本中选择另一个主机的主机名和IP地址,在DOS命令提示符下运行:
a. telnet 主机名
b. telnet 主机IP地址
对上述两项操作,在监控机端捕获数据,比较这两项操作的执行过程有何不同,分析原因。 3、实验环境中的服务器上的telnet服务已经启动,并且提供一个公共帐号,其用户名:user;口令:无。
在DOS命令提示符下运行:
(a) telnet 服务器主机域名;
(b) 在“Login:”提示符后输入用户名,然后在“Password:”提示符后输入口令; (c) 在虚拟终端上进行一些简单的操作(可不做); (d) 按“CTRL+]”回到telnet提示符下; (e) 输入“quit”退出telnet。
在监控机端捕获数据,分析该次telnet操作的完整过程:
能否捕获到用户名及密码?telnet明文传输安全吗? 练习二:运行FTP。
1、实验环境中的服务器上的FTP服务已经启动,并且提供一个公共帐号,其用户名:anonymous;口令:(无)
在DOS命令提示符下运行:
(a) ftp 服务器主机域名(或服务器的IP地址); (b) 在“Login:”提示符后输入用户名(anonymous),然后在“Password:”提示符后输入口令(无);
(c) 在客户端上进行一些简单的操作(可不作),如:
pwd ls help ??
(d) 在ftp提示符下输入“quit”退出ftp。
2、在监控机一端捕获数据,对该过程中仿真机发送和接收的全部TCP数据包: (a) 记录每个TCP数据包的TCP协议头部分,关注其中以下字段的值: 源、目的端口号; 序号和确认序号;
ACK、SYN和FIN等标志位; 窗口大小;
(b) 根据各字段的值分析TCP协议的建立连接、会话和断开连接的全过程。 (c) 分析该过程中所有TCP包的源端口号和目的端口号。 (d) 分析FTP的工作方式。
(e) 能否捕获到用户名及密码?telnet明文传输安全吗?
【实验报告要求】
1、回答提出的问题。
2、画出各会话流程图。