技术教育社区
www.teccses.org

计算机网络原理实验教程-(含1CD)

封面

作者:徐明伟

页数:295

出版社:机械工业出版社

出版日期:2008

ISBN:9787111236832

电子书格式:pdf/epub/txt

作者简介

p>徐明伟
博士,现任清华大学计算机系教
授,博士生导师,网络所所长。
中国通信标准化协会技术管理委
员会专家,教育部新世纪优秀人
才.  “茅以升北京青年科技奖”
获得者,曾任865专项专家。发表
论文80多篇.获得国家科技进步
二等奖2次,省部级科技进步一
等奖4次。研究领域包括:计算
机网络体系结构、路由交换和高
性能路由器体系结构,
崔勇
博士,现任清华大学计算机系
副教授,中国通信标;隹化协会
理事。承担了多项国家及省部
级重点科研项目,发表论文60
多篇.申请了20多项国家发明
专利,已获得7项专利授权,获
得国家科技进步二等奖1次、省
邯级科技进步一等奖4次。研究
领域包括:网络体系结构、无
线移动互联网、服务质量控制
和分布式路由协议等。    …
徐格
博士.现任清华大学计算机系副
教授。负责并参与了多项“国家
9乃计划”项目、  “国家自然科学
基金”项目和“国家865计划”重
大项目

节选

    以互联网为代表的计算机网络是20世纪人类最伟大的发明之一。计算机网络已经成为
支撑现代经济发展、社会进步和科技创新的信息基础设施。掌握计算机网络原理及关键技术
是对信息学科学生和专业人员的基本要求,这通常需要经历4个阶段:理论学习、观察思考、
编程实现和动手实践。理论学习是通过课堂教学和资料阅读来了解基本原理;观察思考是通
过观察实际的网络协议的运行状态和交互过程,进一步思考和理解协议的特点;编程实现是
通过编写程序来实现具体的协议功能,从而深入了解网络协议的实现机理;动手实践则通过
亲自动手配置网络软硬件,运用综合技能来搭建网络并提供网络管理和服务。
    本书在简要介绍主要网络协议原理的基础上,重点讲述了对这些协议进行观察思考、编
程实现和动手实践的基本方法。网络协议数量繁多,RFC文本个数已经超过5000。本书从
中挑选了除物理层以外包含所有网络层次的21个主要协议进行观察分析,并进一步从中精
选设置了9个编程开发实验。在网络协议实验的基础上,本书还安排了对3种常用网络设备、
7种典型网络服务器和3种网络安全服务的配置管理实践。
    本书选择的实验环境以Windows和Linux为操作系统平台,以Ethereal为网络协议分析
