当前位置:文档之家› 抓包分析SSL通信过程实验报告

抓包分析SSL通信过程实验报告

抓包分析SSL通信过程实验报告
抓包分析SSL通信过程实验报告

SSL通信过程分析

一、SSL建立握手连接目的

1.身份的验证,client与server确认对方是它相连接的,而不是第三方冒充的,通过证书实现。

2.client与server交换session key,用于连接后数据的传输加密和hash校验。

二、简单的SSL握手连接过程

(仅Server端交换证书给client):

1.client发送ClientHello,指定版本,随机数(RN),所有支持的密码套件(CipherSuites)

2.server回应ServerHello,指定版本,RN,选择CipherSuites,会话ID(Session ID)

3.server发送Certificate

4.Server发送ServerHelloDone

5.Client发送ClientKeyExchange,用于与server交换session key

6.Client发送ChangeCipherSpec,指示Server从现在开始发送的消息都是加密过的

7.Client发送Finishd,包含了前面所有握手消息的hash,可以让server验证握手过程是否被第三方篡改

8.Server发送ChangeCipherSpec,指示Client从现在开始发送的消息都是加密过的

9.Server发送Finishd,包含了前面所有握手消息的hash,可以让client验证握手过程是否被第三方篡改,并且证明自己是Certificate密钥的拥有者,即证明自己的身份

三、抓包实际分析连接过程

下面从抓包数据来具体分析这一过程并说明各部分数据的作用以及如实现前面列出的握手的目标,当然了,最重要的还是说明为何这一过程是安全可靠的,第三方无法截获,篡改或者假冒。

1.client发送ClientHello

这里多了个session id,如果SSL连接断开,再次连接时,可以使用该属性重新建立连接,在双方都有缓存的情况下可以省略握手的步骤。

server端也会生成随机的RN,用于生成session key使用。

server会从client发送的Cipher suite列表中跳出一个,这里挑选的是RSA+RC4+MD 5

这次server共发送的3个handshake 消息:Serverhello,Certificate和ServerHelloDon e,共用一个ContentType:Handshake

3.server发送Certificate

server的证书信息,只包含public key,server将该public key对应的private key

保存好,用于证明server是该证书的实际拥有者,那么如何验证呢?原理很简单:cli ent随机生成一串数,用server这里的public key加密(显然是RSA算法),发给server,server用private key解密后返回给client,client与原文比较,如果一致,则说明serve r拥有private key,也就说明与client通信的正是证书的拥有者,因为public key加密的数据,只有private key才能解密,目前的技术还没发破解。利用这个原理,也能实现session key的交换,加密前的那串随机数就可用作session key,因为除了client和server,没有第三方能获得该数据了。原理很简单,实际使用时会复杂很多,数据经过多次hash,伪随机等的运算,前面提到的client和server端得RN都会参与计算。

4.Server发送ServerHelloDone

5.Client发送ClientKeyExchange

client拿到server的certificate后,就可以开始利用certificate里的public key进行s ession key的交换了。从图中可以看出,client发送的是130字节的字节流,显然是加过密的。client随机生成48字节的Pre-master secret,padding后用public key加密就得到这130字节的数据发送给server,server解密也能得到Pre-master secret。双方使

用pre-master secret, "master secret"常量字节流,前期交换的server端RN和client

的RN作为参数,使用一个伪随机函数PRF,其实就是hash之后再hash,最后得到48字节的master secret。master secret再与"key expansion"常量,双方RN经过伪随机函数运算得到key_block,PRF伪随机函数可以可以仿佛循环输出数据,因此我们想得到多少字节都可以,就如Random伪随机函数,给它一个种子,后续用hash计算能得到无数个随机数,如果每次种子相同,得到的序列是一样的,但是这里的输入时48字节的master secret,2个28字节的RN和一个字符串常量,碰撞的可能性是很小的。得到key block后,算法,就从中取出session key,IV(对称算法中使用的初始化向量)等。client和server使用的session key是不一样的,但只要双方都知道对方使用的是什么就行了。这里会取出4个:client/server加密正文的key,client/server计算handshake 数据hash的key。

6.Client发送ChangeCipherSpec

client指示Server从现在开始发送的消息都是加密过的。

7.Client发送Finished

client发送的加密数据,这个消息非常关键,一是能证明握手数据没有被篡改过,二也能证明自己确实是密钥的拥有者(这里是单边验证,只有server有certificate,serv er发送的Finished能证明自己含有private key,原理是一样的)。client将之前发送的所有握手消息存入handshake messages缓存,进行MD5和SHA-1两种hash运算,再与前面的master secret和一串常量"client finished"进行PRF伪随机运算得到12字节的verify data,还要经过改进的MD5计算得到加密信息。为什么能证明上述两点呢,前面说了只有密钥的拥有者才能解密得到pre-master key,master key,最后得到key bl ock后,进行hash运算得到的结果才与发送方的一致。

8.Server发送ChangeCipherSpec

Server指示client从现在开始发送的消息都是加密过的。

9.Server发送Finishd

与client发送Finished计算方法一致。server发送的Finished里包含hash给client,client会进行校验,如果通过,说明握手过程中的数据没有被第三方篡改过,也说明s erver是之前交换证书的拥有者。现在双方就可以开始后续通信,进入Application con text了。

Linux进程间通信(2)实验报告

