付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1.3TCP 连接的建立与终止和 TCP 状态转换图-2MSL 状态难点:执行主动关闭的那端进入这种状态。这个端点在该状态的持续时间是 存在TIME_WAIT 状态有两个理由:1. 实现终止 TCP 全双工连接的可靠性(假设最后一个ack 丢失的情况)2. 允许老的重复分节在网络中消逝 .2.4套接字基本函数-知道怎么用这些函数 套接字类型:SOCK_STREA 流式套接字TCP 支持;SOCK_DGRAM 数据包套接字UDP 支持;SOCK_RAW 原始套接字允许对低于传输层的协议或物理网络直接访问;收 发ICMP 报、常用于检测新的协议第三章各个函数和参数的作用【close()与 shut
2、down。】区别:(1) close 将描述字的访问计数减1,仅在此计数为 0 时才关闭套接口。用 shutdown 可以激发 TCP 的正常连接终止程序,而不管访问计数;(2)CjOSIMGo(口砸- MIT )17L0SEAITfil用EtllHB芨送*出1 p1LE* Kt.E_r *一麦示客尸府状務转換*表示服务器的秋态样换2MSL(最长分节生命周期)应尺;祓議打开KUTTIiN|HARFclose 终止了数据传送的两个方向:读和写。由于TCP 连接是全双工的,有很多时候要通知另一端已完成了数据发送,即使那一端仍有许多数据要发送也如此。Shutdown 函数可以仅仅关闭连接的读、写或两
3、个方向都关闭。函数返回的描述符 设置套接字选项第四章recvfrom 和 sendto 函数的用法第五章默认为子进程先执行父进程后执行但是有 sleep 函数就不一样了进程:定义了一个计算的基本单元,可以认为是一个程序的一次运行。它是一个动态实体,是独立的任务。它拥有独立的地址空间、执行堆栈、文件描述符等父进程监听子进程进行通信wait 和 waitpid 函数的用法僵尸进程:一个已经终止,但是其 父进程尚未对其进行善后处理的进程线程的创建函数传递参数问题onceonce 函数# include int pthread_once(pthread_once_t *once_control, vo
4、id (*init_routine) (void)成功返回 0,否则返回错误码-如果本函数中,once_cont变量使用的初值为 PTHREAD_ONCE_INJT 可保证 init_routine()函数在本进程执行序列中仅执行一次。一般在 init_routine函数中完成一些初始化工作。LinuxThreads 使用互斥锁和条件变量保证由pthread_once()指定的函数执行且仅执行一次,而once_cont则表征是否执行过。如果 once_control 的初值不是 PTHREAD_ONCE_INITLinuxThreads 定义为 0),pthread_once()的行为就会不正
5、常;互斥锁pthread_mutex_lock(pthread_mutex_t *mptr)返回:成功 0,否则返回错误码如果互斥锁是静态分配的,就将mptr 初始化为常值 PTHREAD_MUTEX_INITIALIZER 。pthread_mutex_unlock(pthread_mutex_t *mptr)用于互斥锁解锁操作。返回:成功 0,否则返回错误码线程的例子和 I/O 复用第六章要了解 PPT 上的各个函数,知道他们的作用uname 函 数等第 9 章第 13 章五个 I/O 模型 VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV当客户处理多个描述字(
6、一般是交互式输入和网络套接字),必须使用i/o 复用兀个I/O模型的比鮫VRBi/o宰4 个宏函数 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 函数使用结构 timespec,而不是 timevalvvvvvvv
8、vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvpselect 函数不能更改参数 timeout,以表示还剩余多少时间。函数 pselect 增加了第六个参数:指向信号掩码的指针。这允许程序禁止递交某些信号,测试由这些当前禁止的信号的信号处理程序所设置的全局变量, 然后调用 pselect,告诉它临时重置【套接字可读的条件主要有】:套接字接收缓冲区中的数据字节数大于等于套接字接收缓冲区低潮限度的当前值;套接字是一个监听套接字且已完成的连接数为非0。如果对方 tcp 发送一个 FIN (对方进程终止),套接字就变为可读且read 返回 0;有一个套接字错误待处理。【套接字可写的条件
9、主要有】:套接字发送缓冲区的可用空间大于等于套接字发送缓冲区的低潮限度;套接字的写这一半关闭,对套接字的写将产生SIGPIPE 信号;有一个套接字错误待处理【套接字的异常条件】:套接口带外数据的到达;控制状态信息的存在,可从一个已置为分组方式的伪终端读到LibpcapLibpcap 工作流程【LibpcapLibpcap 的工作流程】VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV1、查找网络设备(pcap_lookupdev);2、获取网络地址及网络掩码( pcap_lookupnet);3、打开网络设备(pcap_open_liv
10、e);4、将过滤字符串编译到过滤程序中(pcap_compile);5、设置过滤器(pcap_setfilter);6、捕获包(pcap_dispatch)非阻塞 I/O 模型当把一个套接字设置成非阻塞方式时,即通知内核:当请求的i/o 操作非得让进程睡眠不能完成时,不要进程睡眠,而应返回一个错误。(返回不成功指示)应用孵丟统调用内按recvfrom.一矽!漏报准备好EWULDfiL OCK.EWOULD8LOCKrecvfrflm一 数据很准各好 拷贝数据报将数据从討降h贝刹用户空间聘贝完成【SO_LINGER 选项】函数 close 缺省操作是立即返回,但如果有数据残留在套接字发送缓冲区,
11、系统将试着将这些数据发送给对方;SO_LINGER ( level:SOL_SOCKET )选项将改变 tcp 套接字关闭时的缺省行为。【原始套接字的输岀遵循以下规则】:1)如果套接字已经连接,可以调用write、writev、send 来发送数据,否则需要调用sendto 或 sendmsg;2)如果 IP_HDRINCL 选项未设置,则内核会将IP 头部之后的第一个字节作为写数据的起始地址。3)如果设置了 IP_HDRINCL 则内核会将 IP 头部的第一个字节作为写数据的起始地址。此时进程构造除了以下两项外的整个IP 头部;(a) IPv4 标识字段可以设为 0,要求内核设置该值;(b)
12、 IPv4 头部校验和由内核来计算和存储。4)IPv4 数据报首部各个字段的内容 均是网络字节 序(对 linux 而言5)对于超出外出接口的 MTU 的分组,内核将其分片【作用:原始套接字提供了一些使用tcp 和 udp 协议不能实现的功能】1)使用原始套接字可以读/写ICMPv4 IGMPv4 分组。女口 Ping 程序,mroute 程序等;2)使用原始套接字可以读/写特殊的IPv4 数据包,内核不处理这些数据报的IPv4 协议字段。如大多数内核只处理ICMP IGMP TCR UDP 的数据报。但协议字段还可以为其他值,如OSPF 直接使用 IP 协议,将 IP 数据报的协议字段设为
13、89,此时,就必须有专门的程序通过原始套接字来处理它们;3)利用原始套接字还可以创建自定义的IP 数据报首部,编写基于 IP 协议的高层网络协议。【常用的网络命令】1、ping :检测主机连接状况2、ifconfig:显示当前有效网络接口的状态3、netstat :显示网络状态。如显示网络连接、路由表和网络接口信息。4、route :对内核的 IP 路由表进行操作5、tcpdump :用于分析网络上的数据流清空描述符集合;建立需要监视的描述符与描述符集合的联系;调用 select ()函数;检查所有需要监视的描述符,利用FD_ISSET 宏判断是否已准备好;对已准备好的描述符进行 I/O 操作
14、。复用的应用场合答:一应两客三服当客户处理多个描述字(一般是交互式输入和网络套接字),必须使用i/o 复用;一个客户同时处理多个套接字是可能的(例如 FTP 客户程序),但很少岀现;如果一个 tcptcp 服务器既要处理监听套接字,又要处理连接套接字,一般也可以用 i/o 复用;(当然可以使用并发技术) 如果一个服务器既要处理 tcptcp,又要处理 udpudp, 般也要使用 i/o 复用;如果一个服务器要处理 多个服务或者多个协议,一般要使用 i/o 复用; i/o 复用并非只限于网络编程,许多正式应用程序也需要使用这项技术。常用 Linux 网络命令1、ping :检测主机连接状况2、i
15、fconfig :显示当前有效网络接口的状态3、netstat :显示网络状态。如显示网络连接、路由表和网络接口信息。4、route:对内核的 IP 路由表进行操作5、tcpdump:用于分析网络上的数据流TCP 连接的建立TCP 连接的过程:服务器必须准备好接受外来的连接。通过调用socket,socket, bind,bind, listenlisten 函数完成。称为被动打开。客户通过调用 connectconnect 进行主动打开。这引起客户 TCP 发送一个 SYNSYN 分节,告诉服务器客户将在连接中发送的数据的 初始序列号。 服务器必须确认客户的 SYNSYN,同时自己也得发送一
16、个 SYNSYN 分节。服务器以单个分节向客户发送 SYN 和对客户的 SYN 的 ACK。 客户必须确认服务器的 SYNSYN。TCP 连接终止TCP 一般用四个分节终止一个连接:某个进程首先调用 close,这一端的 TCP 于是发送一个 FIN 分节,表示数据发送完毕。主动关闭。 另一端称为被动关闭。TCP 对接收的 FIN 分节进行确认,并以文件结束标志传递给应用程序。一段时间后,接收到文件结束标志的应用程序调用close,这也导致向对方发送一个FIN 分节。接收到这个 FIN 分节的原发送方 TCP 对它进行确认。还有一种关闭称为半关闭(half-close)5、服务器分类按连接类型
17、分类面向连接的服务器(如 tcp) 面向无连接的服务器(如 udp)按处理方式分类迭代服务器 并发服务器6、进程的状态就绪:进程准备运行,但还没有得到CPU。根据调度算法决定将 CPU 分配给某个进程。运行:进程正在运行(即占用 CPU)等待:进程正在等待某个事件的发生,如:输入输岀的完成、子进程的退岀、进程睡眠期的结束。被交换:进程准备运行,但可能由于需要更多的内存而当前却没有足够的可用内存,因此被暂时存放在硬盘(交换空间)上 僵死:一个已经终止,但是其父进程尚未对其进行善后处理的进程。7 7、互斥锁【简答题:】1 1、SelectSelect()函数实现 I/OI/O 多路复用的步骤答:1
18、..I/OI/O2 2、3、4、在 linux 系统中,提供一种基本的进程同步机制一互斥锁,可以用来 保护线程代码中共享数据的完整性。操作系统将保证同时只有一个线程能成功完成对一个互斥锁的加锁操作。如果一个线程已经对某一互斥锁进行了加锁,其他线程只有等待该线程完成对这一互斥锁解锁后,才能完成加锁操作。 8 8 给新线程传递参数由于同一个进程内的所有线程共享内存和变量,因此在传递参数时需作特殊处理,下面参考如下几种方法: 传递参数的普通方法通过指针传递参数 通过分配 argarg 的空间来传递参数还可以通过加锁等同步设施来实现传递参数;9 9、 调用 waitwait 或 waitpidwaitpid 函数时,正常情况下,可能会有以下几种情况:阻塞(如果其所有子进程都还在运行);获得子进程的终止状态并立即返回(如果一个子进程已终止,正等待父进程存取其终止状态); 岀错立即返回(如果它没有任何子进程)1010、LibpcapLibpcap 的工作流程。Page205Page2051、 查找网络设备(pcap_loo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GA/T 2332-2025法庭科学纤维检验拉曼光谱法
- 社区老年人护理技术培训
- 物业管理服务方案
- 护理职业道德教育
- 2026年数据治理关键成功因素识别与风险防控
- 2026年十五五产业链供应链韧性与安全水平提升规划要点
- 2025年前台服务规范练习卷
- 2026年固态储氢系统快速充放氢工艺优化
- 2026年基于大模型的智能风控模型持续自我优化实施方案
- 2026年退休人员个人缴费原用人单位不缴费实施细则
- 学堂在线 雨课堂 学堂云 人工智能原理 章节测试答案
- QGDW11970.7-2023输变电工程水土保持技术规程第7部分水土保持设施质量检验及评定
- 2025年护校队管理制度
- 高三年级心理健康教育课教案
- 预约合同违约责任研究
- 中学美术《剪纸艺术》完整课件
- 中国电气装备招聘笔试题库2024
- 永磁直线同步电机低速负载性能(中英文对照)
- TDT 1083-2023 国土调查数据库更新数据规范
- 综合实践 奇妙的绳结
- 学校食品安全主要负责人、食品安全总监、食品安全员及食堂负责人职责
评论
0/150
提交评论