版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1. TCP/UDP在传输层;IP在网络层;MAC在数据链路层2. NAT的实现方式有三种,即静态转换、动态转换和端口多路复用3. 端口号是16位的,范围在0655354. 在套接字通信中,常用套接字类型包括三类:流式套接字、数据报套接字和原始套接字 流式套接字(其类型字段的值是SOCK_STREAM): 提供面向连接的、可靠的字节流服务,应用程序所访问的传输层协议是TCP协议。 数据报式套接字(其类型字段的值是SOCK_DGRAM): 提供无连接的,不可靠的数据报服务,应用程序所访问的传输层协议是UDP协议。 原始套接字(其类型字段的值是SOCK_RAW): 允许应用程序直接对较低层的协议,
2、如IP、ICMP进行访问。5. 有状态服务器定义:保存状态信息的服务器优势:减少客户和服务器交换报文的大小;允许服务器快速相应请求 无状态服务器定义:不保存任何状态信息的服务器优势:提高协议的可靠性6. 并发服务器定义:在一个时刻只处理一个请求的服务器 循环服务器定义:在一个时刻可以处理多个请求的服务器7. 面向应用的网络编程方法(1) WinInet编程(2) 基于WWW应用的网络编程(3) 面向SOA的Web Service8. 面向原始帧的网络编程方法(1) 直接网卡编程技术(2) 基于Packet Driver的网络编程方法(3) 基于NDIS的网络编程(4) WinPcap编程9.
3、UDP是无连接的;TCP是面向连接的意义:决定了客户和服务器交互所采用的算法;决定了下层系统所提供的可靠性等级;面向连接的服务器优点:易于编程缺点:资源消耗问题无连接的服务器优点:无资源消耗问题缺点:编程复杂10. bind和listen函数是非阻塞的11. B/S模型B/S(Browse/Server)模型也叫B/S模式,它是一种基于Web的通信模型,使用HTTP通信。B/S是一种特殊的C/S模型,特殊之处就在于这种模型的客户端一般是某种流行的浏览器,例如,微软的Internet Explorer。优点:单台计算机可以访问任何一个Web服务器,不需要针对不同的服务器分别提供专用的客户端软件。
4、12. 客户/服务器模型 优点:(1)结构简单 (2)支持分布式、并发环境 (3)服务器集中管理资源,有利于权限控制和系统安全 (4)可扩展性好 缺点:(1)缺乏有效的安全性 (2)客户负荷过重 (3)服务器工作效率低 (4)容易造成网络阻塞13. 浏览器/服务器模型 优点:(1)具有分布性特点,可以随时随地进行查询、浏览等业务处理 (2)业务扩展简单方便,通过增加网页即可增加服务器功能 (3)维护简单方便 (4)开发简单,共享性强 缺点:(1)操作时以鼠标为最基本的操作方式,无法满足快速操作的要求 (2)页面动态刷新,响应速度明显降低 (3)功能弱化,难以实现传统模式下的特殊功能要求14.
5、字节顺序:大端顺序和小端顺序15. Linux中提供的基本I/O功能16. 会聚点问题的解决方案1)要求下层通信协议在请求报文到达后自动创建运行程序底层通讯程序太复杂!2)要求在任何一对进行通信的应用进程中,有一方必须在启动执行后(无限期)等待对方与其联系。客户服务器模型的解决方案17.客户端通信过程:socket初始化;创建套接字,指定使用TCP(可靠的传输服务)进行通信;指定服务器地址和通信端口;向服务器发送连接请求;进行数据传输;关闭套接字;结束对windows sockets dll的使用。18.服务器通信过程:socket初始化;创建套接字,指定使用TCP(可靠的传输服务)进行通信;
6、指定本地地址和通信端口;等待客户端的连接请求;进行数据传输;关闭套接字;结束对windows sockets dll的使用。19.接收函数的调用结果有很多种完整接收流数据int iResult, recvbuflen;char recvbuf MSGSZ;do iResult = recv(ConnectSocket, recvbuf, recvbuflen, 0); if ( iResult > 0 ) printf("Bytes received: %dn", iResult); else if ( iResult = 0 ) printf("Conne
7、ction closedn"); else printf("recv failed with error: %dn", WSAGetLastError(); while( iResult > 0 );20.接收定长数据int recvn(SOCKET s, char * recvbuf, unsigned int fixedlen) int iResult; /存储单次recv操作的返回值 int cnt; /用于统计相对于固定长度,剩余多少字节尚未接收 cnt = fixedlen; while ( cnt > 0 ) iResult = recv(
8、s, recvbuf, cnt, 0); if ( iResult < 0 ) /数据接收出现错误,返回失败 printf("接收发生错误: %dn", WSAGetLastError(); return -1; if ( iResult = 0 ) /对方关闭连接,返回已接收到的小于fixedlen的字节数 printf("连接关闭n"); return fixedlen - cnt; /printf("接收到的字节数: %dn", iResult); /接收缓存指针向后移动 recvbuf +=iResult; /更新cnt
9、值 cnt -=iResult; return fixedlen;21. 接收变长数据int recvvl(SOCKET s, char * recvbuf, unsigned int recvbuflen) int iResult;/存储单次recv操作的返回值 unsigned int reclen; /用于存储报文头部存储的长度信息 /获取接收报文长度信息 iResult = recvn(s, ( char * )&reclen, sizeof( unsigned int );if ( iResult !=sizeof ( unsigned int ) /如果长度字段在接收时没有
10、返回一个整型数据就返回(连接关闭)或-1(发生错误) if ( iResult = -1 ) printf("接收发生错误: %dn", WSAGetLastError(); return -1; else printf("连接关闭n"); return 0; /转换网络字节顺序到主机字节顺序reclen = ntohl( reclen );if ( reclen > recvbuflen ) /如果recvbuf没有足够的空间存储变长消息,则接收该消息并丢弃,返回错误 while ( reclen > 0) iResult = recvn(
11、 s, recvbuf, recvbuflen ); if ( iResult != recvbuflen ) /如果变长消息在接收时没有返回足够的数据就返回(连接关闭)或-1(发生错误) if ( iResult = -1 ) printf("收发生错误:%dn", WSAGetLastError(); return -1; else printf("连接关闭n"); return 0; reclen -= recvbuflen; /处理最后一段数据长度 if ( reclen < recvbuflen ) recvbuflen = reclen
12、; printf("可变长度的消息超出预分配的接收缓存rn"); return -1; /接收可变长消息 iResult = recvn( s, recvbuf, reclen ); if ( iResult != reclen ) /如果消息在接收时没有返回足够的数据就返回(连接关闭)或-1(发生错误) if ( iResult = -1 ) printf("接收发生错误: %dn", WSAGetLastError(); return -1; else printf("连接关闭n"); return 0; return iResu
13、lt;简答题2、阐述程序、套接字、端口和协议之间的关系程序和套接字的关系:一个程序可以同时使用多个套接字,不同套接字完成不同的传输任务。多个应用程序可以同时使用同一个套接字,不过这种情况并不常见。套接字和端口的关系:每个套接字都有一个关联的本地TCP或UDP端口,它用于把传入的分组指引到应该接收它们的应用程序。一个端口上可能关联多个套接字,流式套接字的服务器上可能同时有监听套接字和连接套接字,它们都与一个TCP的端口号相关联;一个套接字一般只会关联一个唯一的本地端口号。端口和协议的关系:TCP和UDP的端口号是独立使用的。3、在基于流式套接字的网络应用程序设计中,假设客户端以8字节-12字节-
14、8字节-12字 节的顺序交替发送数据给服务器,请思考,服务器的接收操作每次能够接收到多少字节的数据?为什么?服务器接收操作每次能够接收到的数据长度是不确定的,这是因为TCP传送数据的形态是没有间隔的字节流,数据接收仅与接收调用的时间和当前主机内核缓存中尚未提交应用程序的数据有关,与发送端发送多少次和TCP如何传送没有直接的关系,我们不能准确地预测一个特定的接收操作到底返回多少字节。4.在服务器和客户的通信过程中,服务器是如何处理多个客户服务请求的呢?1)如果是循环服务器,则服务器在与一个客户建立连接后,其他客户只能等待;当一个客户服务完之后,服务器才会接收另一个客户的服务请求;即循环服务器的通信流程中,蓝色的3个步骤是循环进行的;2)如果是并发服务器,则当服务器与一个客户进行通信的过程中,可以同时接收其他客户的服务请求,并且服务器要为每一个客户创建一个从进程,在从进程中用新创建的套接字与客户交互;即并发服务器的通
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024版农产品担保合同连带责任约定3篇
- 2024版房屋买卖合同00111110
- 二零二五年度冷链配送板车运输合同
- 2024版个人支票质权借款合同样本版
- 二零二五年度企业驾驶员劳动合同及驾驶培训协议3篇
- 2024年网络众筹项目协议3篇
- 二零二五年度【新能源】风能发电项目合作协议3篇
- 2025版康娥与丈夫情感纠葛离婚补偿协议3篇
- 二零二五年度化工产品安全生产风险评估与监测合同2篇
- 2024年版建筑设计委托合同
- 三国群英传2-所有武将属性
- 统编版语文二年级上册 句子练习专项练习题(试题)( 无答案)
- 上海市历年中考语文现代文阅读真题40篇(2003-2021)
- 肿瘤科医院感染管理制度
- 产品拆解:飞书多维表格怎么用
- 意识障碍的诊断鉴别诊断及处理
- 客房服务员(四级)考证理论考核试题及答案
- 英语演讲知到章节答案智慧树2023年哈尔滨工程大学
- 商务礼仪培训职业礼仪员工培训PPT
- 围手术期手术部位感染预防与控制措施试题及答案
- 本田品质管理基础课程(课堂PPT)
评论
0/150
提交评论