实验六:Linux进程间通信(2)(4课时) 实验目的: 理解进程通信原理;掌握进程中信号量、共享内存、消息队列相关的函数的使用。实验原理: Linux下进程通信相关函数除上次实验所用的几个还有: 信号量 信号量又称为信号灯,它是用来协调不同进程间的数据对象的,而最主要的应用是前一节的共享内存方式的进程间通信。要调用的第一个函数是semget,用以获得一个信号量ID。 int semget(key_t key, int nsems, int flag); key是IPC结构的关键字,flag将来决定是创建新的信号量集合,还是引用一个现有的信号量集合。nsems是该集合中的信号量数。如果是创建新集合(一般在服务器中),则必须指定nsems;如果是引用一个现有的信号量集合(一般在客户机中)则将nsems指定为0。 semctl函数用来对信号量进行操作。 int semctl(int semid, int semnum, int cmd, union semun arg); 不同的操作是通过cmd参数来实现的,在头文件sem.h中定义了7种不同的操作,实际编程时可以参照使用。 semop函数自动执行信号量集合上的操作数组。 int semop(int semid, struct sembuf semoparray[], size_t nops); semoparray是一个指针,它指向一个信号量操作数组。nops规定该数组中操作的数量。 ftok原型如下: key_t ftok( char * fname, int id ) fname就是指定的文件名(该文件必须是存在而且可以访问的),id是子序号,虽然为int,但是只有8个比特被使用(0-255)。 当成功执行的时候,一个key_t值将会被返回,否则-1 被返回。 共享内存 共享内存是运行在同一台机器上的进程间通信最快的方式,因为数据不需要在不同的进程间复制。通常由一个进程创建一块共享内存区,其余进程对这块内存区进行读写。首先要用的函数是shmget,它获得一个共享存储标识符。 #include #include #include int shmget(key_t key, int size, int flag); 当共享内存创建后,其余进程可以调用shmat()将其连接到自身的地址空间中。 void *shmat(int shmid, void *addr, int flag); shmid为shmget函数返回的共享存储标识符,addr和flag参数决定了以什么方式来确定连接的地址,函数的返回值即是该进程数据段所连接的实际地

线程实现邮箱通信-实验报告

