《计算机网络》

上传人:kms****20 文档编号:41011584 上传时间:2018-05-28 格式:DOC 页数:48 大小:97KB
返回 下载 相关 举报
《计算机网络》_第1页
第1页 / 共48页
《计算机网络》_第2页
第2页 / 共48页
《计算机网络》_第3页
第3页 / 共48页
《计算机网络》_第4页
第4页 / 共48页
《计算机网络》_第5页
第5页 / 共48页
点击查看更多>>
资源描述

《《计算机网络》》由会员分享,可在线阅读,更多相关《《计算机网络》(48页珍藏版)》请在金锄头文库上搜索。

1、计算机网络计算机网络计算机网络实验指导书刘昶、沈红、吴迪沈阳理工大学信息科学与工程学院目 录实验 1:校验码设计 2实验 2:零比特插入 4实验 3:Winsock 编程6实验 4:CRC 循环冗余校验 9实验 5:计算机网络连接设备制作 11实验 6:IP 协议实验13实验 7:TCP/UDP 协议15实验 8:ARQ 协议的实现17实验 9:以太网的组建 27实验 10:虚拟局域网实践 29实验 11:FTP 服务配置 33实验 12:DNS 服务配置 36实验 13:DHCP 服务配置41实验 14:常用网络命令 46实验 15:根据最小路由算法编程并测试 50实验 16:利用 TCP/

2、IP 套接字接口编程实现串口通讯52实验 1:校验码设计实验目的:了解差错检测原理,掌握 CRC 循环冗余校验原理及方法实验要求:编程写程序,实现 CRC 循环冗余校验实验原理:现实的通信链路不会是理想的,因此比特在传输过程中可能产生差错,传输错误的比特占所传输比特的总数的比率称误码率。为了保证数据传输的可靠性,在计算机网络传输数据时,采用各种差错检测措施,在数据链路层广泛使用循环冗余(CRC)技术。CRC 检错技术:在发送端,设待传送数据 M=101001(共 k 比特,这里 k=6) 。在从后添加供差错检验用的 n 比较冗余码(共发送 k+n 比特) 。n 比特冗余码由以下方法得出:先用二

3、进制模 2 运算进行 2 乘以 M 的运算,这相当于在从 M 后添 n 个 0,得到(k+n)bit 的数据除以收发双方事先商定的长度为(n+1)bit 的除数 P,得出商是 Q 而余数是 R(n bit).例如:设 n=3,除数 P=1101,经模 2 除法运算,得结果:商Q=110101,余数 R001(n bit).将余数 R 添加到数据 M 后面发送出去,则发送数据为:101001001 共(k+n)bit.算法:1101 1101111011011110110111001101001得出:发送数据:101001001除数:1101冗余:001在接收端对接收到的帧进行 CRC 检验,把

4、接收到的帧除以同样的 P(模 2 运算)得出余数 R,如果数据在传输过程中没有差错,得出的余数应为 0。现广泛使用的生成多项式 P(x)有以下几种:CRC-16xxx1CRC-CCITTxxx1CRC-32xxxxxxxxxxxxxx1注意,循环冗余检验 CRC 差错检测技术只能做到无差错接受,即:“凡是接收端数据链路层接受的帧,我们都以非常接近于 1 的概率认为这些帧在传输过程中没有产生差错“(请注意:接收端丢弃的帧虽然一开始被接收了但最终没有被接受) ,或更简单些,可以近似地认为:“凡是接收数据链路层接受的帧均无传输差错“。实验步骤:1. 在 windows 环境下,编写 CRC 循环冗余

5、校验程序。2. 调试程序并运行。3. 分析实验结果。考核形式1实验考勤 20%:2上机操作能力及实验纪律占 40%:3实验报告 40%;实验报告要求写出算法原理写出程序清单及注释写出测试数据及结果写出上机调试中遇到的错误及实验体会5. 实验报告书写认真,不得抄袭,如有雷同,按不及格处理实验 2:零比特插入实验目的:掌握零比特插入原理及方法实验要求:编程实验零比特插入实验原理:点对点协议 PPP(Point-to-Point Protocol)是目前使用得最广泛的数据链路层协 议。现在大部分用户是使用电话线拨号接入因特网的。而从用户计算机到 ISP 的链路所使用的数据链路层协议就是 PPP 协议

6、。PPP 协议必须保证数据传输的透明性。这就是说,不能限制网络层交下来的分组中不许出现某种比特组合。只要不出现传输差错,所有的数据都必须原封不动地传送到相邻结点。如果数据中碰巧出现了和帧定界符一样的比特组合时,就要采取有效的措施来解决这个问题。PPP 协议中,用在链路时,是使用同步传输,而不是异步传输,这种情况下,PPP 协议采用 0 比特填充的方法实现透明传输PPP 帧格式7C03协议信息部分FCSF7E标志字段(Flag)规定为 0X7E,0X1E 即:01111110具体方法:在发送端扫描整个信息字段,只要发现 5 个连续 1,则立即填入 1 个 0,因此在经过这种 0 比特填充后,可保

7、证信息字段中不会出现 6 个连续 1在接收端收到 1 个帧时,先找到标志字段,以确定一个帧边界,接着再对后面的比特流扫描,每当发现 5个连续 1 时,就把这 5 个连续 1 后的一个 0 删除,以还原后来的信息比特流这样就保证了透明传输,在所传输的数据比特流中可以传送任意组合的比特流,而不会引起对帧边界的判断错误。信息字段中出现了和 0101111110001010标志字段 F 完全一样 会被误认为是标志字段 F的 8 比特组合发送端在 5 个连续的 0100111110100010101 之后填入 0 比特再 发送端填入 0 比特发送出去在接收端把 5 个连续 010011111010001