工具,以NetRiver实验系统为协议编程开发和测试环境,以Socket为网络应用编程接口。
网络实验往往需要购置一定数量的网络设备,搭建复杂的网络环境,建设成本高,却很难支
持典型协议的开发实验。基于Linux等开源系统的编程实验虽然支持典型协议开发,但会使
实验人员在实验细节上投入大量精力,效率很低。清华大学计算机系网络所在高性能IPv4/IPv6
路由器等科研成果的基础上研制开发了NetRiver网络教学实验系统,提供了支持各层协议开
发的编程接口和辅助函数,使实验人员能够集中精力实现网络协议的核心机制,而无须关心
繁琐的细节。NetRiver实验系统提供了支持程序编辑、编泽、调试、可视化执行、自动测试
和用户管理的一体化实验环境。
    本书有以下几点特色:
    ·理论实践结合。每一个实验前,都简要介绍实验相关的协议、设备或应用的原理,
    使得本书成为一个自包含的系统,不需要读者再去查阅其他资料。
    ●内容全面深入。本书内容覆盖了主流的两种操作系统Windows和Linux,互联网两
    套协议栈IPv4和IPv6,以及除物理层以外的所有协议层次。作者从繁多的网络协议
    中精选了21个主要协议进行实验,并把协议核心机制作为实验要点。
    ●层次清晰递进。实验安排从易到难,逐级递进。基础配置观察实验是初级实验,通
    过这些实验可以掌握协议的运行机制和交互过程。高级编程开发实验是高级实验,
    通过这些实验可以加深对协议的理解,培养编程开发能力。通过网络综合实践,可
    以综合运用多方面知识,锻炼解决实际问题的能力。
    ·实验环境简单完备。基础配置观察实验只需要基本的网络环境。高级编程开发实验
    主要基于NetRiver实验系统,不需要大量的网络设备和复杂的网络环境,就可以进
    行各层协议的编程开发实验。
   全书分为6章。第l章介绍实验准备,包括Windows和Linux操作系统下的各种网络配
  置命令和工具、网络协议分析工具Ethereal的使用方法、Socket编程基础,以及NetRiver实
  验系统。第2章按照计算机网络分层模型,自底向上安排了21个协议的配置观察实验。第3
  章安排了9个编程开发实验,其中8个实验基于NetRiver实验系统,1个实验基于标准Socket。
  NetRiver实验系统还提供了图形界面交互实验,实验人员只需根据协议规范,通过交互式图
  形界面填写相关分组内容即可完成实验,降低了实验难度。而且,在学习过程中,可根据情
  况选择交互实验或者编程实验。第4、5、6章进一步融合了计算机网络各方面的知识,以亲
  自动手配置网络、实现网络管理和服务为目标,进行综合实践。第4章介绍交换机、路由器
  和NAT网关等常用网络设备的配置管理方法。第5章介绍DHCP、DNS、Web、FTP、E-mail、
  TELNET和SNMP等典型网络服务器的配置方法。第6章介绍网络防火墙、企业病毒防御
  系统和VPN的配置方法。附录中列出了本书相关工具软件的下载网址,请读者自行下载使
  用。附录中的所有网址在本书出版时均已经过验证,可以正常登录。
    本书的配套光盘包含以下内容:   
    ·NetRiver实验系统客户端软件和使用手册。
    ·Windows和Linux下Socket编程实例的源代码和相关工程配置文件。
    通过光盘中的NetRiver客户端可以访问NetRiver服务器,并进行一些基本的实验。如
  果想进行更全面的实验,建议配备全套NetRiver实验系统。NetRiver实验系统的相关事宜可
  以咨询http://www.netlab.edu.cn。
    本书可作为计算机、电子工程、通信、自动化等信息类专业的高年级本科生和研究生的
  实验教材,也可作为有一定计算机网络原理基础的工程技术人员的参考书。
    本书由徐明伟、崔勇和徐恪共同编写,由徐明伟完成全书的统稿。编写过程中,周云涛、
  杨芫、王影新等同学参与了实验设计和代码编写。本书是作者多年教学实践工作的总结,历
  届助教博士生都对网络实验的设计和完善做出了贡献。在此对以上人士表示感谢。
    由于作者水平有限,书中难免存在不妥之处,欢迎读者提出宝贵意见。
作者

 1.实验要求
    本实验要求在IPv4分组收发实验的基础上,增加分组转发功能。对于每一个到达本机
的IPv4分组,根据其目的IPv4地址决定对该分组执行的操作如下:①向上层协议上交目的
地址为本机地址的分组;②根据路由查找结果,丢弃查不到路由的分组;③根据路由查找结
果,向相应接口转发不是本机接收的分组。
    为完成本实验的实验要求,需要完成以下3项内容:
    (1)设计路由表数据结构
    设计路由表所采用的数据结构。要求能够根据目的IPv4地址来确定分组处理行为(转
发情况下需获得下一跳的IPv4地址)。路由表的数据结构和查找算法会极大地影响路由器的
转发性能,有兴趣的同学可以深入思考和探索。
    (2)IPv4分组的接收和发送
    对前面实验(IPv4收发实验)中所完成的代码进行修改,在路由器协议栈的IPv4模块
中能够正确完成分组的接收和发送处理。具体要求不作改变,参见“IPv4收发实验”。
    (3)IPv4分组的转发
    对于需要转发的分组进行处理,获得下一跳的IPv4地址,然后调用发送接口函数做进
一步处理。
  2.接口函数说明
  本实验需要学生实现一些接口函数,同时实验系统也为学生提供了一些接口函数。现分
别对这两类接口函数作详细说明。
    (1)需要学生编程实现的接口函数说明
    本实验中需要学生实现的接口函数包括路由初始化函数、路由添加和转发处理函数。
    1)路由初始化函数:
    void smd_Route_InitO
    说明:本函数将在系统启动的时候被调用,学生可将初始化路由表的代码写在这里。
    2)路由添加函数:
    void stud_route_add(stud_route_msg。proute)
    参数:
    proute:指向需要添加路由信息的结构体头部,其数据结构studroute_msg的定义如下:
typedef struct stud_route_msg
{
  unsigned int  dest;
   unsigned int  masklen;
  unsigned int  nexthop;
} stud_route_msg;
    说明:本函数为路由表配置接口,系统在配置路由表时需要调用此接口。此函数功能为
