linux网络编程复习题及知识点

上传人:痛*** 文档编号:96718659 上传时间:2022-05-26 格式:DOC 页数:6 大小:209KB
收藏 版权申诉 举报 下载
linux网络编程复习题及知识点_第1页
第1页 / 共6页
linux网络编程复习题及知识点_第2页
第2页 / 共6页
linux网络编程复习题及知识点_第3页
第3页 / 共6页
资源描述:

《linux网络编程复习题及知识点》由会员分享,可在线阅读,更多相关《linux网络编程复习题及知识点(6页珍藏版)》请在装配图网上搜索。

1、1.3TCP连接的建立与终止和 TCP状态转换图-2MSL状态TCP三路握手TCP连接关闭客户Close主动关闭服务器Close战动黄闭Re ad迄回QaFLTTENTLC VAIT吋nr.:ACK:T.M茁卫 问ET打 JI皿AlTl潼送;邓ACK 1FIAIT2 V TV 工 w L*宾逵工尸_一1ACKnvEWAIT )自审 iiclusc血忑戳:9嵌示富户府状态转横*叔示服务器的状态转换2 / 6难点:执行主动关闭的那端进入这种状态。这个端点在该状态的持续时间是2MSL(最长分节生命周期)。存在TIME_WAIT状态有两个理由:1. 实现终止TCP全双工连接的可靠性(假设最后一个ack

2、丢失的情况).2. 允许老的重复分节在网络中消逝 .2.4套接字基本函数-知道怎么用这些函数套接字类型:SOCK_STREA流式套接字TCP支持;SOCK_DGRAM数据包套接字UDP支持;SOCK_RAW原始套接字允许对低于传输层的协议或物理网络直接访问; 发ICMP报、常用于检测新的协议第三章各个函数和参数的作用【close()与 shutdown。】(2)区别:(1)close将描述字的访问计数减 1,仅在此计数为0时才关闭套接口。用 shutdown可以激发TCP的正常连接终止程序,而不管访问计数; close终止了数据传送的两个方向:读和写。由于 TCP连接是全双工的,有很多时候要通

3、知另一端已完成了数据发送,即使那一端仍有许多数据要发送也 如此。Shutdown函数可以仅仅关闭连接的读、写或两个方向都关闭。函数返回的描述符设置套接字选项第四章recvfrom 和sendto函数的用法第五章默认为子进程先执行父进程后执行但是有sleep函数就不一样了地址空间、执行堆栈、文件描述进程:定义了一个计算的基本单元,可以认为是一个程序的一次运行。它是一个动态实体,是独立的任务。它拥有独立的 符等父进程监听子进程进行通信wait和waitpid 函数的用法 僵尸进程:一个已经终止,但是其 父进程尚未对其进行善后处理的进程线程的创建函数传递参数问题once函数# include int

4、 pthread_once(pthread_once_t *once_control, void (*init_routine) (void)成功返回0,否则返回错误码 如果本函数中,once_cont变量使用的初值为 PTHREAD_ONCE_INJT可保证init_routine() 函数在本进程执行序列中仅执行一次。一般在init_routine函数中完成一些初始化工作。LinuxThreads使用互斥锁和条件变量保证由pthread_once()指定的函数执行且仅执行一次,而once_cont则表征是否执行过。如果 once_control的初值不是 PTHREAD_ONCE_INIT

5、LinuxThreads 定义为 0),pthread_once()的行为就会不正常。互斥锁pthread_mutex_lock(pthread_mutex_t *mptr)返回:成功0,否则返回错误码如果互斥锁是静态分配的,就将mptr初始化为常值PTHREAD_MUTEX_INITIALIZERpthread_mutex_unlock(pthread_mutex_t *mptr)用于互斥锁解锁操作。返回:成功0,否则返回错误码线程的例子和I/O复用第六章要了解PPT上的各个函数,知道他们的作用uname函 数等第9章第13章当客户处理多个描述字(一般是交互式输入和网络套接字),必须使五个I

6、/O模型vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv兀个I/O模型的比较c JK./询1if”通加I发Hl芥特数魅设置过滤器3 / 64 个宏函数 VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFD_ZREO/将所有位设为0/、FD_CLR将fd位设为0/、FD_SET将fd位设为1/、FD_ISSET/检测fd位是否为1/select 函数该函数有三种执行结果:【永远等待下去】仅在有一个或以上描述字准备好i/o才返回,为此,我们将timeout设置为空指针。【等待固定时间】在有一个描述字准备好时返回,但不超过由timeout参数指

