目录
概述
本篇为黑龙江大学计算机科学与技术专业《计算机网络》课程实验讲义(2024年版)。
- 实验目的
本实验课程是《网络及其计算》课程的实验教学部分。开设本实验可以使学生能够将课堂知识与实践相结合,让学生进一步理解计算机网络的基本原理和具体的通信机制,熟悉基本的计算机网络的组网技术,了解主要的网络应用,掌握初步的网络应用编程技术,为学生进一步深入学习网络应用、网络设计、网络应用开发打下一个坚实的基础,同时也能使学生在实践中体会、深化了解课堂中学习的知识。
- 实验课程要求
(1)通过实验掌握网络通信程序的编写,做到在实际的通信程学基础上模拟实际生活中的通信过程。
(2)通过实验掌握现有的网络设备如网桥、以太网交换机、路由器等的工作原理。
(3)掌握现有Internet的路由机制,模拟实现路由算法
(4)掌握现有系统的实用的网络命令
本课程的先行课程有:高级语言程序设计、数据结构、操作系统。
- 实验项目
-
基于套接字的网络通信程序
-
停止等待协议算法实现
-
网桥原理模拟
-
网络协议分析
-
常用网络命令
实验项目一 基于套接字的网络通信程序
一.实验目的
通过本实验使得学生掌握Windows通信程序的编写,通信原理,实际编写通信程序,本试验是后续实验的基础。要求学生做到在一台计算机上实现两个程序的通信,以及在两台计算机上实现两个应用程序的通信,对于学生所使用的程序开发环境不限。
二.实验环境
(1)运行windows 2007/xp操作系统的PC一台.
(2)每台PC机安装有visual C++、java编程环境或其他开发环境.
三.实验内容及步骤
(A)熟悉并掌握Winsock的原理,常用的套接字函数如下:
(1)创建套接字——socket()
功能:使用前创建一个新的套接字
格式:
SOCKET PASCAL FAR socket(int af,int type,int procotol);
参数:
af: 通信发生的区域
type: 要建立的套接字类型
procotol: 使用的特定协议
(2)指定本地地址——bind()
功能:将套接字地址与所创建的套接字号联系起来。
格式:
int PASCAL FAR bind(SOCKET s,const struct sockaddr FAR * name,int namelen);
参数:
s: 是由socket()调用返回的并且未作连接的套接字描述符(套接字号)。
其它:没有错误,bind()返回0,否则SOCKET_ERROR
地址结构说明:
struct sockaddr_in
{
short sin_family;//AF_INET
u_short sin_port;//16位端口号,网络字节顺序
struct in_addr sin_addr;//32位IP地址,网络字节顺序
char sin_zero[8];//保留
}
(3)建立套接字连接——connect()
和accept()
功能:共同完成连接工作
格式:
int PASCAL FAR connect(SOCKET s,const struct sockaddr FAR * name,int namelen);
SOCKET PASCAL FAR accept(SOCKET s,struct sockaddr FAR * name,int FAR * addrlen);
参数:同上
(4)监听连接——listen()
功能:用于面向连接服务器,表明它愿意接收连接。
格式:
int PASCAL FAR listen(SOCKET s, int backlog);
(5)数据传输——send()
与recv()
功能:数据的发送与接收
格式:
int PASCAL FAR send(SOCKET s,const char FAR * buf,int len,int flags);
int PASCAL FAR recv(SOCKET s,const char FAR * buf,int len,int flags);
参数:
buf:指向存有传输数据的缓冲区的指针。
(6)多路复用——select()
功能:用来检测一个或多个套接字状态。
格式:
int PASCAL FAR select(int nfds,fd_set FAR * readfds,fd_set FAR * writefds, fd_set FAR * exceptfds,const struct timeval FAR * timeout);
参数:
readfds:指向要做读检测的指针
writefds:指向要做写检测的指针
exceptfds:指向要检测是否出错的指针
timeout:最大等待时间
(7)关闭套接字——closesocket()
功能:关闭套接字s
格式:
BOOL PASCAL FAR closesocket(SOCKET s);
(B)面向连接和无连接的套接字的系统调用时序图
©.应用程序流程图
四.实验需要完成的功能
利用编程语言,基于TCP或者UDP编写一个简单的Client/Server 网络应用程序。要求实现客户向服务器传输任意一个字符串,服务器将收到的字符串变换成大写后传回客户。或者可以进一步改进程序,采用多线程的服务器,加入自己的想法,使之更加具有实用价值。
撰写实验报告。
实验项目二 停止等待协议算法实现
一.实验目的
在实现了两个程序通信的前提下,模拟实现停止等待ARQ协议。
要求模拟实现:
正常数据帧的通信过程
错误帧的通信过程
数据帧的丢失的通信过程
二.实验环境
(1)运行windows 2007/xp操作系统的PC一台.
(2)每台PC机安装有编程环境.
三.实验内容与步骤
按照如下算法进行实现:
-
发方程序:
(1) 从主机取一个数据帧,送交发送缓存。 (2) V(S)←0。 (3) N(S)←V(S)。 (4) 将发送缓存中的数据帧发送出去。 (5) 设置超时计时器。 (6) 等待。 (7) 收到确认帧 ACKn, 若 n = 1 – V(s),则&