进程通信实验报告 一、实验名称:进程通信 二、实验目的:掌握用邮箱方式进行进程通信的方法,并通过设计实现简单邮箱理解进程通信中的同步问题以及解决该问题的方法。 三、实验原理:邮箱机制类似于日常使用的信箱。对于用户而言使用起来比较方便,用户只需使用send ()向对方邮箱发邮件 receive ()从自己邮箱取邮件, send ()和 receive ()的内部操作用户无需关心。因为邮箱在内存中实现,其空间有大小限制。其实send ()和 receive ()的内部实现主要还是要解决生产者与消费者问题。 四、实验内容:进程通信的邮箱方式由操作系统提供形如send ()和receive ()的系统调用来支持,本实验要求学生首先查找资料了解所选用操作系统平台上用于进程通信的系统调用具体形式,然后使用该系统调用编写程序进行进程间的通信,要求程序运行结果可以直观地体现在界面上。在此基础上查找所选用操作系统平台上支持信号量机制的系统调用具体形式,运用生产者与消费者模型设计实现一个简单的信箱,该信箱需要有创建、发信、收信、撤销等函数,至少能够支持两个进程互相交换信息,比较自己实现的信箱与操作系统本身提供的信箱,分析两者之间存在的异同。 五、背景知识介绍: 1、sembuf 数据结构 struct sembuf { unsigned short int sem_num; //semaphore number short int sem_op; //semaphore operation short int sem_flg; //operation flag }; sem_num :操作信号在信号集中的编号,第一个信号的编号是0。 进程A 进程B 信箱A 信箱B Send() Send() receive() receive()

通信电子线路实验报告4

大连理工大学 本科实验报告 课程名称:通信电子线路实验 学院:电子信息与电气工程学部专业:电子信息工程 班级:电子0904 学号: 200901201 学生姓名:朱娅 2011年11月20日

实验四、调幅系统实验及模拟通话系统 一、实验目的 1.掌握调幅发射机、接收机的整机结构和组成原理,建立振幅调制与 解调的系统概念。 2.掌握系统联调的方法,培养解决实际问题的能力。 3.使用调幅实验系统进行模拟语音通话实验。 二、实验内容 1.实验内容及步骤,说明每一步骤线路的连接和波形 (一)调幅发射机组成与调试 (1)通过拨码开关S2 使高频振荡器成为晶体振荡器,产生稳定的等幅高频振荡,作为载波信号。拨码开关S3 全部开路,将拨码开关S4 中“3”置于“ON”。用示波器观察高频振荡器后一级的射随器缓冲输出,调整电位器VR5,使输出幅度为0.3V左右。将其加到由MC1496 构成的调幅器的载波输入端。 波形:此时示波器上,波形为一正弦波,f=10.000MHz,Vpp=0.3V。 (2)改变跳线,将低频调制信号(板上的正弦波低频信号发生器)接至模拟乘法器调幅电路的调制信号输入端,用示波器观察J19 波形,调VR9,使低频振荡器输出正弦信号的峰-峰值Vp-p 为0.1~0.2V. 波形:此时示波器上,波形为一正弦波,f=1.6kHz,Vpp=0.2V。 (3)观察调幅器输出,应为普通调幅波。可调整VR8、VR9 和VR11,

使输出的波形为普通的调幅波(含有载波,m 约为30%)。 (4)将普通的调幅波连接到前置放大器(末前级之前的高频信号缓冲器)输入端,观察到放大后的调幅波。 波形:前置放大后的一调幅波,包络形状与调制信号相似,频率特性为载波信号频率。f?=1.6kHz,Vpp=0.8V,m≈30%。 (5)调整前置放大器的增益,使其输出幅度1Vp-p 左右的不失真调幅波,并送入下一级高频功率放大电路中。 (6)高频功率放大器部分由两级组成,第一级是甲类功放作为激励级,第二级是丙类功放。给末级丙类功放加上+12V 电源,调节VR4 使J8(JF.OUT)输出6Vp-p左右不失真的放大信号,在丙类功放的输出端,可观察到经放大后的调幅波,改变电位器VR6 可改变丙类放大器的增益,调节CT2 可以看到LC 负载回路调谐时对输出波形的影响。 波形:此时示波器上为放大后的调幅波,f?=1.6kHz,Vpp=8V,m≈30%。 (二)调幅接收机的组成与调试 从GP-4 实验箱的系统电路图可以看出调幅接收机部分采用了二次变频电路,其中频频率分别为:第一中频6.455MHz,第二中频455kHz。由于该二次变频接收机的两个本机振荡器均采用了石英晶体振荡器,其中第一本振频率16.455MHz,第二本振频率6.000MHz,也就是说本振频率不可调。这样实验箱的调幅接收机可以接收的频率就因为第一本振频率不可调而被固定下来,即该机可以接收的已调波的中心频率应该为10.000MHz(第1本振频率-第1中频频率 = 16.455MHz - 6.455MHz =

数据通信原理实验报告

DONGFANG COLLEGE,FUJIAN AGRICULTURE AND FORESTRY UNIVERSITY 课程名称:数据通信原理 系别:计算机系 年级专业: 2010级电子信息工程 学号: 1050302103 姓名:廖少兵 任课教师:詹仕华成绩: 2012 年12 月25 日

实验项目列表 序号课程名称成绩指导教师 1 模拟信号源实验詹仕华 2 接收滤波器与功放实验詹仕华 3 基带信号的常见码型变换实验詹仕华 4 AMI/HDB3编译码实验詹仕华 5 FSK(ASK)调制解调实验詹仕华6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

实验一模拟信号源实验 实验室名称:_______ 实验设备号:实验时间: 成绩: 模拟信号源实验 1、实验目的和要求 1.了解本模块中函数信号产生芯片的技术参数; 2.了解本模块在后续实验系统中的作用; 3.熟悉本模块产生的几种模拟信号的波形和参数调节方法。 2、实验原理 本模块主要功能是产生频率、幅度连续可调的正弦波、三角波、方波等函数信号(非同步函数信号),另外还提供与系统主时钟同源的2KHZ正弦波信号(同步正弦波信号)和模拟电话接口。在实验系统中,可利用它定性地观察通信话路的频率特性,同时用做PAM、PCM、ADPCM、CVSD( M)等实验的音频信号源。本模块位于底板的左边。 3、主要仪器设备 1.非同步函数信号、同步正弦波信号、模拟电话输入电路 2.时钟与基带数据发生模块,位号:G 3.频率计1台 4.20M双踪示波器1台 5.小电话单机1部 1.非同步函数信号(实物图片如下)

进程管理实验报告文档

实验一进程管理 1.实验目的: (1)加深对进程概念的理解,明确进程和程序的区别; (2)进一步认识并发执行的实质; (3)分析进程争用资源的现象,学习解决进程互斥的方法; (4)了解Linux系统中进程通信的基本原理。 2.实验预备内容 (1)阅读Linux的源码文件,加深对进程管理概念的理解; (2)阅读Linux的fork()源码文件,分析进程的创建过程。 3.实验内容 (1)进程的创建: 编写一段程序,使用系统调用fork() 创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”,子进程分别显示字符“b”和“c”。试观察记录屏幕上的显示结果,并分析原因。 源代码: #include <> #include <> #include #include <> main() {

int p1,p2; p1=fork(); ockf()函数是将文件区域用作信号量(监视锁),或控制对锁定进程的访问(强制模式记录锁定)。试图访问已锁定资源的其他进程将返回错误或进入休态,直到资源解除锁定为止。而上面三个进程,不存在要同时进入同一组共享变量的临界区域的现象,因此输出和原来相同。 (3) a) 编写一段程序,使其实现进程的软中断通信。 要求:使用系统调用fork() 创建两个子进程,再用系统调用signal() 让父进程捕捉键盘上来的中断信号(即按DEL键);当捕捉到中断信号后,父进程用系统调用Kill() 向两个子进程发出信号,子进程捕捉到信号后分别输出下列信息后终止: Child Process 1 is killed by Parent! Child Process 2 is killed by Parent! 父进程等待两个子进程终止后,输出如下的信息后终止: Parent Process is killed!

中南大学通信电子线路实验报告

中南大学 《通信电子线路》实验报告 学院信息科学与工程学院 题目调制与解调实验 学号 专业班级 姓名 指导教师

实验一振幅调制器 一、实验目的: 1.掌握用集成模拟乘法器实现全载波调幅和抑止载波双边带调幅的方法。 2.研究已调波与调制信号及载波信号的关系。 3.掌握调幅系数测量与计算的方法。 4.通过实验对比全载波调幅和抑止载波双边带调幅的波形。 二、实验内容: 1.调测模拟乘法器MC1496正常工作时的静态值。 2.实现全载波调幅,改变调幅度,观察波形变化并计算调幅度。 3.实现抑止载波的双边带调幅波。 三、基本原理 幅度调制就是载波的振幅(包络)受调制信号的控制作周期性的变化。变化的周期与调制信号周期相同。即振幅变化与调制信号的振幅成正比。通常称高频信号为载波信号。本实验中载波是由晶体振荡产生的10MHZ高频信号。1KHZ的低频信号为调制信号。振幅调制器即为产生调幅信号的装置。 在本实验中采用集成模拟乘法器MC1496来完成调幅作用,图2-1为1496芯片内部电路图,它是一个四象限模拟乘法器的基本电路,电路采用了两组差动对由V1-V4组成,以反极性方式相连接,而且两组差分对的恒流源又组成一对差分电路,即V5与V6,因此恒流源的控制电压可正可负,以此实现了四象限工作。D、V7、V8为差动放大器V5与V6的恒流源。进行调幅时,载波信号加在V1-V4的输入端,即引脚的⑧、⑩之间;调制信号加在差动放大器V5、V6的输入端,即引脚的①、④之间,②、③脚外接1KΩ电位器,以扩大调制信号动态范围,已调制信号取自双差动放大器的两集电极(即引出脚⑹、⑿之间)输出。

图2-1 MC1496内部电路图 用1496集成电路构成的调幅器电路图如图2-2所示,图中VR8用来调节引出脚①、④之间的平衡,VR7用来调节⑤脚的偏置。器件采用双电源供电方式(+12V,-9V),电阻R29、R30、R31、R32、R52为器件提供静态偏置电压,保证器件内部的各个晶体管工作在放大状态。 四、实验结果 1. ZD.OUT波形: 2. TZXH波形:

杭电通信系统课程设计报告实验报告

通信系统课程设计实验报告 XX:田昕煜 学号:13081405 班级:通信四班 班级号:13083414 基于FSK调制的PC机通信电路设计

一、目的、容与要求 目的: 掌握用FSK调制和解调实现数据通信的方法,掌握FSK调制和解调电路中相关模块的设计方法。初步体验从事通信产品研发的过程. 课程设计任务:设计并制作能实现全双工FSK调制解调器电路,掌握用Orcad Pspice、Protel99se进行系统设计及电路仿真。 要求:合理设计各个电路,尽量使仿真时的频率响应和其他参数达到设计要求。尽量选择符合标称值的元器件构成电路,正确完成电路调试。 二、总体方案设计 信号调制过程如下: 调制数据由信号发生器产生(电平为TTL,波特率不超过9600Baud),送入电平/幅度调整电路完成电平的变换,再经过锁相环(CD4046),产生两个频率信号分别为30kHz和40kHz(发“1”时产生30kHz方波,发“0”时产生40kHz方波),再经过低通滤波器2,变成平滑的正弦波,最后通过线圈实现单端到差分信号的转换。

信号的解调过程如下: 首先经过带通滤波器1,滤除带外噪声,实现信号的提取。在本设计中FSK 信号的解调方式是过零检测法。所以还要经过比较器使正弦信号变成方波,再经过微分、整流电路和低通滤波器1实现信号的解调,最后经过比较器使解调信号成为TTL电平。在示波器上会看到接收数据和发送数据是一致的。 各主要电路模块作用: 电平/幅度调整电路:完成TTL电平到VCO控制电压的调整; VCO电路:在控制电压作用下,产生30KHz和40KHz方波; 低通2:把30KHz、40KHz方波滤成正弦波; 线圈:完成单端信号和差分信号的相互转换; 带通1:对带外信号抑制,完成带信号的提取; 限放电路:正弦波整形成方波,同时保留了过零点的信息; 微分、整流、脉冲形成电路:完成信号过零点的提取; 低通1:提取基带信号,实现初步解调; 比较器:把初步解调后的信号转换成TTL电平 三、单元电路设计原理与仿真分析 (1)带通1(4阶带通)-- 接收滤波器(对带外信号抑制,完成带信号的提取) 要求通带:26KHz—46KHz,通带波动3dB; 阻带截止频率:fc=75KHz时,要求衰减大于10dB。经分析,二级四阶巴特沃斯带通滤波器来提取信号。 具体数值和电路见图1仿真结果见图2。

通信电子线路Multisim仿真实验报告

通信电子线路实验报告Multisim调制电路仿真

目录 一、综述 .......................... 错误!未定义书签。 二、实验内容 ...................... 错误!未定义书签。 1.常规调幅AM ................... 错误!未定义书签。 (1)基本理论.................... 错误!未定义书签。 (2)Multisim电路仿真图 ........ 错误!未定义书签。 (3)结论: ...................... 错误!未定义书签。 2.双边带调制DSB ................ 错误!未定义书签。 (1)基本理论.................... 错误!未定义书签。 (2)Multisim电路仿真图 ........ 错误!未定义书签。 3.单边带调制SSB ................ 错误!未定义书签。 (1)工作原理.................... 错误!未定义书签。 (2)Multisim电路仿真图 ........ 错误!未定义书签。 4.调频电路FM ................... 错误!未定义书签。 (1)工作原理.................... 错误!未定义书签。 (2)Multisim电路仿真图 ........ 错误!未定义书签。 5.调相电路PM ................... 错误!未定义书签。 (1)工作原理.................... 错误!未定义书签。 (2)Multisim电路仿真图............ 错误!未定义书签。 三、实验感想 ...................... 错误!未定义书签。

网络与数据通信实验报告

网络与数据通信实验报告 指导老师:李艳 姓名:胡嘉懿(1110200302) 周敏(1110200311)

实验1 网络协议分析Ethereal 1.ARP帧解析 ·帧1(线路上传输60字节,俘获60字节) 到达时间:2004年5月7日00:35:13.802398000 与上一帧的时间差:0.000000000秒 与第一帧的时间差:0.000000000秒 帧序号:1 数据包长度:60字节 俘获长度:60字节 ·以太网Ⅱ,源地址:00:0d:87:f8:4c:f9,目的地址:ff:ff:ff:ff:ff:ff(MAC地址) 目的地址:ff:ff:ff:ff:ff:ff(广播) 源地址:00:0d:87:f8:4c:f9(192.168.0.44) 类型:地址转换协议ARP(Ox0806) 尾部:000000000

·地址转换协议 ·硬件类型(Hardware type):16位,定义ARP实现在何种类型的网络上,以太网的硬件类型值为Ox0001,图中为以太网Ox0001 ·协议类型(Protocol type):16位,定义使用ARP/RARP的协议类型,IPv4类型值为Ox0800,图中为IP Ox0800 ·硬件地址长度(Hardware size):1字节,以字节为单位定义物理地址的长度,图中为6 ·协议地址长度(Protocol size):1字节,以字节为单位定义协议地址的长度,图中为4 ·操作类型(Opcode):16位,定义报文类型,1为ARP请求,2为ARP应答,3为RARP 请求,4为RARP应答,图中为请求(Ox0001) ·发送方MAC地址(Sender MAC address):6字节,发送方的MAC地址,图中为00:0d:87:f8:4c:f9 ·发送方IP地址(Sender IP address):4字节,发送方的IP地址,RARP请求中不填此字段图中为192.168.0.44 ·目的MAC地址(Target MAC address):6字节,ARP请求中不填此字段(待解析),图中为00:00:00:00:00:00 ·目的协议地址(Target IP address):4字节,长度取决于协议地址长度,长度一共28字节,图中为192.168.80.1

进程间通信实验报告

进程间通信实验报告 班级:10网工三班学生姓名:谢昊天学号:1215134046 实验目的和要求: Linux系统的进程通信机构 (IPC) 允许在任意进程间大批量地交换数据。本实验的目的是了解和熟悉Linux支持的消息通讯机制及信息量机制。 实验内容与分析设计: (1)消息的创建,发送和接收。 ①使用系统调用msgget (), msgsnd (), msgrev (), 及msgctl () 编制一长度为1k 的消息的发送和接收程序。 ②观察上面的程序,说明控制消息队列系统调用msgctl () 在此起什么作用? (2)共享存储区的创建、附接和段接。 使用系统调用shmget(),shmat(),sgmdt(),shmctl(),编制一个与上述功能相同的程序。(3)比较上述(1),(2)两种消息通信机制中数据传输的时间。 实验步骤与调试过程: 1.消息的创建,发送和接收: (1)先后通过fork( )两个子进程,SERVER和CLIENT进行通信。 (2)在SERVER端建立一个Key为75的消息队列,等待其他进程发来的消息。当遇到类型为1的消息,则作为结束信号,取消该队列,并退出SERVER 。SERVER每接收到一个消息后显示一句“(server)received”。 (3)CLIENT端使用Key为75的消息队列,先后发送类型从10到1的消息,然后退出。最后的一个消息,既是 SERVER端需要的结束信号。CLIENT每发送一条消息后显示一句“(client)sent”。 (4)父进程在 SERVER和 CLIENT均退出后结束。 2.共享存储区的创建,附接和断接: (1)先后通过fork( )两个子进程,SERVER和CLIENT进行通信。 (2)SERVER端建立一个KEY为75的共享区,并将第一个字节置为-1。作为数据空的标志.等待其他进程发来的消息.当该字节的值发生变化时,表示收到了该消息,进行处理.然后再次把它的值设为-1.如果遇到的值为0,则视为结束信号,取消该队列,并退出SERVER.SERVER 每接收到一次数据后显示”(server)received”. (3)CLIENT端建立一个为75的共享区,当共享取得第一个字节为-1时, Server端空闲,可发送请求. CLIENT 随即填入9到0.期间等待Server端再次空闲.进行完这些操作后, CLIENT退出. CLIENT每发送一次数据后显示”(client)sent”. (4)父进程在SERVER和CLIENT均退出后结束。 实验结果: 1.消息的创建,发送和接收: 由 Client 发送两条消息,然后Server接收一条消息。此后Client Server交替发送和接收消息。最后一次接收两条消息。Client 和Server 分别发送和接收了10条消息。message 的传送和控制并不保证完全同步,当一个程序不再激活状态的时候,它完全可能继续睡眠,造成上面现象。在多次send message 后才 receive message.这一点有助于理解消息转送的实现机理。

Linux进程通信实验报告

Linux进程通信实验报告 一、实验目的和要求 1.进一步了解对进程控制的系统调用方法。 2.通过进程通信设计达到了解UNIX或Linux系统中进程通信的基本原理。 二、实验内容和原理 1.实验编程,编写程序实现进程的管道通信(设定程序名为pipe.c)。使 用系统调用pipe()建立一条管道线。而父进程从则从管道中读出来自 于两个子进程的信息,显示在屏幕上。要求父进程先接受子进程P1 发来的消息,然后再接受子进程P2发来的消息。 2.可选实验,编制一段程序,使其实现进程的软中断通信(设定程序名为 softint.c)。使用系统调用fork()创建两个子进程,再用系统调用 signal()让父进程捕捉键盘上来的中断信号(即按Del键),当父进程 接受这两个软中断的其中一个后,父进程用系统调用kill()向两个子 进程分别发送整数值为16和17的软中断信号,子进程获得对应软中 断信号后分别输出相应信息后终止。 三、实验环境 一台安装了Red Hat Linux 9操作系统的计算机。 四、实验操作方法和步骤 进入Linux操作系统,利用vi编辑器将程序源代码输入并保存好,然后 打开终端对程序进行编译运行。 五、实验中遇到的问题及解决 六、实验结果及分析 基本实验 可选实验

七、源代码 Pipe.c #include"stdio.h" #include"unistd.h" main(){ int i,j,fd[2]; char S[100]; pipe(fd); if(i=fork==0){ sprintf(S,"child process 1 is sending a message \n"); write(fd[1],S,50); sleep(3); return; } if(j=fork()==0){ sprintf(S,"child process 2 is sending a message \n"); write(fd[1],S,50); sleep(3); return;

通信电子线路实物实验报告

东南大学电工电子实验中心 实验报告 课程名称:电子电路与综合实验 第一次实物实验 院(系):信息科学与工程学院专业:信息工程姓名:陈金炜学号:04013130 实验室:高频实验室实验组别: 同组人员:陈秦郭子衡邹俊昊实验时间:2015年11月21日评定成绩:审阅教师:

实验一常用仪器使用 一、实验目的 1. 通过实验掌握常用示波器、信号源和频谱仪等仪器的使用,并理解常用仪器的基本工作 原理; 2.通过实验掌握振幅调制、频率调制的基本概念。 二、实验仪器 示波器(带宽大于 100MHz) 1台 万用表 1台 双路直流稳压电源 1台 信号发生器 1台 频谱仪 1台 多功能实验箱 1 套 多功能智能测试仪1 台 三、实验内容 1、说明频谱仪的主要工作原理,示波器测量精度与示波器带宽、与被测信号频率之间关系。 答: (1)频谱仪结构框图为: 频谱仪的主要工作原理: ①对信号进行时域的采集,对其进行傅里叶变换,将其转换成频域信号。这种方法对于AD 要求很高,但还是难以分析高频信号。

②通过直接接收,称为超外差接收直接扫描调谐分析仪。即:信号通过混频器与本振混频后得到中频,采用固定中频的办法,并使本振在信号可能的频谱范围内变化。得到中频后进行滤波和检波,就可以获取信号中某一频率分量的大小。 (2)示波器的测量精度与示波器带宽、被测信号频率之间的关系: 示波器的带宽越宽,在通带内的衰减就越缓慢; 示波器带宽越宽,被测信号频率离示波器通带截止频率点就越远,则测得的数据精度约高。 2、画出示波器测量电源上电时间示意图,说明示波器可以捕获电源上电上升时间的工作原理。 答: 上电时间示意图: 工作原理: 捕获这个过程需要示波器采样周期小于过渡时间。示波器探头与电源相连,使示波器工作于“正常”触发方式,接通电源后,便有电信号进入示波器,由于示波器为“正常”触发方式,所以在屏幕上会显示出电势波形;并且当上电完成后,由于没有触发信号,示波器将不再显示此信号。这样,就可以利用游标读出电源上电的上升时间。 3、简要说明在FM 调制过程中,调制信号的幅度与频率信息是如何加到FM 波中的? 答: 载波的瞬时角频率为()()c f t k u t ωωΩ=+,(其中f k 为与电路有关的调频比例常数) 已调的瞬时相角为00 t ()()t t c f t dt t k u t dt θωωθΩ =++? ?()= 所以FM 已调波的表达式为:000 ()cos[()]t om c f u t U t k u t dt ωθΩ =++? 当()cos m u t U t ΩΩ=Ω时,00()cos[sin ]om c f u t U t M t ωθ=+Ω+ 其中f M 为调制指数其值与调制信号的幅度m U Ω成正比,与调制信号的角频率Ω反比,即 m f f U M k Ω=Ω 。这样,调制信号的幅度与频率信息是已加到 FM 波中。

通信综合实训系统实验报告

. 通信综合实训系统实验 (程控交换系统实验) 学生姓名 学号 专业班级通信工程班 指导老师 年月日

实验1 局内呼叫处理实验 一、实验目的 1.通过对模拟用户的呼叫追踪,加深对程控交换机呼叫处理过程的理解; 2.掌握程控交换机配置数据的意义及原理; 3.根据设计要求,完成对程控交换机本局数据的配置。 二、实验内容 1.学习ZXJ10程控交换机本局数据配置方法; 2.模拟用户动态跟踪,深入分析交换机呼叫流程; 3.按照实验指导书的步骤配置本局数据,电话号码7000000~7000023分配到ASLC板 卡的0~23端口,并用7000000拨打7000001电话,按照实验指导书方法创建模拟用户呼叫跟踪,观察呼叫动态迁移,理解单模块呼叫流程。 4.本局数据配置需要配置如下: 局信息配置 局容量数据配置 交换局配置 物理配置 号码管理、号码分析 三、实验仪器 程控交换机1套 维护终端若干 电话机若干 四、实验步骤 (一)、启动后台维护控制中心 启动程控交换机网管终端计算机,点击桌面快捷方式的,启动后的维护控制中心如下图2-1(利用众友开发软件CCTS可省略该步骤): (二)、启动操作维护台 选中后台维护系统控制中心,单击右键,选中【启动操作维护平台】,出现如下的对话框,输入操作员名【SYSTEM】,口令为空,单击【确定】后,将会登陆操作维护系统。

(三)、告警局配置 打开“系统维护(C)”----“告警局配置(B)”,点击“局信息配置(B)”后,弹出如下界面。 输入该局的区号532,局号1,然后点击【写库】。 (四)、局容量数据配置 打开【基本数据管理】-【局容量数据配置】,点击后弹出如下操作界面(分别进行全局容量、各模块容量进行规划设置),点击【全局规划】,出现如下的对话框. 点击【全部使用建议值】,当前值自动填上系统默认的数值,点击【确定】后返回容量规划界面,点击【增加】, 模块号2,MP内存128,普通外围、远端交换模块,填写完,点击【全部使用建议值】。 (五)、交换局配置 在后台维护系统打开[数据管理→基本数据管理→交换局配置]弹出如下的对话框,按照图示,只填写【本交换局】-【交换局配置数据】,点击设置。 (六)、物理配置 在后台维护系统打开[数据管理→基本数据管理→物理配置]:

进程同步实验报告

实验三进程的同步 一、实验目的 1、了解进程同步和互斥的概念及实现方法; 2、更深一步的了解fork()的系统调用方式。 二、实验内容 1、预习操作系统进程同步的概念及实现方法。 2、编写一段源程序,用系统调用fork()创建两个子进程,当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”;子进程分别显示字符“b”和字符“c”。程序的输出是什么?分析原因。 3、阅读模拟火车站售票系统和实现进程的管道通信源代码,查阅有关进程创建、进程互斥、进程同步的系统功能调用或API,简要解释例程中用到的系统功能或API的用法,并编辑、编译、运行程序,记录程序的运行结果,尝试给出合理的解释。 4、(选做)修改问题2的代码,使得父子按顺序显示字符“a”;“b”、“c”编辑、编译、运行。记录程序运行结果。 三、设计思想 1、程序框架 (1)创建两个子进程:(2)售票系统:

(3)管道通信: 先创建子进程,然后对内容加锁,将输出语句存入缓存,并让子进程自己进入睡眠,等待别的进程将其唤醒,最后解锁;第二个子进程也执行这样的过程。父进程等待子进程后读内容并输出。 (4)修改程序(1):在子进程的输出语句前加上sleep()语句,即等待父进程执行完以后再输出。 2、用到的文件系统调用函数 (1)创建两个子进程:fork() (2)售票系统:DWORD WINAPI Fun1Proc(LPVOID lpPartameter); CreateThread(NULL,0,Fun1Proc,NULL,0,NULL); CloseHandle(hThread1); (HANDLE)CreateMutex(NULL,FALSE,NULL); Sleep(4000)(sleep调用进程进入睡眠状态(封锁), 直到被唤醒); WaitForSingleObject(hMutex,INFINITE); ReleaseMutex(hMutex); (3)管道通信:pipe(fd),fd: int fd[2],其中: fd[0] 、fd[1]文件描述符(读、写); lockf( fd,function,byte)(fd: 文件描述符;function: 1: 锁定 0:解锁;byte: 锁定的字节数,0: 从当前位置到文件尾); write(fd,buf,byte)、read(fd,buf,byte) (fd: 文件描述符;buf : 信息传送的源(目标)地址;byte: 传送的字节数); sleep(5); exit(0); read(fd[0],s,50) (4)修改程序(1):fork(); sleep(); 四、调试过程 1、测试数据设计 (1)创建两个子进程:

通信电子线路实验报告三点式振荡

通信电了线路课程设计 课程名称通信电子线路课程设计_________________ 专业___________________ 通信工程 ______________________ 班级___________________________________________ 学号___________________________________________ 姓名___________________________________________

指导教师________________________________________ 、八 刖 现代通信的主要任务就是迅速而准确的传输信息。随着通信技术的日益发展,组成通信系统的电子线路不断更新,其应用十分广泛。实现通信的方式和手段很多,通信电子线路主要利用电磁波传递信息的无线通信系统。 在本课程设计中,着眼于无线电通信的基础电路一一LC正弦振荡器的分析和研究。常用正弦波振荡器主要由决定振荡频率的选频网络和维持振荡的正反馈放大器组成,这就是反馈振荡器。按照选频网络所采用元件的不同,正弦波振荡器可分为LC振荡器、RC振荡器和晶体振荡器等类型。其中LC振荡器和晶体振荡器用于产生高频正弦波。正反馈放大器既可以由晶体管、场效应管等分立器件组成,也可由集成电路组成。LC振荡器中除了有互感耦合反馈型振荡器之外,其最基本的就是三端式(又称三点式)的振荡器。而三点式的振荡器中又有电容三点式振荡器和电感三点式振荡器这两种基本类型。 反馈振荡器是一种常用的正弦波振荡器,主要由决定振荡频率的选频网络和维持振荡的正反馈放大器组成。按照选频网络所采用元件的不同,正弦波振荡器可分为LC振荡器、RC振荡器和晶体振荡器等类型。本文介绍了高频电感三点式振荡器电路的原理及设计,电感三点式易起振,调整频率方便,可以通过改变电容调整频率而不影响反馈系数。正弦波振荡器在各种电子设备中有着广泛的应用。根据所产生的波形不同,可将振荡器分成正弦波振荡器和非正弦波振荡器两大类。前者能产生正弦波,后者能产生矩形波、三角波、锯齿波等。 在此次的通信电子线路课程设计中,我选做的是电感三点式振荡设计,通过为时一周的上机实验,我学到了很多书本之外的知识,在老师的指导下达到实验设计的要求指

数据通信实验报告

电子科技大学 实验报告 实验一 NS2的基础使用 NS2是一种提供虚拟环境进行网络模拟仿真,能验证网络性能的正确性和进行相关性能测试的软件。 一、实验环境: Ubuntu 12.04/kernel 3.5 GCC 4.6.3 NS-2.33 二、网络拓扑: 实验共有6个节点,每个节点的连接情况如图所示。其中节点N0、N2和节点N1、N2连接,N3、N4和N4、N5连接,N2和N3连接。从0号节点到2号节点,带宽为2Mb,延时为10ms。 三、实践步骤: 切换到用户根目录下cd ~ 建立自己的文件夹mkdir your_document_name 进入刚刚新建的文件夹cd your_document_name 新建一个TCL 脚本文件gedit your_TCL_file_name.tcl #Here is the beginning of this code file set val(stop) 5.0 ;# 模拟器结束时间 #新建一个NS 模拟对象 set ns [new Simulator] #打开NS 追踪文件 set tracefile [open out.tr w] $ns trace-all $tracefile

#打开NAM 追踪文件 set namfile [open out.nam w] $ns namtrace-all $namfile #新建6 个节点 set n0 [$ns node] set n1 [$ns node] set n2 [$ns node] set n3 [$ns node] set n4 [$ns node] set n5 [$ns node] #建立节点之间的链路,格式解释如下 #duplex-link 双向链路可选选项(duplex-link,simple-link 单向链路) #$n0 $n2 表明从0 号节点到2 号节点 #2.0Mb 申明链路传输速率,可使用Mb,Kb,b #10ms 申明链路传输延迟 #DropTail 队列类型 $ns duplex-link $n0 $n2 2.0Mb 10ms DropTail #申明链路队列长度 $ns queue-limit $n0 $n2 10 $ns duplex-link $n1 $n2 2.0Mb 10ms DropTail $ns queue-limit $n1 $n2 10 $ns duplex-link $n4 $n3 2.0Mb 10ms DropTail $ns queue-limit $n4 $n3 10 $ns duplex-link $n3 $n2 1.0Mb 20ms DropTail $ns queue-limit $n3 $n2 10 $ns duplex-link $n3 $n5 2.0Mb 10ms DropTail $ns queue-limit $n3 $n5 10 #为NAM 创建节点位置描述,以第一个为例,2 号节点在0 号节点的右下方 $ns duplex-link-op $n0 $n2 orient right-down $ns duplex-link-op $n1 $n2 orient right-up $ns duplex-link-op $n4 $n3 orient left-down $ns duplex-link-op $n3 $n2 orient left $ns duplex-link-op $n3 $n5 orient right-down #新建一个UDP 连接 set udp0 [new Agent/UDP] #将0 号节点Agent/UDP 绑定,以下类似 $ns attach-agent $n0 $udp0 set null2 [new Agent/Null] $ns attach-agent $n4 $null2 #将Agent/UDP 及Agent/Null 节点进行连接 $ns connect $udp0 $null2 #设置Agent/UDP 包大小

操作系统进程创建及通信实验报告

武汉工程大学计算机科学与工程学院 《操作系统》实验报告[Ⅰ]

一、实验目的 创建进程,实现进程消息通信和共享内存通信,了解进程的创建、退出和获取进程信。了解什么是映像文件、管道通信及其作用,掌握通过内存映像文件和管道技术实现进程通信。 二、实验内容 本例用三种方法实现进程通信,仅用于示例目的,没有进行功能优化。 1、创建进程A和B后,在进程A中输入一些字符,点“利用 SendMessage发送消息”按钮可将消息发到进程B。 2、在进程A中输入一些字符,点“写数据到内存映像文件”按钮, 然后在进程B中点“从内存映像文件读数据”按钮可收到消息。其中在点“写数据到内存映像文件”时,要求创建映像文件,B进程在印象文件中读取数据。 3、先在进程B中点“创建管道并接收数据”按钮,然后在进程A 中输入一些字符,点“写数据到管道文件”按钮可将消息发到进程B。管道是连接读/写进程使他们进行通信的一个共享文件,目的是更好地实现进程间的通信。 三、实验思想 这次试验最主要的内容和核心思想就是学会创建进程并实现进程间的简单通信、创建映像文件和创建管道文件来通信,后两者是实现进程通信的高级通信机制中的两种。. 创建一个程序A和程序B,其中程序A和B各有一个主窗体,A主窗体上要求可以实现创建进程B(即调用函数B)、结束进程B、关闭进程A、向进程B发送数据、创建映像文件、创建管道文件等功能,进程B要求有从映像文件读取数据、创建管道并接收数据、结束进程B功能。最终让A、B进程相互通信。

四、设计分析: 首先设得设计A、B两个程序的操作界面,然后编写各个功能模块。对于A 程序窗体,在“利用SendMessage发送消息”按钮的消息响应函数中,主要是利用Windows API函数CWnd::FindWindow来找到接收消息的窗体,即进程B,找到进程B后,利用这个函数返回的窗体指针的SendMessage函数来发送消息。在“写数据到内存印象文件”按钮的消息响应函数中,主要是利用函数CreateFileMapping来创建一个印象文件,这个函数返回的是这个印象文件的句柄,然后将这个句柄和要发送的消息字符串传递到函数sprintf中,就可以所要发送的消息写入印象文件,在B程序窗体中有个“从内存印象文件读数据”按钮,在这个按钮的消息响应函数中读取父进程所创建的印象文件中的数据就可以实现通信了。在B程序窗体按钮“写数据到管道文件”的消息响应函数中,不能直接将要发送的消息发送到管道文件,因为管道必须先由子进程通过函数CreateNamedPipe创建,只有待子进程创建好管道后父进程才能根据管道创建管道文件,将消息写入管道文件并及时发送给子进程。而且这个管道只能使用一次,即每次发送完消息后那个管道不能在使用了,必须再由子进程创建一个管道,A 进程才能再次创建管道文件并向其中写入消息。这个程序也不一定要MFC实现,还可以用其他的技术和语言实现,比如说Java、VB等,外表构架可以不一样,但核心技术都是一样的,只是不同的调用形式和调用方法,比如说在VB中,实现进程间的一般通信就是使用动态数据交换DDE,实现起来就比较简单,但是要创建映像文件和管道文件就比较繁琐,可以根据不同的需求采用不同的语言。 五、程序部分源代码: 1.“利用SendMessage发送消息”按钮中的主要代码 //找到接收消息的窗口(窗口名为Receiver) CString str="进程B"; CWnd *pWnd=CWnd::FindWindow(NULL,str); if(pWnd) { COPYDATASTRUCT buf; char * s=new char[m_Msg1.GetLength()]; //m_Msg1为CString类型的变量 s=m_Msg1.GetBuffer(0);

相关主题
文本预览
相关文档 最新文档