7、定的秒数和微秒数。【根本不等待,检查描述字后立即返回,这称为轮询】这种情况下,timeout必须指向结构timeval,且定时器的值必须为 0。每次调用select前都必须对等待描述字集合完成初始化和设置工作【Select()函数实现 I/O 多路复用的步骤】:vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv1) 清空描述符集合;2) 建立需要监视的描述符与描述符集合的联系;3) 调用select ()函数;4) 检查所有需要监视的描述符,利用FD_ISSET宏判断是否已准备好;5) 对已准备好的描述符进行 I/O操作。区别:pselect 函数使用结构 times

8、pec,而不是 timeval vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvpselect函数不能更改参数timeout,以表示还剩余多少时间。函数pselect增加了第六个参数:指向信号掩码的指针。这允许程序禁止递交某些信号,测试由这些当前禁止的信号的信号处理程序所设置的全局变量, 然后调用pselect,告诉它临时重置【套接字可读的条件主要有】:套接字接收缓冲区中的数据字节数大于等于套接字接收缓冲区低潮限度的当前值;套接字是一个监听套接字且已完成的连接数为非0。如果对方tcp发送一个FIN (对方进程终止),套接字就变为可读且read返回0。有一个套接字错误

9、待处理。【套接字可写的条件主要有】:套接字发送缓冲区的可用空间大于等于套接字发送缓冲区的低潮限度;套接字的写这一半关闭,对套接字的写将产生SIGPIPE信号;有一个套接字错误待处理【套接字的异常条件】:套接口带外数据的到达;控制状态信息的存在,可从一个已置为分组方式的伪终端读到Libpcap工作流程【Libpcap 的工作流程】VVVVVVVVVVVVVVVVVVVVVVVVVVV1、查找网络设备(pcap_lookupdev);2、获取网络地址及网络掩码( pcap_lookupnet);3、打开网络设备(pcap_open_live);4、将过滤字符串编译到过滤程序中(pcap_compi

10、le);5、设置过滤器(pcap_setfilter);6、捕获包(pcap_dispatch)非阻塞I/O模型当把一个套接字设置成非阻塞方式时,即通知内核:当请求的i/o操作非得让进程睡眠不能完成时,不要进程睡眠,而应返回一个错误。(返回不成功指示)进程阻塞干I recvfrom的调用应用孵丟统调用内按recvfrom - _一,-无裁掲报准帚好EOuLbSl OCKrecvfrom -一左載播購礁客好EWOULD 肌recvfrem 一. 数据振准各好 捲贝薮据报将数据从討伽 h贝到用戸空间拷贝完成【SO_LINGER选项】函数close缺省操作是立即返回,但如果有数据残留在套接字发送缓冲

11、区,系统将试着将这些数据发送给对方;SO_ LIN GER ( level:SOL_SOCKET )选项将改变tcp套接字关闭时的缺省行为。【原始套接字的输岀遵循以下规则】:1) 如果套接字已经连接,可以调用write、writev、send来发送数据,否则需要调用sendto或sendmsg;2) 如果IP_HDRINCL选项未设置,则内核会将IP头部之后的第一个字节作为写数据的起始地址。3) 如果设置了 IP_HDRINCL则内核会将IP头部的第一个字节作为写数据的起始地址。此时进程构造除了以下两项外的整个 段可以设为0,要求内核设置该值;(b) IPv4头部校验和由内核来计算和存储。4)

12、 IPv4数据报首部各个字段的内容 均是网络字节 序(对linux而言5) 对于超出外出接口的 MTU的分组,内核将其分片IP头部;(a) IPv4标识字【作用:原始套接字提供了一些使用tcp和udp协议不能实现的功能】1) 使用原始套接字可以读/写 ICMPv4 IGMPv4分组。女口 Ping程序,mroute程序等;2) 使用原始套接字可以读/写特殊的IPv4数据包,内核不处理这些数据报的IPv4协议字段。如大多数内核只处理ICMP IGMP TCR UDP的数据报但协议字段还可以为其他值,如OSPF直接使用IP协议,将IP数据报的协议字段设为 89,此时,就必须有专门的程序通过原始套接

13、字来处理它们;3) 利用原始套接字还可以创建自定义的IP数据报首部,编写基于IP协议的高层网络协议。【常用的网络命令】1、ping :检测主机连接状况2、 ifconfig:显示当前有效网络接口的状态3、netstat :显示网络状态。如显示网络连接、路由表和网络接口信息。4、route :对内核的IP路由表进行操作5、tcpdump :用于分析网络上的数据流【简答题:】1、 Select()函数实现I/O多路复用的步骤答:6 / 61. 清 空描述符集合;2. 建 立需要监视的描述符与描述符集合的联系;3. 调用select ()函数;4. 检查所有需要监视的描述符,利用 FD_ISSET

