XX大学网络程序设计考点完美版.docx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《XX大学网络程序设计考点完美版.docx》由用户(2023DOC)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- XX 大学 网络程序设计 考点 完美
- 资源描述:
-
1、For personal use only in study and research; not for commercial use 第一章 网络编程概述1.3 网络协议1、 套接口编程接口(API)位置套接口编程接口(API)位置上三层(应用层)到传输层的接口使用套接口编写使用TCP/UDP协议的网络应用程序理由应用层处理具体应用(FTP、Telnet、HTTP)的细节;对通信细节一无所知下四层,处理通信细节:收发数据、等待确认、排序、计算和验证校验和;对应用一无所知应用层构成用户的进程;下四层为OS内核的一部分提供2、 internet协议(IP)、图Internet协议(IP)网际协议
2、IP是TCP/IP的核心协议,也是网络层中最重要的协议。接收由更低层(网络接口层,例如以太网设备驱动程序)发来的数据包,并把该数据包发送到TCP层或UDP层;把从TCP或UDP层接收来的数据包传送到更低层。IP协议提供面向无连接的、不可靠的数据报传输服务没有确认数据包顺序和是否被破坏IP数据包含 源地址和目的地址。高层的TCP和UDP服务以IP地址为认证基础。提供了递送分组的服务3、 internet消息控制协议(ICMP)、图 1)ping2)差错报告,测试报告Internet消息控制协议(Internet Control Message Protocol)ICMP与IP位于同一层,用来传送
3、IP的控制信息ICMP数据包被封装在IP数据包的数据部分中进行传输发送IP数据包时发生错误,路由器使用ICMP协议来报告错误消息和控制消息PING是最常用的基于ICMP的服务(回显应答与回显请求,两种报文)差错报告和测试查询两类一般由TCP/IP网络软件自身处理,而非用户进程4、internet组管理协议(IGMP)Internet组管理协议(IGMP)IGMP数据包也是嵌入在IP数据包内进行传输多播路由器使用IGMP协议来查询多播组内有哪些主机,主机则在加入和退出多播组时使用IGMP协议向路由器发出通告,或者使用IGMP协议响应多播路由器的查询IPv4中可选,IPv6中没有6.用户数据报协议
4、(UDP)端口号概念用户数据报协议(UDP)UDP与TCP位于同一层(传输层),都建立在IP协议的基础上提供非面向连接的和不可靠的简单的数据报服务不可用于使用虚电路的面向连接的服务主要用于面向查询/应答的服务具有较高的效率,不须要花费开销建立连接;常用于交换量较少的服务如:NFS每个客户机的请求都是独立和无序的对客户机而言,每个服务器的应答都是独立和无序的同一个客户端用同一个套接口可以与多个服务器收发数据包,反之也是UDP协议增加了端口号的概念不同的进程使用不同的端口每个端口有一个惟一的整数标识端口号分为公认端口和自由端口号两种服务器使用公认端口号来提供服务客户机使用自由端口号与服务器通信小于
5、1024的端口号被用做保留端口号,常被用来提供公共服务。例如HTTP服务的标准端口号是80,FTP的标准端口号是21。必须在应用程序上建立特性,确保可靠性7、传输控制协议(TCP)可靠性(本身不能保证把数据传送到对方,只是可靠投递或故障的可靠通知)传输控制协议(Transmission Control Protocol)提供虚电路服务,它面向连接,提供可靠、双向、有序、无重复的数据流服务-无记录边界可以解决网络通信中的数据丢失、重复、出错、无序等问题TCP协议根据接收方所能接收信息的最大发送速度传输数据并以接收方所能接收的最大发送长度把用户数据分段发送其本身并不能保证把数据传送到对方,只是可靠
6、投递或故障的可靠通知协议描述通信之前,必须先建立一条连接;通信结束,应该断开连接用确认和超时重传保证通信的可靠性用序列号保持字节流的顺序;为每个要发送的字节数据分配一个序列号,并将起始序列号通知对方提供流量控制,接收方总是把它能接收的数据量告诉对方,设置了一个大小可变的接收窗口。窗口大小在确认数据段中,通知对方,发送方据此发送数据全双工信道TCP不支持多点播送或广播8、码位码位:URG(urgent)位:如果使用紧急数据指针,则将这一位设置成1。ACK(acknowledge)位:如果确认序列号有效,则将这一位设置成1。PSH(push)位:表示“推”数据,如果这一位设置成1,则表示希望接收方
7、在接收到这个数据段之后,立即将它传送给高层应用程序,而不是缓存起来。RST(reset)位:表示请求重置连接。当TCP协议接收到一个不能处理的数据段时,向对方TCP协议发送这种数据段,表示这个数据段所标识的连接出现了某种错误,请求对方TCP协议将这个连接清除。SYN(synchronize)位:请求建立连接。TCP用这种数据段向对方TCP协议请求建立连接。在这个数据段中,TCP协议将它选择的初始序列号通知对方,并且与对方协议协商最大数据段的大小。SYN数据段的序列号为初始序列号,这个SYN数据段能够被确认。当协议接收到对方这个数据段的确认之后,建立TCP连接。紧急指针:如果设置了紧急指针位(U
8、RG),这个域指出紧急数据相对于这个数据段的开始序列号的偏移量。TCP协议只提供一字节的紧急数据紧急指针指向紧急数据的下一个字节位置。9建立连接(三次握手)、图建立连接双方发送各自的同步请求,并收到对方确认AB SYN my sequence number is X。A向B发送同步请求,附序号XAB ACK your sequence number is X。B响应序号为X的A同步请求AB SYN my sequence number is Y。B向A发送同步请求,附序号YAB ACK your sequence number isY。A响应序号为Y的B同步请求10、TCP连接终止TCP连接终
9、止客户端调用close,主动关闭,发送FIN,表示数据发送完毕(假设客户端主动关闭)服务器接收到FIN,被动关闭,由TCP确认这个FIN。将文件结束符传递给接收端应用程序,表明应用程序再也接收不到数据一段时间后,服务器调用close关闭它的套接口,也发送一个FIN客户端收到FIN并确认总之,每个方向都有一个FIN和ACK11、标识一条连接,状态转换图四个信息本地IP地址、本地端口号、远地IP地址、远地端口号标识一条连接TCP协议中,使用四个信息完全标识一条连接:本地IP地址、本地端口号、远地IP地址、远地端口号。连接一端的IP地址和端口号组成了一个套接口(socket)的地址部分。连接双方的套
10、接口组成一个套接口对,一个套接口对惟一地标识一条TCP连接。12、TIME_WAIT存在的两个理由TIME_WAIT状态存在的两个理由:主动关闭的那端进入TIME_WAIT状态,持续时间是2个MSL(最大分节生命期)可靠的实现TCP全双工连接的终止假设最终的ACK丢失允许老的重复分节在网络中的消逝13、流控制传输协议特性流控制传输协议(Stream Control Transmission Protocol)较新的协议在客户和服务器之间提供关联,应用层提供可靠性、有序、流量控制以及全双工的数据传输服务。(TCP)面向消息的通信,提供各个记录按序投递服务,保护数据消息边界(UDP) 14、TCP
11、.UDP1)PDU2)SDU3)如何分片TCP和UDP的PDU、SDU和分片(MSS,MTU)PDU(协议数据单元):对等实体间交换的单位信息SDU(服务数据单元):每层的PDU通过由相邻下层提供的服务接口,作为下层的SDU传递给下层,由下层间接完成本层的PDU交换如果本层PDU大小超过紧邻下层的最大SDU,本层事先将PDU分片让下层载送,再在反方向上重组。1.4 网络编程模式与编程接口1.客户机、服务器模式(C/S)1)重复服务器2)并发服务器3)典型C/S模型客户机/服务器模式(C/S模式)服务器:为应用提供服务的主机;一直等待客户请求,以便为客户提供服务客户机:向服务器提出服务要求,并等
12、待传回的结果服务:文件传送,电子邮件,远程登录,时间服务网络应用的标准模型是C/S模型C/S模型是非对称模型重复服务器(iterative server),也称循环服务器在同一个时刻只可以响应一个客户端的请求。这种服务器上的进程能够预知在短时间内可以处理完请求,便亲自处理它。例如,典型的服务是通报时间。并发服务器(concurrent server)在同一个时刻可以响应多个客户端的请求。这种服务器上的进程事先不能预知完成服务请求需要花多长时间,便以并发的方式处理它。并发服务器通过激活别的进程来完成服务请求,而本身转入睡眠状态以等待另一个请求的到来。典型的服务是处理文件信息,例如对文件的访问和打
13、印文件。1.6变元表。环境表.gcc编译器。gdb常用命令变元表变元表是用来向执行的程序提供参数的指向字符串的指针数组其长度可变,最大长度不应超过5120或10240个字节在C语言中变元表主要用argc,argv表示。C语言的main函数格式为:main(int argc,char argv) main函数argc,argv 参数根据需要可有可无变元表存放在进程的数据空间中,进程可以使用这些参数当一个程序被激活时,通常把这些参数放进初始堆栈main(int argc,char * argv) printf(argc:%dn,argc); printf(argv:%s,argv0); 第二章 基
14、于TCP套接口的编程2.2 套接口和套接口地址1、linux系统的套接口套接口是两个通信通道上的端节点套接口函数可以用来产生通信信道,通过信道两个应用程序间可以传送数据Linux系统的套接口网络编程接口,支持多种协议套接口地址结构“sockaddr_”开头,并以对应协议族的唯一后缀结束sockaddr_in、sockaddr_in6、sockaddr_un通用的套接字地址结构struct sockaddrunsigned short sa_family; /* 地址类型,AF_xxx,2个字节 */char sa_data14;/* 协议地址,14个字节 */;/16字节2、值结果参数值结果参
15、数函数调用时,结构大小是一个值告诉内核结构的大小,内核在写结构时不会越界函数返回时,结构大小是一个结果告诉进程结构中确实存在的信息量若套接口地址结构为定长:返回值是定长sockaddr_in(16B)、sockaddr_in6(28B)若套接口地址结构为变长:返回值是比最大值小sockaddr_un3、网络字节顺序、主机字节顺序网络字节顺序与主机字节顺内存中存储字节的两种方法将低序字节存储在起始地址:小端字节序将高序字节存储在起始地址:大端字节序将给定系统所用的字节序称为主机字节(host byte order)这两种方式都有系统使用网际协议在处理多字节整数(如传输TCP分节的协议地址16位端
16、口号,32位IP地址)时,使用大端字节序。套接口地址结构中的某些成员需要按网络字节序进行维护在填充套接口地址结构前必须考虑主机字节到网络字节之间的转换4、IP地址的使用,功能 IP地址的使用设置sockaddr_in类型地址时,需要进行字符串形式的IP地址和二进制形式的地址间转换:#include #include #include int inet_aton(const char *cp,struct in_addr *inp);/点分十进制字符串网络字节顺序二进制值unsigned long int inet_addr(const char *cp);/点分十进制字符串网络字节顺序二进制值
17、/以255.255.255.255表示出错,不能表示此广播地址char * inet_ntoa(struct in_addr in);/网络字节顺序二进制值点分十进制字符串2.3 基本套接口函数1、TCP数据流流程图2、socket()、socketpair()(socketpair()产生两个套接口)socket( ) 函数执行网络通信,进程调用socket函数,指定期望的通信协议#include #include int socket(int domain, int type, int protocol);socketpair()socketpair()产生两个套接口,并连接这两个套接口,
18、返回这两个套接口描述字3、connect()三种出错返回状态转换:CLOSED状态SYN_SENT状态ESTABLISHED状态connect函数TCP客户端与服务器建立连接用connect函数未连接的套接口 主动连接套接口#include #include int connect(int sockfd,struct sockaddr * addressp,int addrlen);成功返回:0;出错返回:-1connect的三种出错返回1 若TCP客户没有收到SYN分节的响应(ACK)返回ETIMEOUT错误调用connect函数时,系统发送SYN,若无响应则等待6秒钟再发送一个,若仍然无响
19、应则等待24秒钟后再发送一个SYN。总共等75秒后仍未收到响应则返回该错误。2 若对客户的SYN响应是RST,则表示该服务器主机在指定端口上没有进程在等待与之连接称为硬错(hard error),客户收到RST立即返回ECONNREFUSED错误目的地为某端口的SYN到达,该端口上没有正在监听的服务器TCP想取消一个已有连接TCP接收到一个根本不存在的连接上的分节【3】若客户发出的SYN在中间的某个路由器上引发一个“destination unreachable目的地不可达”ICMP错误称为软错(soft error)客户机内核保存该消息,按第一种方式继续发送SYN,规定时间内无响应,则将保持
20、的消息(ICMP错误报文)作为EHOSTUNREACH或ENETUNREACH错误返回。收到一次ICMP错误后,必须继续发送SYN,这种错误可能是暂时情况。CLOSED状态SYN_SENT状态ESTABLISHED状态若失败则套接口不再可用了,必须关闭,不能再在该套接口上调用connect函数,需要重新调用socket4、listen()listen函数监听端口:未连接的套接口 被动套接口内核应该接收指向该套接口的连接请求套接口状态:CLOSED LISTEN服务端在socket和bind后,accept前调用#include int listen(int sockfd,int backlog
21、)功能:监听本地地址和端口参数:sockfd已绑定的socket描述符backlog已完成连接、等待接收的队列长度返回值0成功,-1失败5、等待队列当客户SYN到达时,若队列是满的如果返回RST等待队列未完成连接队列:客户端发来的SYN分节对应其中一项;服务器正等待完成相应TCP三次握手。服务端为SYN_RCVD状态已完成连接队列:每个已完成三次握手的客户对应其中一项。服务端为ESTABLISHED状态未完成队列完成队列 backlog当客户SYN到达时,若队列是满的,TCP就忽略该分节,不发送RST分节。客户端会重发SYN,期望不久在队列中找到可用空间如果返回RST则出现:connect立即
展开阅读全文