版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1.3TCP连接的建立与终止和 TCP状态转换图-2MSL 状态TCP三路握手TCP连接关闭服务器客户服务器Connecti 回R阴d阻塞枝动黄闭 Re ad返回0CloseLISTENSYN SENT应冋;枝謝:幵 发送; 无牽.1:二Tl'N RCW 十aCKF弋CLOSg-牡I L庄朋.懿吋灯TT愍汀叭I SJ0SI.K发送:畀珠乂此问盯打JT更腌:口1览e亠或起时FIN ¥iITl接戕ACK摆也:ATXFILWUT:- |发送;J3K_,祐动关If)续咳;FUi- SjS.丄卫尸主动美诩恚示宫户拧伏态转楸*荻示服务器的秋志转换2MSL(最长分节生命周期)难点:执行主动
2、关闭的那端进入这种状态。这个端点在该状态的持续时间是 存在TIME_WAIT状态有两个理由:1. 实现终止TCP全双工连接的可靠性(假设最后一个ack丢失的情况)2. 允许老的重复分节在网络中消逝 .2.4套接字基本函数-知道怎么用这些函数 套接字类型:SOCK_STREA流式套接字TCP支持;SOCK_DGRAM数据包套接字UDP支持;SOCK_RAW原始套接字允许对低 于传输层的协议或物理网络直接访问;收发ICMP报、常用于检测新的协议第三章各个函数和参数的作用【close()与 shutdown。】区别:(1)close将描述字的访问计数减 1,仅在此计数为 0时才关闭套接口。用 shu
3、tdown可以激发TCP的正 常连接终止程序,而不管访问计数;(2)close终止了数据传送的两个方向:读和写。由于TCP连接是全双工的,有很多时候要通知另一端已完成了数据发送,即使那一端仍有许多数据要发送也如此。Shutdown函数可以仅仅关闭连接的读、写或两个方向都关闭。函数返回的描述符 设置套接字选项第四章recvfrom 和sendto函数的用法第五章默认为子进程先执行父进程后执行但是有sleep函数就不一样了进程:定义了一个计算的基本单元,可以认为是一个程序的一次运行。它是一个动态实体,是独立的任务。它拥 有独立的地址空间、执行堆栈、文件描述符等父进程监听子进程进行通信wait和wa
4、itpid 函数的用法僵尸进程:一个已经终止,但是其 父进程尚未对其进行善后处理的进程线程的创建函数传递参数问题 once函数# include <pthread.h>int pthread_once(pthread_once_t *once_control, void (*init_routine) (void)成功返回0,否则返回错误码如果本函数中,once_control变量使用的初值为 PTHREAD_ONCENIT可保证init_routine()函数在本进程执- - - - - i - - - - - - - - 1 -一 . 1 一 1 1 一 -r r_r tl r
5、r mm mnrirsir mrnw _ rr - r mr Lrsmirr bet" _ _ *- n ii n naiiri” m r r rrinrr r m rrrriiEir rrL -i -行序列中仅执行一次。一般在init_routine函数中完成一些初始化工作。LinuxThreads使用互斥锁和条件变量保证由pthread_once()指定的函数执行且仅执行一次,而once_control则表征是否执行过。如果once_control 的初值不是 PTHREAD_ONCE_INITLinuxThreads定义为0),pthread_once()的行为就会不正常;互斥
6、锁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/o复用当客户处理多个描述字(一般是交互式输入和网络套接字),必须使用五个 I/O 模型 VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
7、VVVVV 五个I/O模型的比较信号駆Sh I/O井步i/o4 个宏函数 VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFD_ZREO/将所有位设为0/、FD_CLR将fd位设为0/、FD_SET将fd位设为1/、FD_ISSET/检测fd位是否为1/ select 函数该函数有三种执行结果:【永远等待下去】仅在有一个或以上描述字准备好i/o才返回,为此,我们将 timeout设置为空指针。【等待固定时间】在有一个描述字准备好时返回,但不超过由timeout参数指定的秒数和微秒数。【根本不等待,检查描述字后立即返回,这称为轮询】这种情况下,timeout必须指向结
8、构timeval ,且定时器的值必须为0。每次调用select前都必须对等待描述字集合完成初始化和设置工作【Select()函数实现 I/O 多路复用的步骤】:vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv1) 清空描述符集合;2) 建立需要监视的描述符与描述符集合的联系;3) 调用select ()函数;4) 检查所有需要监视的描述符,利用FD_ISSET宏判断是否已准备好;5) 对已准备好的描述符进行I/O操作。区别:pselect 函数使用结构 timespec,而不是 timeval vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
9、vv pselect函数不能更改参数timeout,以表示还剩余多少时间。函数pselect增加了第六个参数:指向信号掩码的指针。这允许程序禁止递交某些信号,测试由这些当前禁止的 信号的信号处理程序所设置的全局变lect ,告诉它临时重置信号掩码【套接字可读的条件主要有】:套接字接收缓冲区中的数据字节数大于等于套接字接收缓冲区低潮限度的当前值;套接字是一个监听套接字且已完成的连接数为非0。如果对方tcp发送一个FIN (对方进程终止),套接字就变为可读且read返回0;有一个套接字错误待处理。【套接字可写的条件主要有】:套接字发送缓冲区的可用空间大于等于套接字发送缓冲区的低潮限度;套接字的写这
10、一半关闭,对套接字的写将产生SIGPIPE信号;有一个套接字错误待处理【套接字的异常条件】:套接口带外数据的到达;控制状态信息的存在,可从一个已置为分组方式的伪终端读到Libpcap工作流程【Libpcap 的工作流程】VVVVVVVVVVVVVVVVVVVVVVVVVVV1、查找网络设备(pcap_lookupdev);2、获取网络地址及网络掩码(pcap_lookupnet);3、打开网络设备(pcap_open_live);4、将过滤字符串编译到过滤程序中(pcap_compile);5、设置过滤器(pcap_setfilter);6、捕获包(pcap_dispatch)非阻塞I/O模型
11、当把一个套接字设置成非阻塞方式时,即通知内核:当请求的i/o操作非得让进程睡眠不能完成时,不要进程睡眠,而应返回一个错误。(返回不成功指示)丟轨调用内椽sfrom 报准昏好、recvfrom 丫f 无戮厲辰唯由歼GWOULpetOCKrecvfrom 乗轨调用进程阻蹇芋j recvfrom的调用EWUL DBLOCK系城调用将数据从討核拷h贝到用户空间聘贝完成【SO_LINGER选项】函数close缺省操作是立即返回,但如果有数据残留在套接字发送缓冲区,系统将试着将 这些数据发送给对方;SO_LINGER (level: SOL_SOCKET )选项将改变tcp套接字关闭时的缺省行为。【原始套
12、接字的输岀遵循以下规则】:1) 如果套接字已经连接,可以调用write、writev、send来发送数据,否则需要调用sendto或sendmsg;2) 如果IP_HDRINCL选项未设置,则内核会将IP头部之后的第一个字节作为写数据的起始地址。3) 如果设置了 IP_HDRINCL则内核会将IP头部的第一个字节作为写数据的起始地址。此时进程构造除了以下两项外的整个IP头部;(a) IPv4标识字段可以设为0,要求内核设置该值;(b) IPv4头部校验和由 内核来计算和存储。4) IPv4数据报首部各个字段的内容 均是网络字节 序(对linux而言)5) 对于超出外出接口的 MTU的分组,内核
13、将其分片【作用:原始套接字提供了一些使用tcp和udp协议不能实现的功能】1) 使用原始套接字可以读/写ICMPv4 IGMPv4分组。女口 Ping程序,mroute程序等;2) 使用原始套接字可以读/写特殊的IPv4数据包,内核不处理这些数据报的IPv4协议字段。如大多数内核只处理ICMP IGMP TCR UDP的数据报。但协议字段还可以为其他值,如OSPF直接使用IP协议,将IP数据报的协议字段设为 89,此时,就必须有专门的程序通过原始套接字来处理它们;3) 利用原始套接字还可以创建自定义的IP数据报首部,编写基于IP协议的高层网络协议。【常用的网络命令】1、ping :检测主机连接
14、状况2、ifconfig :显示当前有效网络接口的状态3、 netstat:显示网络状态。如显示网络连接、路由表和网络接口信息。4、route :对内核的IP路由表进行操作5、tcpdump :用于分析网络上的数据流【简答题:】1、Select()函数实现I/O多路复用的步骤答:1. 清空描述符集合;2. 建立需要监视的描述符与描述符集合的联系;3. 调用select ()函数;4. 检查所有需要监视的描述符,利用FD_ISSET宏判断是否已准备好;5. 对已准备好的描述符进行I/O操作。2、I/O复用的应用场合? 答:“一应两客三服”?当客户处理多个描述字(一般是交互式输入和网络套接字),必
15、须使用i/o复用;?一个客户同时处理多个套接字是可能的(例如FTP客户程序),但很少出现;? 如果一个tcp服务器既要处理监听套接字,又要处理连接套接字,一般也可以用i/o复用;(当然可以 使用并发技术)?如果一个服务器既要处理tcp,又要处理udp, 般也要使用i/o复用;?如果一个服务器要处理 多个服务 或者多个协议,一般要使用i/o复用;? i/o复用并非只限于网络编程,许多正式应用程序也需要使用这项技术。3、常用Linux网络命令1、ping :检测主机连接状况2、ifconfig :显示当前有效网络接口的状态3、netstat :显示网络状态。如显示网络连接、路由表和网络接口信息。4
16、、route :对内核的IP路由表进行操作5、tcpdump:用于分析网络上的数据流4、TCP连接的建立TCP连接的过程:服务器必须准备好接受外来的连接。通过调用socket, bind, listen函数完成。称为 被动打开。客户通过调用connect进行主动打开。这引起客户TCP发送一个SYN分节,告诉服务器客户 将在连接中发送的数据的初始序列号。服务器必须确认客户的SYN,同时自己也得发送一个 SYN分节。服务器以单个分节向客户发 送SYN和对客户的 SYN的ACK。客户必须确认服务器的SYN。TCP连接终止TCP 一般用四个分节终止一个连接:某个进程首先调用close,这一端的TCP于
17、是发送一个FIN分节,表示数据发送完毕。主动关 闭。另一端称为被动关闭。TCP对接收的FIN分节进行确认,并以文件结束标志传递给应用程 序。一段时间后,接收到文件结束标志的应用程序调用close,这也导致向对方发送一个FIN分节。接收到这个FIN分节的原发送方TCP对它进行确认。还有一种关闭称为半关闭”(half-close)5、服务器分类按连接类型分类面向连接的服务器(如tcp) 面向无连接的服务器(如 udp)按处理方式分类迭代服务器 并发服务器6、进程的状态就绪:进程准备运行,但还没有得到CPU。根据调度算法决定将 CPU分配给某个进程。运行:进程正在运行(即占用 CPU)等待:进程正在
18、等待某个事件的发生,如:输入 输岀的完成、子进程的退岀、进程睡眠期的结束。 被交换:进程准备运行,但可能由于需要更多的内存而当前却没有足够的可用内存,因此被暂时存放在 硬盘(交换空间)上。僵死:一个已经终止,但是其父进程尚未对其进行善后处理的进程。7、互斥锁在linux系统中,提供一种基本的进程同步机制一互斥锁,可以用来 保护线程代码中共享数据的完整性。操作系统将保证同时只有一个线程能成功完成对一个互斥锁的加锁操作。如果一个线程已经对某一互斥锁进行了加锁,其他线程只有等待该线程完成对这一互斥锁解锁后,才能 完成加锁操作。8给新线程传递参数由于同一个进程内的所有线程共享内存和变量,因此在传递参数时需作特殊处理,下面参考如下几种方法:传递参数的普通方法通过指针传递参数通过分配arg的空间来传递参数 还可以通过加锁等同步设施来实现传递参数;9、调用wait或waitpid函数时,正常情况下,可能会有以下几种情况:阻塞(如果其所有子进程都还在运行);获得子进程的终止状态并立即返回(如果一个子进程已终止,正等待父进程存取其终止状态); 岀错立即返回(如果它没有任何子进程)10、 Libpcap 的工作流程。Page2051、查
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026福建福州市侨联招聘1人备考题库及参考答案详解一套
- 2026四川省盐业集团有限责任公司选聘所属子公司总经理1人备考题库及参考答案详解(黄金题型)
- 2026北京大学天然药物及仿生药物全国重点实验室智慧药物平台实验技术岗位招聘备考题库及1套完整答案详解
- 2026广东清远市英德市人民武装部招聘专项临聘人员1人备考题库附答案详解(模拟题)
- 2026北京一零一中实验幼儿园招聘备考题库及参考答案详解(能力提升)
- 2026陕西西安交通大学教务处文员招聘1人备考题库及参考答案详解(精练)
- 2026广东梅州市人民医院招聘博士研究生备考题库及参考答案详解(培优)
- 2026年上半年广东广州市越秀区教育局招聘事业编制教师83人备考题库附答案详解(b卷)
- 2026南方科技大学生物医学工程系诚聘海内外高层次人才备考题库含答案详解(预热题)
- 2026北京大学工学院(本科生学院)招聘1名劳动合同制人员备考题库及参考答案详解(巩固)
- 简阳市投资促进局公开招聘编外人员考试备考试题及答案解析
- 2026年生物制药(生物制药技术)试题及答案
- 2026年广西机场管理集团有限责任公司校园招聘考试模拟试题及答案解析
- 2025年全国高校辅导员考试练习题及答案
- 江西省重点中学协作体2026届高三下学期第一次联考英语试卷(不含音频及听力原文答案不全)
- 陕西省测绘成果保密制度
- 内部风险隐患报告奖励制度
- 口腔科学口腔创伤 课件
- 城市更新改造类项目合作框架协议
- 道路交通事故现场处理指南
- 基于大概念的初中历史单元整合复习教学设计-以“近代化的探索”为例
评论
0/150
提交评论