14、宏判断是否已准备好;5. 对已准备好的描述符进行 I/O 操作。2、I/O 复用的应用场合? 答: “一应两客三服”? 当客户 处理多个描述字 (一般是交互式输入和网络套接字),必须使用 i/o 复用;? 一个客户同时处理多个套接字是可能的(例如 FTP 客户程序),但很少出现;? 如果一个tcp服务器既要处理监听套接字,又要处理 连接套接字,一般也可以用i/o复用;(当然可以使用并发技术)?如果一个服务器既要处理 tcp,又要处理udp, 般也要使用i/o复用;?如果一个服务器要处理 多个服务或者多个协议,一般要使用i/o复用;? i/o 复用并非只限于网络编程,许多 正式应用程序 也需要使

15、用这项技术。3、常用 Linux 网络命令1、ping :检测主机连接状况2、ifconfig :显示当前有效网络接口的状态3、netstat :显示网络状态。如显示网络连接、路由表和网络接口信息。4、route:对内核的IP路由表进行操作5、tcpdump:用于分析网络上的数据流4、TCP 连接的建立TCP 连接的过程:服务器必须准备好接受外来的连接。通过调用socket, bind, listen函数完成。称为 被动打开。客户通过调用connect进行主动打开。这引起客户TCP发送一个SYN分节,告诉服务器客户将在连接中发送的数据的初始序列号服务器必须确认客户的SYN,同时自己也得发送一个

16、 SYN分节。服务器以单个分节向客户发送SYN和对客户的SYN的ACK。 客户必须 确认服务器的 SYN。TCP 连接终止TCP 一般用四个分节终止一个连接:某个进程首先调用close,这一端的TCP于是发送一个FIN分节,表示数据发送完毕。主动关闭。 另一端称为被动关闭。 TCP 对接收的 FIN 分节进行确认,并以文件结束标志传递给应用程序。一段时间后,接收到文件结束标志的应用程序调用close,这也导致向对方发送一个FIN分节。接收到这个 FIN 分节的原发送方 TCP 对它进行确认。还有一种关闭称为 “半关闭 ”( half-close)5、服务器分类按连接类型分类面向连接的服务器(如

17、 tcp) 面向无连接的服务器(如 udp) 按处理方式分类迭代服务器并发服务器6、进程的状态就绪:进程准备运行,但还没有得到CPU。根据调度算法决定将 CPU分配给某个进程。运行:进程正在运行(即占用CPU)等待:进程正在等待某个事件的发生,如:输入 输出的完成、子进程的退出、进程睡眠期的结束。 被交换:进程准备运行,但可能由于需要更多的内存而当前却没有足够的可用内存,因此被暂时存放在硬盘(交换空间)上 僵死:一个已经终止,但是其父进程尚未对其进行善后处理的进程。7、互斥锁在 linux 系统中,提供一种基本的进程同步机制 互斥锁,可以用来 保护线程代码中共享数据的完整性 。 操作系统将保证

18、同时只有一个线程能成功完成对一个互斥锁的加锁操作。 如果一个线程已经对某一互斥锁进行了加锁,其他线程只有等待该线程完成对这一互斥锁解锁后,才能完成加锁操作。8、给新线程传递参数由于同一个进程内的所有线程 共享内存和变量 ,因此在传递参数时需作特殊处理,下面参考如下几种方法: 传递参数的 普通 方法 通过 指针 传递参数 通过 分配 arg 的空间 来传递参数还可以通过 加锁等同步设施 来实现传递参数;9、调用wait或waitpid函数时,正常情况下,可能会有以下几种情况:阻塞(如果其所有子进程都还在运行); 获得子进程的终止状态并立即返回(如果一个子进程已终止,正等待父进程存取其终止状态);

19、 出错立即返回(如果它没有任何子进程)10、Libpcap 的工作流程。 Page205查找网络设备(pcap_lookupdev);获取网络地址及网络掩码(pcap_lookupnet); 打开网络设备(pcap_open_live);将过滤字符串编译到过滤程序中(pcap_compile);设置过滤器(pcap_setfilter);开始捕获包(pcap_dispatch ;11、原始套接口创建的步骤。答:1、 将Socket函数的第二个参数设置成SOCK_RAW来创建一个原始套接口2、设置IP_HDRINCL套接口选项。connect。设置目的地址3、对原始套接口调用bind ()和connect ()函数。Bind()设置本地地址;

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!