向路由表中增加一个新的表项,将参数所传递的路由信息添加到路由表中。
  3)转发处理函数:
    .nt stud fwd deal(char最pBuffer,iIn 1engtll)
   参数:
    pBuffer:指向接收到的IPv4分组。
    length:IPv4分组的长度。
    返回值:
    O为成功,l为失败。
    说明:本函数是IPv4协议接收流程的下层接口函数,实验系统从网络中接收到分组后
会调用本函数。调用本函数之前已完成IPv4分组的合法性检查,因此学生在本函数中应该
实现如下功能:
    ①判定是否为本机接收的分组,如果是则调用fwd LocalRcv()。
    ②按照最长匹配原则,查找路由表获取下一跳。查找失败,则调用fwd DiscardPkt()。
    ③查找成功,则调用fwd SendtoLow刚)完成分组转发。
    ④转发过程中注意TTL的处理及校验和的变化。
    (2)系统提供的接口函数说明
    本实验中实验系统提供了本地处理函数、下层发送函数、丢弃分组函数和获取本机IPv4
地址函数。
    1)本地处理函数:
    void fwd_LocalRcv(char最pBuffer,int length)
    参数:
    pBuffer:指向IPv4分组。
    length:表示分组的长度。
    说明:本函数是IPv4协议接收流程的上层接口函数,在对IPv4分组完成解析处理之后,
如果分组的目的地址是本机的地址,则调用本函数将正确分组提交上层相应协议模块进一步处
理。
    2)下层发送函数:
    void fwd SendtoLower(char最pBuffer,illt length.unsigned int nexthop)
    参数:
    pBuffer:指向所要发送的IPv4分组。
    length:分组长度(包括分组头部)。    ’
    nexthop:转发时下一跳的地址。
    说明:本函数是发送流程的下层接口函数,在IPv4协议模块完成发送封装工作后调用
该接口函数进行后续发送处理。后续的发送处理过程包括分片处理、IPv4地址到MAC地址
的映射(ARP协议)、封装成MAC帧等工作,这部分内容不需要学生完成,由实验系统提
供支持。
    3)丢弃分组函数:
    void fwd DiscardPkt(char。pBuffer.iIlt type)
    参数:
    pBuffer:指向被丢弃的IPv4分组。
 type:表示错误类型,包括TTL错误和找不到路由两种错误,定义如下:
    STUD FORWARD TEST TTLERROR
    STUD FORWARD TEST NOROUTE
    说明:本函数是丢弃分组的函数,在接收流程中检查到错误时调用此函数将分组丢
弃。
  4)获取本机地址函数:
    U1NT32 gefipv4Address0
    说明:本函数用于获取本机的IPv4地址,学生调用该函数即可返回本机的IPv4地址,
可以用来判断IPv4分组是否为本机接收。
  返回值:本机IPv4地址。
  除了以上函数外,学生可根据需要自己编写一些实验需要的函数和数据结构,包括路由
表的数据结构,对路由表的搜索、初始化等操作函数。    。
3.3.4思考问题
    本节主要介绍了基于NetRiver实验系统的IPv4转发实验的相关内容。请在实验的基础
上思考以下问题:
    1)转发处理中,先判断目的地址是否是本机地址,还是先对TTL进行处理,在实现上
有何不同?
    2)调研路由表的数据结构有哪几种实现方式,并比较这些实现方式的优缺点。
3.4 IPv6收发实验
    现有互联网是在IPv4协议的基础上运行的。IPv6是下一代互联网的主要协议,它的提
出是因为随着互联网的迅速发展,IPv4定义的有限地址空间将被耗尽,地址空间的不足必将
影响互联网的进一步发展。为了扩大地址空间,以及出于安全、性能等方面考虑,IETF提
出了IPv6协议。IPv4采用32位地址长度,只有大约43亿个地址,而IPv6采用128位地址
长度,几乎可以不受限制地提供地址。本实验要求学生在了解IPv6协议的基础上完成IPv6
收发实验,对基本的IPv6分组的接收和发送流程有所了解。
3.4.1实验目的
    通过交互实验和编程实验,学生可以了解IPv6协议的分组接收和发送流程,进一步理
解网络层协议工作原理,并初步掌握网络层协议开发能力。
3.4.2实验说明
    IPv6分组收发实验就是要在NetRiver实验系统客户端的开发平台上,实现IPv6分组的
接收和发送功能。下面将具体介绍IPv6分组收发的处理流程和IPv6分组头格式。

下载地址

立即下载

(解压密码:www.teccses.org)

Article Title:《计算机网络原理实验教程-(含1CD)》
Article link:https://www.teccses.org/101561.html