黑龙江大学《计算机网络》实验讲义-2024年计科


概述

本篇为黑龙江大学计算机科学与技术专业《计算机网络》课程实验讲义(2024年版)。

  • 实验目的

本实验课程是《网络及其计算》课程的实验教学部分。开设本实验可以使学生能够将课堂知识与实践相结合,让学生进一步理解计算机网络的基本原理和具体的通信机制,熟悉基本的计算机网络的组网技术,了解主要的网络应用,掌握初步的网络应用编程技术,为学生进一步深入学习网络应用、网络设计、网络应用开发打下一个坚实的基础,同时也能使学生在实践中体会、深化了解课堂中学习的知识。

  • 实验课程要求

(1)通过实验掌握网络通信程序的编写,做到在实际的通信程学基础上模拟实际生活中的通信过程。

(2)通过实验掌握现有的网络设备如网桥、以太网交换机、路由器等的工作原理。

(3)掌握现有Internet的路由机制,模拟实现路由算法

(4)掌握现有系统的实用的网络命令

本课程的先行课程有:高级语言程序设计、数据结构、操作系统。

  • 实验项目
  1. 基于套接字的网络通信程序

  2. 停止等待协议算法实现

  3. 网桥原理模拟

  4. 网络协议分析

  5. 常用网络命令

实验项目一 基于套接字的网络通信程序

一.实验目的

通过本实验使得学生掌握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),则&
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值