8、010的 1 之后的 0 比特删除 接收端删除填入的 0 比特实验步骤:1. 在 windows 环境下编写零比特插入程序。2. 调试程序并运行。考核形式1实验考勤 20%:2上机操作能力及实验纪律占 40%:3实验报告 40%;实验报告要求写出算法原理写出程序清单及注释写出测试数据及结果写出上机调试中遇到的错误及实验体会实验报告书写认真,不得抄袭,如有雷同,按不及格处理实验 3:Winsock 编程实验目的:掌握 Winsock 编程原理,学会 windows 下的 Winsock 编程。实验要求:利用 Winsock 编写获得机器 IP 地址的程序实验原理:在实际应用中,编程人员通常需要自

9、己编制底层网络应用程序来实现网上的底层通信。编制底层网络应用程序通常要借助于网络数据通信编程接口,而在不同的操作系统中所提供的网络编程接口是有所不同的,如在Microsoft Windows 环境下的网络编程接口就是 Windows 套接字(Windows Socket,简称 Winsock) 。Winsock 提供了包括TCP/IP、IPX 等多种通信协议下的编程接口。不同的 Windows 版本支持不同的 Winsock 版本,其中 Windows 95 等早期版本本身只支持Winsock1.1(16 位)下的编程(可以通过安装相关的软件包使其支持 Winsock2.0) ,而 Windo

10、ws98、Windows NT4.0、Windows 2000 则直接支持 Winsock2.0(32 位) 。Winsock2.0 是 Winsock1.1 的扩展,除兼容 Winsock1.1 API 外,还定义了一套可支持 IP 多播的与协议无关的 API。WinSock 编程分为服务器端和客户端两部分,TCP 服务器端的大体流程如下: 对于任何基于 WinSock 的编程首先必须要初始化 WinSock DLL 库。 int WSAStarup( WORD wVersionRequested,LPWSADATA lpWsAData )。wVersionRequested 是我们要求使用

11、的 WinSock 的版本。 调用这个接口函数可以初始化 WinSock 。 然后必须创建一个套接字(Socket)。 SOCKET Socket(int af,int type,int protocol); 套接字可以说是 WinSock 通讯的核心。WinSock 通讯的所有数据传输,都是通过套接字来完成的,套接字包含了两个信息,一个是IP 地址,一个是 Port 端口号,使用这两个信息,就可以确定网络中的任何一个通讯节点。 当调用了 Socket()接口函数创建了一个套接字后,必须把套接字与你需要进行通讯的地址建立联系,可以通过绑定函数来实现这种联系。 int bind(SOCKET s

12、,const struct sockaddr FAR* name,int namelen) ; struct sockaddr_in short sin_family ; u_short sin_prot ; struct in_addr sin_addr ; char sin_sero8 ; 就包含了需要建立连接的本地的地址,包括地址族、IP 和端口信息。sin_family 字段必须把它设为 AF_INET,这是告诉 WinSock 使用的是 IP 地址族。sin_prot 就是要用来通讯的端口号。sin_addr 就是要用来通讯的 IP 地址信息。 在这里,必须还得提一下有关大头(big

13、-endian)小头(little-endian)。因为各种不同的计算机处理数据时的方法是不一样的,Intel X86 处理器上是用小头形式来表示多字节的编号,就是把低字节放在前面,把高字节放在后面,而互联网标准却正好相反,所以,必须把主机字节转换成网络字节的顺序。WinSock API 提供了几个函数。 把主机字节转化成网络字节的函数; u_long htonl(u_long hostlong); u_short htons(u_short hostshort); 把网络字节转化成主机字节的函数; u_long ntohl(u_long netlong); u_short ntohs(u_s

14、hort netshort) ; 这样,设置 IP 地址和 port 端口时,就必须把主机字节转化成网络字节后,才能用 Bind()函数来绑定套接字和地址。当绑定完成之后,服务器端必须建立一个监听的队列来接收客户端的连接请求。int listen(SOCKET s,int backlog);这个函数可以把套接字转成监听模式。 如果客户端有了连接请求,我们还必须使用 int accept(SOCKET s,struct sockaddr FAR* addr,int FAR* addrlen); 来接受客户端的请求。 现在基本上已经完成了一个服务器的建立,而客户端的建立的流程则是初始化 WinSo

15、ck,然后创建 Socket 套接字,再使用 int connect(SOCKET s,const struct sockaddr FAR* name,int namelen) ; 来连接服务端。 实验步骤:1. 在 windows 环境下编写程序。2. 调试并运行程序。3. 分析实验结果。考核形式1实验考勤 20%:2上机操作能力及实验纪律占 40%:3实验报告 40%;实验报告要求写出算法原理写出程序清单及注释写出测试数据及结果写出上机调试中遇到的错误及实验体会实验报告书写认真,不得抄袭,如有雷同,按不及格处理实验 4:CRC 循环冗余校验实验目的:掌握 CRC 循环冗余校验原理及方法实验

16、要求:编程实验 CRC 循环冗余校验实验原理:比特在传输过程中可能产生差错,传输错误的比特占所传输比特的总数的比率称误码率。为了保证数据传输的可靠性,在计算机网络传输数据时,采用各种差错检测措施,在数据链路层广泛使用循环冗余(CRC)技术。CRC 检错技术:在发送端,设待传送数据 M=101001(共 k 比特,这里 k=6) 。在从后添加供差错检验用的 n 比较冗余码(共发送 k+n 比特) 。n 比特冗余码由以下方法得出:先用二进制模 2 运算进行 2 乘以 M 的运算,这相当于在从 M 后添 n 个 0,得到(k+n)bit 的数据除以收发双方事先商定的长度为(n+1)bit 的除数 P,得出商是 Q 而余数是 R(n bit).例

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号