欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    《互联网原理和应用》实验大纲和指导书.docx

    • 资源ID:11452954       资源大小:85.76KB        全文页数:29页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    《互联网原理和应用》实验大纲和指导书.docx

    1、互联网原理和应用实验大纲和指导书互联网原理和使用实验指导书计算机学院2010年7月第一部分、互联网原理和使用实验教学大纲1、实验课程基本情况院(系):计算机相关专业:网络工程限选,计算机科学和技术和软件工程选修课程编号(和学校教学指导书同)课程名称课程类别课程性质课程属性实验学期学时数实验个数实验者专业代码实验学分1 必修2 限选3 任选1独立设课2非独立设课1 基础2 技术基础3 专业 年级 学期总学时实验学时大纲要求实际开出1 本科2 专科3研究生4 其他6108194互联网原理和使用2133上5414441080613W0.5注:“专业代码”和学校教学指导书一致2、课程实验介绍(1) 课

    2、程简介及要求互联网原理和使用是网络工程技术方向模块的限选课和计算机其它专业的选修专业课。本课程任务是在学习计算机网络之后,再进一步加深对计算机互联网组成的完整体系结构、网络协议和主要网络使用。重点理解和掌握互联网(因特网)TCP/IP的体系结构、各部分协议和主要使用软件工作原理;掌握因特网的结构特点及其使用操作。(2) 实验目的及要求在实验室,通过网络协议仿真设备相关实验,进一步理解主要互联网协议和网络使用接口的理解。要求每个学生都能认真完成实验,并写出详细的实验报告。(3) 实验方式在学院网络工程实验室,实验分小组来做,4个同学一个小组,分为不同的协议编辑和协议分析两端,分别操作网络协议仿真

    3、系统完成,或4个同学一组实际操作路由交换设备完成。(4) 测试方法及评分每个实验都做出相应的结果来,并且上交了详细的实验报告,则可得到该课程的15%的成绩,否则根据情况扣除相应的成绩。(5) 主要仪器设备网络协议仿真实验系统、联网PC机。(6) 教材及参考书教材:互联网原理和使用实验指导书,自编3、实验项目设置实验室名称:计算机学院网络工程实验室实验课程及编号项目序号实验项目名称 内容提要实验学时计划/已开拟配仪器套数已配仪器套数每套人数实验属性1 验证2 设计3 综合4 科技创新开出要求1 必做2 选做1SOCKET网络编程设计1、 通过C语言和WinSock2进行简单的无连接的网络服务器和

    4、客户程序设计;2、 实现网络UDP数据传输;3、 并对捕获数据进行分析。320端(套)20端(套)231 2FTP实验1、 TELNET协议格式和命令,2、 FTP协议格式和命令3、 TELNET和FTP操作220端(套)20端(套)213使用层HTTP协议实验1、 HTTP协议的格式2、 TCP和HTTP协议关系3、 HTTP通信过程和特性。320端(套)20端(套)21144、 责任编辑:范冰冰第二部分、互联网原理和使用实验指导书实验一 SOCKET网络程序设计【实验目的】1、进一步掌握UDP及TCP协议的工作原理2、掌握SOCKET编程的基本方法3、学习使用C语言和WinSock2进行简

    5、单的无连接的网络程序设计,实现网络数据传输【实验学时】5学时【实验类型】综合型【实验要求】实验前根据给出的服务器端程序编好客户端程序。【实验原理】1、关于使用套接字编程的一些基本概念(a) 半相关和全相关半相关在网络中,用一个三元组可以在全局唯一标志一个进程: (协议,本地地址,本地端口号)这样一个三元组,叫做一个半相关(half-association),它指定连接的每半部分。全相关一个完整的网间进程通信需要由两个进程组成,并且只能使用同一种高层协议。也就是说,不可能通信的一端用TCP协议,而另一端用UDP协议。因此一个完整的网间通信需要一个五元组来标识:(协议,本地地址,本地端口号,远地地

    6、址,远地端口号)这样一个五元组,叫做一个相关(association),即两个协议相同的半相关才能组合成一个合适的相关,或完全指定组成一连接。(b) TCP/IP协议的地址结构为:struct sockaddr_in short sin_family; /*AF_INET*/ u_short sin_port; /*16位端口号,网络字节顺序*/ struct in_addr sin_addr; /*32位IP地址,网络字节顺序*/ char sin_zero8; /*保留*/(c) 套接字类型TCP/IP的socket提供下列三种类型套接字。流式套接字(SOCK_STREAM)提供了一个面向

    7、连接、可靠的数据传输服务,数据无差错、无重复地发送,且按发送顺序接收。内设流量控制,避免数据流超限;数据被看作是字节流,无长度限制。文件传送协议(FTP)即使用流式套接字。数据报式套接字(SOCK_DGRAM)提供了一个无连接服务。数据包以独立包形式被发送,不提供无错保证,数据可能丢失或重复,并且接收顺序混乱。网络文件系统(NFS)使用数据报式套接字。原始式套接字(SOCK_RAW)该接口允许对较低层协议,如IP、ICMP直接访问。常用于检验新的协议实现或访问现有服务中配置的新设备。(d) 基本套接字系统调用为了更好地说明套接字编程原理,下面给出几个基本套接字系统调用说明。(1) 创建套接字s

    8、ocket()使用程序在使用套接字前,首先必须拥有一个套接字,系统调用socket()向使用程序提供创建套接字的手段,其调用格式如下:SOCKET socket(int af, int type, int protocol);该调用要接收三个参数:af、type、protocol。参数af指定通信发生的区域,UNIX系统支持的地址族有:AF_UNIX、AF_INET、AF_NS等,而DOS、WINDOWS中仅支持AF_INET,它是网际网区域。因此,地址族和协议族相同。参数type 描述要建立的套接字的类型。参数protocol说明该套接字使用的特定协议,如果调用者不希望特别指定使用的协议,则

    9、置为0,使用默认的连接模式。根据这三个参数建立一个套接字,并将相应的资源分配给它,同时返回一个整型套接字号。因此,socket()系统调用实际上指定了相关五元组中的“协议”这一元(2) 指定本地地址bind()当一个套接字用socket()创建后,存在一个名字空间(地址族),但它没有被命名。bind()将套接字地址(包括本地主机地址和本地端口地址)和所创建的套接字号联系起来,即将名字赋予套接字,以指定本地半相关。其调用格式如下:int bind(SOCKET s, const struct sockaddr FAR * name, int namelen);参数s是由socket()调用返回的

    10、并且未作连接的套接字描述符(套接字号)。参数name 是赋给套接字s的本地地址(名字),其长度可变,结构随通信域的不同而不同。namelen表明了name的长度。如果没有错误发生,bind()返回0。否则返回值SOCKET_ERROR。地址在建立套接字通信过程中起着重要作用,作为一个网络使用程序设计者对套接字地址结构必须有明确认识。(3) 建立套接字连接connect()和accept()这两个系统调用用于完成一个完整相关的建立,其中connect()用于建立连接。无连接的套接字进程也可以调用connect(),但这时在进程之间没有实际的报文交换,调用将从本地操作系统直接返回。这样做的优点是程

    11、序员不必为每一数据指定目的地址,而且如果收到的一个数据报,其目的端口未和任何套接字建立“连接”,便能判断该端口不可操作。而accept()用于使服务器等待来自某客户进程的实际连接。connect()的调用格式如下:int connect(SOCKET s, const struct sockaddr FAR * name, int namelen);参数s是欲建立连接的本地套接字描述符。参数name指出说明对方套接字地址结构的指针。对方套接字地址长度由namelen说明。如果没有错误发生,connect()返回0。否则返回值SOCKET_ERROR。在面向连接的协议中,该调用导致本地系统和外部

    12、系统之间连接实际建立。由于地址族总被包含在套接字地址结构的前两个字节中,并通过socket()调用和某个协议族相关。因此bind()和connect()无须协议作为参数。accept()的调用格式如下:SOCKET accept(SOCKET s, struct sockaddr FAR* addr, int FAR* addrlen);参数s为本地套接字描述符,在用做accept()调用的参数前应该先调用过listen()。addr 指向客户方套接字地址结构的指针,用来接收连接实体的地址。addr的确切格式由套接字创建时建立的地址族决定。addrlen 为客户方套接字地址的长度(字节数)。如

    13、果没有错误发生,accept()返回一个SOCKET类型的值,表示接收到的套接字的描述符。否则返回值INVALID_SOCKET。accept()用于面向连接服务器。参数addr和addrlen存放客户方的地址信息。调用前,参数addr 指向一个初始值为空的地址结构,而addrlen 的初始值为0;调用accept()后,服务器等待从编号为s的套接字上接受客户连接请求,而连接请求是由客户方的connect()调用发出的。当有连接请求到达时,accept()调用将请求连接队列上的第一个客户方套接字地址及长度放入addr 和addrlen,并创建一个和s有相同特性的新套接字号。新的套接字可用于处理

    14、服务器并发请求。四个套接字系统调用,socket()、bind()、connect()、accept(),可以完成一个完全五元相关的建立。socket()指定五元组中的协议元,它的用法和是否为客户或服务器、是否面向连接无关。bind()指定五元组中的本地二元,即本地主机地址和端口号,其用法和是否面向连接有关:在服务器方,无论是否面向连接,均要调用bind();在客户方,若采用面向连接,则可以不调用bind(),而通过connect()自动完成。若采用无连接,客户方必须使用bind()以获得一个唯一的地址。以上讨论仅对客户/服务器模式而言,实际上套接字的使用是非常灵活的,唯一需遵循的原则是进程通

    15、信之前,必须建立完整的相关。(4) 监听连接listen()此调用用于面向连接服务器,表明它愿意接收连接。listen()需在accept()之前调用,其调用格式如下:int listen(SOCKET s, int backlog);参数s标识一个本地已建立、尚未连接的套接字号,服务器愿意从它上面接收请求。backlog表示请求连接队列的最大长度,用于限制排队请求的个数,目前允许的最大值为5。如果没有错误发生,listen()返回0。否则它返回SOCKET_ERROR。listen()在执行调用过程中可为没有调用过bind()的套接字s完成所必须的连接,并建立长度为backlog的请求连接队

    16、列。 调用listen()是服务器接收一个连接请求的四个步骤中的第三步。它在调用socket()分配一个流套接字,且调用bind()给s赋于一个名字之后调用,而且一定要在accept()之前调用。(5) 数据传输send()和recv()当一个连接建立以后,就可以传输数据了。常用的系统调用有send()和recv()。send()调用用于在参数s指定的已连接的数据报或流套接字上发送输出数据,格式如下:int send(SOCKET s, const char FAR *buf, int len, int flags);参数s为已连接的本地套接字描述符。buf 指向存有发送数据的缓冲区的指针,其

    17、长度由len 指定。flags 指定传输控制方式,如是否发送带外数据等。如果没有错误发生,send()返回总共发送的字节数。否则它返回SOCKET_ERROR。recv()调用用于在参数s指定的已连接的数据报或流套接字上接收输入数据,格式如下:int recv(SOCKET s, char FAR *buf, int len, int flags);参数s 为已连接的套接字描述符。buf指向接收输入数据缓冲区的指针,其长度由len 指定。flags 指定传输控制方式,如是否接收带外数据等。如果没有错误发生,recv()返回总共接收的字节数。如果连接被关闭,返回0。否则它返回SOCKET_ERR

    18、OR。(6) 输入/输出多路复用select()select()调用用来检测一个或多个套接字的状态。对每一个套接字来说,这个调用可以请求读、写或错误状态方面的信息。请求给定状态的套接字集合由一个fd_set结构指示。在返回时,此结构被更新,以反映那些满足特定条件的套接字的子集,同时, select()调用返回满足条件的套接字的数目,其调用格式如下:int select(int nfds, fd_set FAR * readfds, fd_set FAR * writefds, fd_set FAR * exceptfds, const struct timeval FAR * timeout)

    19、;参数nfds指明被检查的套接字描述符的值域,此变量一般被忽略。参数readfds指向要做读检测的套接字描述符集合的指针,调用者希望从中读取数据。参数writefds 指向要做写检测的套接字描述符集合的指针。exceptfds指向要检测是否出错的套接字描述符集合的指针。timeout指向select()函数等待的最大时间,如果设为NULL则为阻塞操作。select()返回包含在fd_set结构中已准备好的套接字描述符的总数目,或者是发生错误则返回SOCKET_ERROR。(7) 关闭套接字closesocket()closesocket()关闭套接字s,并释放分配给该套接字的资源;如果s涉及一

    20、个打开的TCP连接,则该连接被释放。closesocket()的调用格式如下:BOOL closesocket(SOCKET s);参数s待关闭的套接字描述符。如果没有错误发生,closesocket()返回0。否则返回值SOCKET_ERROR。2、用于无连接协议(如UDP)的SOCKET系统调用流程框图:3、面向连接协议(如TCP)的SOCKET系统调用流程框图:4、其他原理请参考教材。【实验步骤】使用UDP协议的无连接客户-服务员程序设计。根据实验原理中介绍的内容,设计一个无连接的客户-服务员系统,实现二者之间的数据传递。下面是一个简单的UDP客户-服务员程序的实例,作为参考。说明:下述

    21、服务员程序保存在服务器端,可以直接从服务器拷贝,并稍作修改(如服务员IP地址)后在本地进行编译连接并运行。数据采集器的红色按钮要求按出来,使监控机捕获到局域网的数据。#include #include #define SERV_UDP_PORT 6000 /*服务员进程端口号,视具体情况而定*/#define SERV_HOST_ADDR 10.60.46.58 /*服务员地址,视具体情况而定*/* 宏定义用来打印错误消息*/#define PRINTERROR(s) fprintf(stderr,n%: %dn, s, WSAGetLastError()/数据报通信的服务员端子程序 /voi

    22、d DatagramServer(short nPort) SOCKET theSocket; /*创建一个数据报类型的socket*/ theSocket = socket(AF_INET, / 地址族 SOCK_DGRAM, / socket类型 IPPROTO_UDP);/ 协议类型:UDP/*错误处理*/ if (theSocket = INVALID_SOCKET) PRINTERROR(socket(); return; /*填写服务员地址结构*/ SOCKADDR_IN saServer; saServer.sin_family = AF_INET; saServer.sin_a

    23、ddr.s_addr = INADDR_ANY; / 由WinSock指定地址 saServer.sin_port = htons(nPort); / 服务员进程端口号 /* 将服务员地址和已创建的socket绑定*/ int nRet; nRet = bind(theSocket, / Socket 描述符 (LPSOCKADDR)&saServer, / 服务员地址 sizeof(struct sockaddr) /地址长度 );/*错误处理*/ if (nRet = SOCKET_ERROR) PRINTERROR(bind(); closesocket(theSocket); retu

    24、rn; /* 等待来自客户端的数据*/ SOCKADDR_IN saClient; char szBuf1024; int nLen; while(1) /*准备接收数据*/ memset(szBuf, 0, sizeof(szBuf); nRet = recvfrom(theSocket, / 已绑定的socket szBuf, / 接收缓冲区 sizeof(szBuf), / 缓冲区大小 0, / Flags (LPSOCKADDR)&saClient, / 接收客户端地址的缓冲区 &nLen); / 地址缓冲区的长度 /*打印接收到的信息*/ printf(nData received:

    25、 %s, szBuf); /* 发送数据给客户端*/ strcpy(szBuf, From the Server); sendto(theSocket, / 已绑定的socket szBuf, / 发送缓冲区 strlen(szBuf), / 发送数据的长度 0, / Flags (LPSOCKADDR)&saClient, / 目的地址 nLen); / 地址长度 closesocket(theSocket); return;/数据报服务员端主程序 /void main() WORD wVersionRequested = MAKEWORD(1,1); WSADATA wsaData; in

    26、t nRet; short nPort; nPort = SERV_UDP_PORT; /* 初始化Winsock*/ nRet = WSAStartup(wVersionRequested, &wsaData); if (wsaData.wVersion != wVersionRequested) fprintf(stderr,n Wrong versionn); return; /*调用数据服务员子程序*/ DatagramServer(nPort); /*结束WinSock*/ WSACleanup();请学生认真阅读分析上述服务员程序,然后根据实验原理二中介绍的内容,自行编写相应的无连

    27、接的客户端程序并运行。从而实现客户和服务器间的数据传输。要求在仿真机端运行客户端进程,在监控机端捕获数据并进行分析。【思考问题】根据实验中记录的客户和服务器程序的端口号并结合程序,说明:在客户/服务器模型当中,客户进程的端口号和服务器进程的端口号都是由程序给出说明的吗?为什么?【实验报告要求】1、 写出客户端程序。2、 回答提出的问题。实验二 使用层协议分析:TELNET及FTP【实验目的】了解TELNET、FTP协议【实验学时】4学时【实验类型】综合型【实验要求】1、理解TELNET协议及作用2、理解FTP协议及工作原理【实验原理】1、TELNET命令:名称代码(十进制)描述EOF236文件

    28、结束符SUSP237挂起当前进程(作业控制)ABORT238异常中止进程EOR239记录结束符iSE240自选项结束NOP241无操作DM242数据标记BRK243中断IP244中断进程AO245异常中止输出AYT246对方是否还在运行?EC247转义字符EL248删除行GA249继续进行SB250子选项开始WILL251同意启动(enable)选项WONT252拒绝启动选项DO253认可选项请求DONT254拒绝选项请求IAC255数据字节255选项协商:4种请求1)WILL:发送方本身将激活选项2)DO:发送方想叫接受端激活选项3)WONT:发送方本身想禁止选项4)DONT:发送方想让接受端去禁止选项常用Telnet选项代码:选项标识名称1回显3抑制继续进行5状态6定时标记24终端类型31窗口大小32终端速度33远程流量控制34行方式36环境变量【实验步骤】练习一:运行TELNET命令 捕获数据并分析1、在DOS命令提示符下运行:a. telnet 本机名b. telnet 本机IP地址


    注意事项

    本文(《互联网原理和应用》实验大纲和指导书.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1

    收起
    展开