




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
TCP/IP原理及实现
TCP/IP原理及实现
第二讲TCP/IP软件结构内容纲要
概述相关基础
TCP/IP软件结构-Xinu
TCP/IP软件结构-Unix总结内容纲要
概述相关基础
TCP/IP软件结构-Xinu
TCP/IP软件结构-Unix总结TCP/IP协议软件的设计侧重以下方面:1.确定协议实体的形式(过程/进程)2.协议功能的实现流程3.协议实体之间的交互(调用、进程间通信)2.1概述操作系统的基本功能包括存储管理、文件管理、进程管理和通信、中断管理等。TCP/IP软件作为系统软件或组件嵌入在操作系统内部,为用户提供联网的增值服务。TCP/IP软件与操作系统2.1概述内容纲要
概述
相关基础
TCP/IP软件结构-Xinu
TCP/IP软件结构-Unix总结2.2相关基础当发生外部事件或者程序运行异常时,CPU暂时停止当前程序的执行转而执行处理新情况的程序和执行过程。软件中断VS硬件中断硬件中断:中断控制器软件中断:软中断指令中断是什么?2.2相关基础进程是正在执行的程序。进程VS程序操作系统通过一个特定的数据结构(PCB)来管理进程相关的信息,包括:进程状态,程序计数器,堆栈区,数据段,寄存器组,所有打开的文件句柄等。进程是什么?2.2相关基础intglobal=0;intmain(intarg){floatlocal;char*ptr;ptr=malloc(100);local=0;local+=10*5;…..….foo();…./*returnaddr*/….return0;}DynamicallyallocatedGlobalvariablesProgramcodeLocalvariablesReturnaddress进程的内存映像2.2相关基础进程最主要的特性是独立性、并发性。进程的并发性要求解决
进程间互斥和通信的问题。进程特性2.2相关基础进程的同步:基于系统功能的需要,两个或多个进程之间需要相互合作、协同工作。进程的互斥:多个进程因争用临界资源而互斥执行。临界资源指的是一段时间内只允许一个进程访问的资源。进程间的同步和互斥2.2相关基础共享存储器数据结构/存储区消息传递直接VS间接管道通信共享文件常见的进程间同步和互斥的方法2.2相关基础Xinu系统提供了三种进程间通信的机制:信号量 (semaphore)端口 (port)消息传递 (messagepasssing)2.2相关基础信号量用于实现进程之间的合作和互斥。分为两种类型:binary(二进制)和counting(计数)相关系统调用
semid=screate(initcount);//创建信号量
wait(semid)//进入临界区(CS)前调用
signal(semid)//离开临界区(CS)前调用
信号量typedef
struct{ unsignedintcount;
list_of_processesqueue;
}semaphore;wait(s):
if(s.count≥1)then
s.count--elseblock(s)whereblock(s)placestheprocessons.queueandinvokestheprocessscheduler.signal(s):ifs.queueisnon-emptythen
wakeup(s);else
s.count++;wherewakeup(s)removesaprocessfroms.queueandplacesitintothereadylist.2.2相关基础二进制信号量的实现2.2相关基础
信号量使用的基本方法semid=screate(1); while(1){
wait(semid); CS;
signal(semid);}2.2相关基础
信号量使用实例一:在一个盒子里,混装了数量相等的黑白围棋子。设计自动分拣系统把黑子、白子分开。设分拣系统有二个进程P1和P2,其中P1拣白子;P2拣黑子。规定每个进程每次拣一子;当一个进程在拣时,不允许另一个进程去拣;当一个进程拣了一子时,必须让另一个进程去拣。。
2.2相关基础
信号量使用实例一:伪代码P1:
repeatwait(s1);
拣白子
signal(s2);untilfalse;
P2:
repeatwait(s2);
拣白子
signal(s1);untilfalse;
s1=screate(1);s2=screate(0);2.2相关基础
信号量使用实例二:桌上有一只盘子,最多可以容纳两个水果,每次仅能放入或取出一个水果。爸爸向盘子中放苹果(apple),妈妈向盘子中放桔子(orange),两个儿子专等吃盘子中的桔子,两个女儿专等吃盘子中的苹果。
2.2相关基础
信号量使用实例二:伪代码father:
repeat
wait(s);
放苹果
signal(s1);untilfalse;
mother:
repeat
wait(s);
放桔子
signal(s2);untilfalse;
s=screate(2);s1=screate(0);s2=screate(0);2.2相关基础
信号量使用实例二:伪代码(续)daughter:
repeatwait(s1);
取苹果
signal(s);untilfalse;
son:
repeatwait(s2);
取桔子
signal(s);untilfalse;
2.2相关基础计数信号量用于实现多进程对队列访问的同步,可以解决经典的生产-消费者问题。生产者进程向队列中加入数据;消费者进程从队列中提取数据;
在有限队列长度的情况下,如何协调多进程的生产和消费过程。 计数信号量2.2相关基础假设B是能够容纳N个数据的队列;s1是跟踪队列还剩多少空闲位置的信号量;s2是记录队列B中已存在多少数据项的信号量。s1和s2的定义如下:s1=screate(N);s2=screate(0);
利用计数信号量解决生产-消费者问题2.2相关基础Producer:wait(s1); …//向队列添加数据signal(s2);Consumer:wait(s2); …//从队列提取数据signal(s1);利用计数信号量解决生产-消费者问题(续)2.2相关基础端口实际封装了利用计数信号量实现生产者和消费者进程对队列的同步访问的过程。Xinu系统定义的端口相关系统调用包括:1.portid=pcreate(psize);//创建端口,指定队列大小2.psend(portid,message);//发送数据到指定端口3.message=preceive(portid);//从端口接收数据4.n=pcount(portid);//返回队列中的数据数目端口机制2.2相关基础消息传递允许进程之间直接传送消息,实现进程之间的通信。Xinu系统定义的消息传递相关系统调用包括:1.send(msg,pid);//发送消息2.message=receive();//等待消息到来3.message=recvclr();//清除队列并接收4.message=recvtim(50);//等待消息到来,并制定最大的等待时间消息传递机制内容纲要
概述相关基础
TCP/IP软件结构-Xinu
TCP/IP软件结构-Unix总结2.3TCP/IP软件结构-Xinu当数据(帧)到达网络接口设备(NIC)时,系统内部形成硬中断,CPU根据中断控制器提供的中断类型号找到相应的中断处理程序(网卡驱动),启动网络接口层的协议处理过程。Xinu系统的网络接口层软件设计(以太网)
1.以太数据帧的解析处理
2.与上层协议软件的交互接收数据时的协议处理流程2.3TCP/IP软件结构-Xinu差错检测(硬件处理)残帧检测(硬件处理)协议解析(分用处理)
ARPRARPIP数据帧的处理2.3TCP/IP软件结构-XinuCPU调用网卡驱动将解析获得的IP数据包置入接口队列,并通过消息来通知IP协议软件实体。接口队列的设计:两种思想
单接口队列为每个网络接口设置单独的队列,存放到达对应接口的所有数据包;
多接口队列设置一个全局队列,存放到达所有接口的数据包,实现多个接口之间的共享使用。
Xinu系统采用单接口队列。接口层与IP协议的交互2.3TCP/IP软件结构-XinuIP协议实现为一个独立的进程,不断从多个接口队列中提取IP数据包并进行处理。IP协议软件设计内容:从接口队列提取数据包的策略
空队列情况下的处理协议解析的实现
与其他协议之间的交互(TCP、UDP、ICMP等)路由表的设计、路由操作接收数据时的协议处理流程-续2.3TCP/IP软件结构-XinuIP进程与相邻层协议的交互IP-接口共享队列+消息IP-UDP
过程调用IP-TCP
进程间通信(端口)2.3TCP/IP软件结构-XinuIP进程与相邻层协议的交互IP-接口共享队列+消息IP-UDP
过程调用IP-TCP
进程间通信(端口)2.3TCP/IP软件结构-XinuIP进程与相邻层协议的交互IP-接口共享队列+消息IP-UDP
过程调用IP-TCP
进程间通信(端口)2.3TCP/IP软件结构-Xinu由于UDP协议很简单,仅仅提供端口复用和差错检测的功能,所以,UDP协议实现为过程直接被IP进程调用来处理到达的UDP数据包。UDP协议软件设计内容:协议的解析功能
与应用层协议实体之间的交互
接收数据时的协议处理流程-续2.3TCP/IP软件结构-XinuTCP协议很复杂,包含许多控制功能,如差错控制、流量控制、拥塞控制、连接管理等。Xinu系统中TCP协议软件实现为三个独立的进程,分别是TCP输入进程、TCP输出进程和定时管理进程。三个进程协同工作,完成TCP协议的功能。其中,TCP输入进程负责TCP报文段的输入处理过程。
接收数据时的协议处理流程-续2.3TCP/IP软件结构-Xinu从指定端口中提取来自IP进程的输入TCP数据分段执行输入分段的报文解析任务。若接收窗口允许,接收无差错的报文,存放到对应的TCP输入缓冲,等待应用进程提取。如必要,向TCP输出进程指示确认消息。
TCP输入进程2.3TCP/IP软件结构-Xinu应用进程通过系统调用访问UDP的输出过程,根据用户提供数据和寻址信息封装成UDP数据包,并通过端口交付给IP进程。应用进程通过系统调用将等待发送的数据存放到对应TCP连接的输出缓冲中,后续的数据发送过程由TCP输出进程来执行。发送数据时的协议处理流程2.3TCP/IP软件结构-XinuTCP的数据发送由TCP输出进程和定时管理进程协同完成。TCP输出进程从相应输出缓冲中提取数据,结合连接的信息封装TCP报文分段,交付给IP进程,并创建定时事件。TCP定时管理进程负责对所有的定时事件进行管理,及时发现超时,并通知TCP输出进程执行重传。TCP数据发送过程2.3TCP/IP软件结构-Xinu端口的作用?2.3TCP/IP软件结构-XinuIP软件接收到来自上层的数据后,执行:封装IP分组选择路由
交付网络接口发送数据时的协议处理流程(续)2.3TCP/IP软件结构-Xinu单接口输出队列每个网络接口设置一个独立输出队列,存放来自IP进程的等待从对应接口输出的数据包。接口输出队列满怎么办?2.3TCP/IP软件结构-Xinu网络接口层执行输出通过以下两种途径:当接口硬件空闲时,IP协议软件直接调用接口程序,执行输出处理;一旦本次输出完成,接口硬件触发输出中断,CPU执行中断处理,调用接口输出程序,从接口输出队列中提取数据并发送。发送数据时的协议处理流程(续)2.3TCP/IP软件结构-Xinu协议实体形式:
进程+过程(包括中断服务例程)协议间的交互:
进程间通信(消息传递+端口+信号量)过程调用Xinu系统TCP/IP软件设计思想总结内容纲要
概述相关基础
TCP/IP软件结构-Xinu
TCP/IP软件结构-Unix总结2.4TCP/IP软件结
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 宋代‘城市生活直播’视角探究:《东京梦华录》的现代启示
- 2025商业联盟与合作伙伴的合同协议范本
- 2025私人住宅物业租赁合同范本
- 2025年续签办公室租赁合同
- 2025合同转让印花税率
- 2025工程承包合同管理流程
- 2025深圳商业店铺租赁合同
- 二零二五酒类销售用工合同
- 租赁站联营合作协议范例二零二五年
- 工作餐供应合同书二零二五年
- 马克思主义新闻观十二讲之第八讲坚持新闻真实原则课件
- 工艺管道伴热管施工技术方案
- 各层次养老机构定价方法及案例
- 二方审核计划
- 优秀病例演讲比赛PPT
- 吉林省矿产资源概况及分布
- 最新肺结核诊断和治疗指南
- 公司员工基本礼仪培训ppt完整版课件
- 工程项目综合应急预案(通用版)
- 半桥LLC谐振变换器设计与仿真
- 城市桥梁工程竣工验收
评论
0/150
提交评论