《网络编程复2习题.doc》由会员分享,可在线阅读,更多相关《网络编程复2习题.doc(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、一、选择题(共15题,每题2分,共30分)1. 下列不属于应用层协议的是 A 。A.UDP B. SNMP C. TELNET D. HTTP2. DNS是指(B ) A. 发信服务器 B.域名服务器 C. 收信服务器 D.邮箱服务器3. 环回地址是指 C 。A. 255.255.255.255 B. 127.255.255.255 C. 127.0.0.1 D. 10.0.0.04. 以下哪些不是UDP协议的特性 A 。A. 提供可靠服务 B. 提供无连接服务C. 提供端到端服务 D. 提供全双工服务5. 高层互连是指传输层及其以上各层协议不同的网络之间的互连。实现高层互连的设备是 D A.
2、 中继器 B. 网桥C. 路由器D. 网关6. IP路由器设计的重点是提高接收,处理和转发分组速度,其传统IP路由转发功能主要由_A_ 实现A. 软件B. 硬件C. 专用ASIC D. 操作系统7利用HTML开发的静态网页,其扩展名应为 A 。A. .htm B. .aspx C. .asp D.没有严格限制8. IP服务的3个主要特点是 A 。A. 不可靠、面向无连接和尽最大努力投递B. 可靠、面向连接和尽最大努力投递C. 不可靠、面向连接和全双工D. 可靠、面向无连接和全双工9. IEEE 802 标准中的介质访问控制子层的功能对应于 OSI参考模型中的_B_。A.物理层 B.数据链路层
3、C.网络层 D.会话层10. 具有对帧进行接收功能的设备是_B_。A.中继器B.网桥C.路由器D.网关11. 在基于 IP 协议的传输协议中,适于发送实时性要求大于正确性要求的信息的协议是_B_协议。A.TCP B.UDP C.DNS D.FTP12.下列关于HTTP的描述那个不正确?CA超文本传输协议 (Hypertext Transfer Protocol, HTTP) 是一个“请求-回应”的应用协议B这个协议支持一套固定的方法如 GET、POST、PUT、DELETE 等。一般用 GET 方法向服务器请求资源。C属于一种UDP协议D 可以使用 GET 和 POST 方法向服务器发送数据1
4、3. 简单网络管理协议SNMP处于网络体系结构的哪一层?CA.互连层B.传输层C.应用层D.逻辑链路控制层14. 在电子商务的分类中,消费者对消费者的电子商务称为_C_。A.B2B B.B2C C.C2C D.B2G15. HTTP协议绑定的端口号是 C 。 A151 B. 23 C. 80 D. 8081二、填空题(共10空,每空1分,共10分)1.不使用IP地址,可以使用 Locahost来访问本机的默认Web主页。2. 电子商务的体系结构可以分为网络基础平台、安全结构、_支付体系_和业务系统 4 个层次。3.socket套接字的三种类型:_流式套接字_、_数据报套接字_和_原始套接字_。
5、4HTTP协议中POST方法用来请求数据,它适用于_需要客户填写表单_的场合。5.对Ethernet(以太网)实现实时捕捉数据包需提供两种模式:_半双工_模式和_全双工_模式。6Winsock中函数调用WSASocket(AF_INET,SOCK_RAW,IPPROTO_IP,NULL,0, WSA_FLAG_OVERLAPPED);真,AF_INET是指_网际网区域_,SOCK_RAW是指_原始套接字_。三、问答题(共5题,前面4题每题10分,最后1题20分)1请对TCP协议和UDP协议作出比较。答:(1)基于连接与无连接(2)对系统资源的要求(TCP较多,UDP较少)(3)UDP程序机构较
6、简单(4)流模式与数据报模式2.URL的组成部分3ARP协议的工作过程它的工作原理非常简单:1. 首先,每一台主机都会在 ARP 快取缓冲区 (ARP Cache)中建立一个 ARP 表格,用来记录 IP 位址和实体位址的对应关系。这个 Table 的每一笔资料会根据自身的存活时间递减而最终消失,以确保资料的真实性。 2. 当发送主机有一个封包要传送给目的主机的时候,并且获得目的主机的 IP 位址;那发送主机会先检查自己的 ARP 表格中有没有该 IP 位址的实体位址对应。如果有,就直接使用此位址来传送框包;如果没有,则向网路发出一个 ARP Request 广播封包,查询目的主机的实体位址。
7、这个封包会包含发送端的 IP 位址和实体位址资料。 3. 这时,网路上所有的主机都会收到这个广播封包,会检查封包的 IP 栏位是否和自己的 IP 位址一致。如果不是则忽略;如果是则会先将发送端的实体位址和 IP 资料更新到自己的 ARP 表格去,如果已经有该 IP 的对应,则用新资料覆盖原来的;然后再回应一个 ARP Reply 封包给对方,告知发送主机关于自己的实体位址; 4. 当发送端接到 ARP Reply 之后,也会更新自己的 ARP 表格;然后就可以用此纪录进行传送了。 5. 如果发送端没有得到 ARP Reply ,则宣告查询失败。4 请简述静态网页和动态网页的工作原理一、静态网页
8、的工作原理如下:A、用户在浏览器的地址栏输入要访问的地址并回车,触发这个浏览请求。B、浏览器将请求发送到Web服务器。C、Web服务器接受这个请求,并根据请求文件的后缀名判定是否为HTML文件。D、Web服务器从服务器硬盘的指定位置或内存中读取正确的HTML文件然后将它发送给请求浏览器。E、用户的浏览器解析这些HTML代码并将它显示出来。二、动态网页的工作原理如下: 当用户请求的是一个动态网页时,服务器要做更多的工作才能把用户请求的信息发送回去,服务器一般按照以下步骤进行工作:A、 服务器端接受请求。B、Web服务器从服务器硬盘指定的位置或内存中读取动态网页文件。C、执行网页文件的程序代码,将
9、含有程序代码的动态网页转化为标准的静态页面(HTML)。D、Web服务器将生成的静态页面代码发送给请求浏览器。5 Windows中socket通信中,服务端(Server)程序的编码步骤及主要核心代码一、服务器端操作 socket(套接字) 1)在初始化阶段调用WSAStartup()此函数在应用程序中初始化Windows Sockets DLL ,只有此函数调用成功后,应用程序才可以再调用其他Windows Sockets DLL中的API函数。在程式中调用该函数的形式如下:WSAStartup(WORD)(18|1),(LPWSADATA)&WSAData),其中(18|1)表示我们用的是
10、WinSocket1.1版本,WSAata用来存储系统传回的关于WinSocket的资料。2)建立Socket初始化WinSock的动态连接库后,需要在服务器端建立一个监听的Socket,为此可以调用Socket()函数用来建立这个监听的Socket,并定义此Socket所使用的通信协议。此函数调用成功返回Socket对象,失败则返回INVALID_SOCKET(调用WSAGetLastError()可得知原因,所有WinSocket 的函数都可以使用这个函数来获取失败的原因)。SOCKET PASCAL FAR socket( int af, int type, int protocol )
11、参数: af:目前只提供 PF_INET(AF_INET);type:Socket 的类型 (SOCK_STREAM、SOCK_DGRAM);protocol:通讯协定(如果使用者不指定则设为0);如果要建立的是遵从TCP/IP协议的socket,第二个参数type应为SOCK_STREAM,如为UDP(数据报)的socket,应为SOCK_DGRAM。3)绑定端口接下来要为服务器端定义的这个监听的Socket指定一个地址及端口(Port),这样客户端才知道待会要连接哪一个地址的哪个端口,为此我们要调用bind()函数,该函数调用成功返回0,否则返回SOCKET_ERROR。int PASCA
12、L FAR bind( SOCKET s, const struct sockaddr FAR *name,int namelen );参 数: s:Socket对象名;name:Socket的地址值,这个地址必须是执行这个程式所在机器的IP地址;namelen:name的长度;如果使用者不在意地址或端口的值,那么可以设定地址为INADDR_ANY,及Port为0,Windows Sockets 会自动将其设定适当之地址及Port (1024 到 5000之间的值)。此后可以调用getsockname()函数来获知其被设定的值。4)监听当服务器端的Socket对象绑定完成之后,服务器端必须建立
13、一个监听的队列来接收客户端的连接请求。listen()函数使服务器端的Socket 进入监听状态,并设定可以建立的最大连接数(目前最大值限制为 5, 最小值为1)。该函数调用成功返回0,否则返回SOCKET_ERROR。int PASCAL FAR listen( SOCKET s, int backlog );参 数: s:需要建立监听的Socket;backlog:最大连接个数;服务器端的Socket调用完listen()后,如果此时客户端调用connect()函数提出连接申请的话,Server 端必须再调用accept() 函数,这样服务器端和客户端才算正式完成通信程序的连接动作。为了知
14、道什么时候客户端提出连接要求,从而服务器端的Socket在恰当的时候调用accept()函数完成连接的建立,我们就要使用WSAAsyncSelect()函数,让系统主动来通知我们有客户端提出连接请求了。该函数调用成功返回0,否则返回SOCKET_ERROR。int PASCAL FAR WSAAsyncSelect( SOCKET s, HWND hWnd,unsigned int wMsg, long lEvent );参数: s:Socket 对象;hWnd :接收消息的窗口句柄;wMsg:传给窗口的消息;lEvent:被注册的网络事件,也即是应用程序向窗口发送消息的网路事件,该值为下列值
15、FD_READ、FD_WRITE、FD_OOB、FD_ACCEPT、FD_CONNECT、FD_CLOSE的组合,各个值的具体含意为FD_READ:希望在套接字S收到数据时收到消息;FD_WRITE:希望在套接字S上可以发送数据时收到消息;FD_ACCEPT:希望在套接字S上收到连接请求时收到消息;FD_CONNECT:希望在套接字S上连接成功时收到消息;FD_CLOSE:希望在套接字S上连接关闭时收到消息;FD_OOB:希望在套接字S上收到带外数据时收到消息。 具体应用时,wMsg应是在应用程序中定义的消息名称,而消息结构中的lParam则为以上各种网络事件名称。所以,可以在窗口处理自定义消
16、息函数中使用以下结构来响应Socket的不同事件:switch(lParam) case FD_READ: break;case FD_WRITE、 break; 5)服务器端接受客户端的连接请求当Client提出连接请求时,Server 端hwnd视窗会收到Winsock Stack送来我们自定义的一个消息,这时,我们可以分析lParam,然后调用相关的函数来处理此事件。为了使服务器端接受客户端的连接请求,就要使用accept() 函数,该函数新建一Socket与客户端的Socket相通,原先监听之Socket继续进入监听状态,等待他人的连接要求。该函数调用成功返回一个新产生的Socket对
17、象,否则返回INVALID_SOCKET。SOCKET PASCAL FAR accept( SCOKET s, struct sockaddr FAR *addr,int FAR *addrlen );参数:s:Socket的识别码;addr:存放来连接的客户端的地址;addrlen:addr的长度6)结束 socket 连接结束服务器和客户端的通信连接是很简单的,这一过程可以由服务器或客户机的任一端启动,只要调用closesocket()就可以了,而要关闭Server端监听状态的socket,同样也是利用此函数。另外,与程序启动时调用WSAStartup()憨数相对应,程式结束前,需要调用
18、 WSACleanup() 来通知Winsock Stack释放Socket所占用的资源。这两个函数都是调用成功返回0,否则返回SOCKET_ERROR。 int PASCAL FAR closesocket( SOCKET s );参 数:s:Socket 的识别码;int PASCAL FAR WSACleanup( void );参 数: 无二、客户端Socket的操作1)建立客户端的Socket客户端应用程序首先也是调用WSAStartup() 函数来与Winsock的动态连接库建立关系,然后同样调用socket() 来建立一个TCP或UDP socket(相同协定的 sockets
19、才能相通,TCP 对 TCP,UDP 对 UDP)。与服务器端的socket 不同的是,客户端的socket 可以调用 bind() 函数,由自己来指定IP地址及port号码;但是也可以不调用 bind(),而由 Winsock来自动设定IP地址及port号码。2)提出连接申请客户端的Socket使用connect()函数来提出与服务器端的Socket建立连接的申请,函数调用成功返回0,否则返回SOCKET_ERROR。int PASCAL FAR connect( SOCKET s, const struct sockaddr FAR *name, int namelen );参 数:s:S
20、ocket 的识别码;name:Socket想要连接的对方地址;namelen:name的长度三、数据的传送虽然基于TCP/IP连接协议(流套接字)的服务是设计客户机/服务器应用程序时的主流标准,但有些服务也是可以通过无连接协议(数据报套接字)提供的。先介绍一下TCP socket 与UDP socket 在传送数据时的特性:Stream (TCP) Socket 提供双向、可靠、有次序、不重复的资料传送。Datagram (UDP) Socket 虽然提供双向的通信,但没有可靠、有次序、不重复的保证,所以UDP传送数据可能会收到无次序、重复的资料,甚至资料在传输过程中出现遗漏。由于UDP S
21、ocket 在传送资料时,并不保证资料能完整地送达对方,所以绝大多数应用程序都是采用TCP处理Socket,以保证资料的正确性。一般情况下TCP Socket 的数据发送和接收是调用send() 及recv() 这两个函数来达成,而 UDP Socket则是用sendto() 及recvfrom() 这两个函数,这两个函数调用成功发挥发送或接收的资料的长度,否则返回SOCKET_ERROR。 int PASCAL FAR send( SOCKET s, const char FAR *buf,int len, int flags );参数:s:Socket 的识别码buf:存放要传送的资料的暂
22、存区len buf:的长度flags:此函数被调用的方式对于Datagram Socket而言,若是 datagram 的大小超过限制,则将不会送出任何资料,并会传回错误值。对Stream Socket 言,Blocking 模式下,若是传送系统内的储存空间不够存放这些要传送的资料,send()将会被block住,直到资料送完为止;如果该Socket被设定为 Non-Blocking 模式,那么将视目前的output buffer空间有多少,就送出多少资料,并不会被 block 住。flags 的值可设为 0 或 MSG_DONTROUTE及 MSG_OOB 的组合。int PASCAL FA
23、R recv( SOCKET s, char FAR *buf, int len, int flags );参数:s:Socket 的识别码buf:存放接收到的资料的暂存区len buf:的长度flags:此函数被调用的方式对Stream Socket 言,我们可以接收到目前input buffer内有效的资料,但其数量不超过len的大小。四、自定义的CMySocket类的实现代码:根据上面的知识,我自定义了一个简单的CMySocket类,下面是我定义的该类的部分实现代码: CMySocket:CMySocket() : file:/类的构造函数WSADATA wsaD;memset( m_L
24、astError, 0, ERR_MAXLENGTH );/ m_LastError是类内字符串变量,初始化用来存放最后错误说明的字符串;/ 初始化类内sockaddr_in结构变量,前者存放客户端地址,后者对应于服务器端地址;memset( &m_sockaddr, 0, sizeof( m_sockaddr ) );memset( &m_rsockaddr, 0, sizeof( m_rsockaddr ) );int result = WSAStartup(WORD)(1h_addr)-s_addr;m_sockaddr.sin_addr.s_addr = lIPAddress;else
25、m_sockaddr.sin_addr.s_addr = inet_addr( strRemote );m_sockaddr.sin_family = AF_INET;m_sockaddr.sin_port = htons( iPort );if( connect( m_hSocket, (SOCKADDR*)&m_sockaddr, sizeof( m_sockaddr ) ) = SOCKET_ERROR )set_LastError( connect() failed, WSAGetLastError() );return ERR_WSAERROR;return ERR_SUCCESS;
26、/int CMySocket:Bind( char* strIP, unsigned int iPort )/绑定函数;if( strlen( strIP ) = 0 | iPort = 0 )return ERR_BADPARAM;memset( &m_sockaddr,0, sizeof( m_sockaddr ) );m_sockaddr.sin_family = AF_INET;m_sockaddr.sin_addr.s_addr = inet_addr( strIP );m_sockaddr.sin_port = htons( iPort );if ( bind( m_hSocket
27、, (SOCKADDR*)&m_sockaddr, sizeof( m_sockaddr ) ) = SOCKET_ERROR ) set_LastError( bind() failed, WSAGetLastError() );return ERR_WSAERROR;return ERR_SUCCESS;int CMySocket:Accept( SOCKET s )/建立连接函数,S为监听Socket对象名;int Len = sizeof( m_rsockaddr );memset( &m_rsockaddr, 0, sizeof( m_rsockaddr ) );if( ( m_hS
28、ocket = accept( s, (SOCKADDR*)&m_rsockaddr, &Len ) ) = INVALID_SOCKET )set_LastError( accept() failed, WSAGetLastError() );return ERR_WSAERROR;return ERR_SUCCESS;int CMySocket:asyncSelect( HWND hWnd, unsigned int wMsg, long lEvent )file:/事件选择函数;if( !IsWindow( hWnd ) | wMsg = 0 | lEvent = 0 )return E
29、RR_BADPARAM;if( WSAAsyncSelect( m_hSocket, hWnd, wMsg, lEvent ) = SOCKET_ERROR )set_LastError( WSAAsyncSelect() failed, WSAGetLastError() ); return ERR_WSAERROR;return ERR_SUCCESS;int CMySocket:Listen( int iQueuedConnections )/监听函数;if( iQueuedConnections = 0 )return ERR_BADPARAM;if( listen( m_hSocke
30、t, iQueuedConnections ) = SOCKET_ERROR )set_LastError( listen() failed, WSAGetLastError() );return ERR_WSAERROR;return ERR_SUCCESS;int CMySocket:Send( char* strData, int iLen )/数据发送函数;if( strData = NULL | iLen = 0 )return ERR_BADPARAM;if( send( m_hSocket, strData, iLen, 0 ) = SOCKET_ERROR )set_LastE
31、rror( send() failed, WSAGetLastError() );return ERR_WSAERROR;return ERR_SUCCESS;/int CMySocket:Receive( char* strData, int iLen )/数据接收函数; if( strData = NULL )return ERR_BADPARAM;int len = 0;int ret = 0;ret = recv( m_hSocket, strData, iLen, 0 );if ( ret = SOCKET_ERROR )set_LastError( recv() failed, W
32、SAGetLastError() );return ERR_WSAERROR;return ret;void CMySocket:set_LastError( char* newError, int errNum )file:/WinSock API操作错误字符串设置函数;memset( m_LastError, 0, ERR_MAXLENGTH );memcpy( m_LastError, newError, strlen( newError ) );m_LastErrorstrlen(newError) 1 = 0;有了上述类的定义,就可以在网络程序的服务器和客户端分别定义CMySocke
33、t对象,建立连接,传送数据了。例如,为了在服务器和客户端发送数据,需要在服务器端定义两个CMySocket对象ServerSocket1和ServerSocket2,分别用于监听和连接,客户端定义一个CMySocket对象ClientSocket,用于发送或接收数据,如果建立的连接数大于一,可以在服务器端再定义CMySocket对象,但要注意连接数不要大于五。 由于Socket API函数还有许多,如获取远端服务器、本地客户机的IP地址、主机名等等,读者可以再此基础上对CMySocket补充完善,实现更多的功能。 一、选择题(共15题,每题2分,共30分)1.HDLC协议中,_D_帧的功能是轮
34、询(polling)和选择。AIBS CU DA和B2.不具有差错控制功能的是_A_。A线路交换B报文交换 C分组交换 D以上3项都不是3.不使用“存储-转发”交换方式的有_B_。A. 报文交换 B线路交换 C分组交换 D帧交换4根据不同的取值范围,IP地址可分为五类。202.109.104.3属于_C_。AA类IP地址BB类IP地址 CC类IP地址DD类IP地址5HTTP协议绑定的端口号是_C_。 A151 B. 23 C. 80 D. 80816. 在电子商务的分类中,消费者对消费者的电子商务称为_C_。AB2B BB2C CC2C DB2G7. 网络营销过程大致可分为几个阶段。AA广告与
35、浏览、订购、支付、送货 B浏览、订购、支付、确认、送货C广告、订购、支付、送货 D广告与浏览、订购、确认、支付、送货8.数据链路层中二进制指数退避算法解决了_B_。A.站点检测到冲突后延迟发送的时间 B. 站点检测到冲突后继续等待的时间C.站点是如何对冲突进行检测 D. 站点如何避免冲突9.下列关于CSMA/CD的描述,正确的是_B_。A. CSMA/CD说明站点在发送完帧之后再对冲突进行检测B. CSMA/CD说明在站点发送帧期间,同时再对冲突进行检测C. CSMA/CD说明站点发送帧和检测冲突并不是在同一个站上进行D. CSMA/CD说明在一个站上发送的帧,只有当另一个站没有收到时,才对冲
36、突进行检测10.FDDI的MAC帧中_D_是可变的。A.前同步码 B. 地址域 C.数据域 D.B和C11.在PPP帧中,_D_域用于差错控制。A.报头 B.控制 C.协议 D.FCS12.WAP协议的基础是_B_。A.IP协议 B.HTTP/HTML协议 C.PPP协议 D.HDLC协议13.实现WAP的关键是_A_。A.具备WAP功能的终端 B.高性能基站 C.WAP网关 D.所使用的频段14.ICMP在两台机器上的_B_之间提供直接通信。A.物理线路 B.Internet协议软件 C.数据链路层 D.应用层软件15.为了使互联网中的路由器报告差错或提供有关意外情况的信息,在TCP/IP中
37、设计了一个特殊用途的报文机制,称为_C_。A.ARP B.RARP C.ICMP D.IGMP二、填空题(共10空,每空1分,共10分)1.发送ICMP会送请求的命令是_。2. ICMP在TCP/IP协议集中属于_层。3.ICMP回送请求和应答都是在_协议数据报中传送的。4.自治系统和核心系统通过_BGP(边界网关协议)_协议交换路由信息。5.当主机知道它的物理地址,但不知道它的IP地址,可以使用_ICMP_协议。6.一个E-mail地址为abc , _是它的域名。7.RSA算法是基于_密码方法。8.在OSI七层模型中,加密和解密是_表示_层的功能。9.浏览器是一个HTTP_。10.IP分组封
38、装在_链路_层帧中。三、问答题(共5题,前面4题每题10分,最后1题20分)1.写出TCP/IP协议簇的5层结构,并简要描述其功能。物理层为设备之间的数据通信提供传输媒体及互连设备,为数据传输提供可靠的环境。2 论述Web页面的处理过程。3简述在客户机/服务器模式下,服务器端的功能。4网络命令tracert的实现原理Traccrt 工作原理 通过向目标发送不同的IP生存时间(TTL)值的intemet 控制消息协议(ICMP)回应数据包,Traccrt论断程序确定到目标所采取的路由,要求路径上的每个路由器在转发数据包之前至少将数据包上的TTL递减1,数据包上的TTL减为0时,路由器应该将ICMP已超时的消息发回源系统.Traccrt先发送TTL为1的回应数据包,并在随后的每次发送过程 将TTL递增1.直到目标响应或TTL达到最大值,从而确定路由,通过检查中间路由器发回的“ICMP”已超时的消息确定路由,某些路由器不经询问直接丢弃TTL过期的数据包,这在Traccrt实用程序中看不到 Traccrt命令按顺序打印返回“ICMP已超时”消息的路径中的近端路由器接口列表。如果使用-d选项,刚Traccrt实用程序不在每个IP地址上查询DNS5Windows中socket通信中,服务端(Client)程序的编码步骤及主要核心代码