安捷伦N9030A频谱仪Scpi接口协议
安捷伦N9030A频谱仪Scpi接口协议,英文版资料,很详细实现连通对于VISA必须注意:虽然应用指南14659/1465-11Ⅵ ISA API是标准的,但各厂商则是在早期自动测试中,系统控制概要器称为台式计算器或仪器控制器用VSA层下的不同层控制硬件。此它只有有限的处理能力和少量的外,各厂商还可能为它应用层的独测试系统中的一些因素会增加存储器。为使语法尽可能简单,设备特特性作了增强。为使其能完成所Vo连接的负担。比如系统中的仪器制造商采用短命令,先是二进制,后有工作,主计算机中安装的VSA版数,要执行的测试数,命令量、状态消息,以及要传送的测试数据。LAN本必须与IO硬件兼容(这正是PC采用ASCI1技术是解决负担问题的最好方法。标准IO,如LAN和LSB的另一优它是GPB的快速和低价的替代方不同制造商定义他们自己的命点,支持这些按口的任何版木SA案,在连接距离和锁定连接器上也令串,通常是针对各仪器特定功能都能工作,因为低级驱动程序已标超过UsB。的专有命令。在系统中要把仪器更准化)换至另一厂家的仪器,甚至用新仪当前一代PC多数都有内置的器更换同一厂家的较老仪器,都可更自由地选择LAN端口,因此测试系统的计算部分只需最小的物理配置。测试仪器能需要完全重写系统软件。与测试和测量行业1O的进步拥有LAN端口也越来越平常。此同时,PC行业一直在追求DO和程外,像 Agilent E5810 A LAN/ GPIB仪器命令还不是故事的全部。序语言的独立性,Mco建立了网关这样的装置能在基于LAN的测控制器和系统仪器间的连接性需要组件对象模型(COM,这是允许不试系统中容易地包括仅有GPB的另增的软件层。历史上的1O软件层同软件厂商制作的组件组合进入各较老仪器。包括了库,如标准仪器控制库种应用的软件体系结构。COM不依(SICL)或NL-48应用软件通过使赖于任何特定的程序语言作出系统使用LAN的决定用这些库实现与仪器的直接通信。也能更容易地与同事共享数据、结各厂商都有专用于与自己IO接口为融入语言独立性的优点果、报告等。但它也为可能影响系统性能和完整性的恶意威胁和不经意通信的专有应用程序接口(API)。这 Agilent开始建立作为ⅤISA标准伙的风险开启了大门。幸而有保护的给用不同厂家设备建造测试系统的伴的 VISA COM。 VISA COM是专用LAN能屏蔽网络免受大部份风系统开发者带来很大困难一当然, VISA API I面向对象的表述:ⅥSA险,并保证最大的吞吐率。大多数许多系统用过的(和还在使用的)设AP通过使用组件对象模型而进入 Windows PC和低价网络设备的这备确实来自多家厂商。应用层。些标准能力有两种可行的实现方法:一种是围绕LAN路由器建造标准化AP其结果是:Ⅵ SA COM使您能另一种是基于配有两块LAN卡的为更容易构建多厂商测试系统,自由选取最流行的1O配置,从选PC。组仪器厂商建立了虚拟仪器软件择“COM友好”语言,如C#、 VisualBasc6和Ⅴ isual basic.NET诸语言为在PC中建立与LAN使能仪体系结构(VISA)。它提供标准化的器的透明通信,还需要做一些工作。AP,允许通过公共接口一直接或中获益。如我们后面的讨论,您选择成功取决于 Microsoft windows xP使用驱动程序控制仪器。从应历的的应用开发环境(ADE)将影响对的LAN服务,以及 Agilent IO Li观点来看,各厂商的ⅤSA似乎相同。您应用的最佳库和API选择。braries suite14所提供简化和加速连接过程的一些附加能力。1为更多了解仪器控制的发展,请参看应用指南1465-3理解驱动程序和直接O,25页www.agilent.com/find/systemcomponents实现通信标准化直接Mo今天,SCPI仍是使用最多的仪器控当您使能了连通能力后,就要1989年,HP2推出称为测试和制形式。决定如何实现主计算机和系统仪器测量系统语言(TMSL)的仪器通信间的通信。有两种可选方案,即直接语言,在改进一致性和易用性上:作IO和仪器驱动程序。直接O建立了尝试。其后HP和其它八家制造与各仪器的直接连接,它较快,但限商以TMSL为起点,共同致力建立制了仪器的互换和软件重用。大多通用的仪器控制方法。其成果是数仪器驱动程序使用直接IO和SCPI,即可编程仪器的标准命令。SCPI,但有时它会隐藏连接。总之,驱动程序以降低灵活性(可能还有SCPI在仪器固件中的实现使用速度)为代价换取改进的互换性和于直接LO的程序语法更鲁棒和更重用能力。在许多情况下,您可既使可预期。语法定义了严格的层次,规用仪器驱动程序,又使用直接O,定了跨仪器型号的一致性命令、响以实现最佳速度、灵活性和测量功应和数据格式。所定义的这些命令能的平衡。和响应适用于源、敏感和开关装置。表1:这一 Visual basic6框图使用ScP和Ⅵ SA COM IO与函数发生器通信Dim Egen As VisaComL-b. FormattedIo488Code removed: Set up the connection to tre instrumentWith fenWritestringReset the function generator工. ClearClear errors and status registersWritestring "FUNCtion PUlSeSelect pulse waveshapeWritestring "OUTPut: LOAD 50Set the load -mpedance to 50 ohms (defaultLOW OWritestringVOLTage: HIGH 0.75Figh level=.75 VWritestring "PULSe: PERiod 1e-3Writestring "PULSe: WIDTh 100e-6Pulse width100usWritestring PULSe: RANsition 10e-gi Edge time is -0 ns (rise time fall time)Iritestring OUTPut ONTurn on the instrument outputFcr I =0 To 18Vary edge by 5 nsec stepsWritestring " PULSe: RANsition " s(0.000C0001 +I*0. 000000005300mEnd with21999年HP把它的测试和测量业务分拆至 Agilent改进互换和重用于ⅠⅥI标准的出现,NⅠ为遵循探索应用的替代方案SCPI是一项重大进步,但仪器标准更新了它的工具,但基于专打包的压缩软件通常以性能和驱动程序的后续发展已使互换和重有工具的许多系统仍在使用中。灵活性为代价,提供测量和分析的为获得重用和可互换能力,TV-用达到全新的水平。仪器驱动程序C需要用附加补丁软件围绕不直便利。这样的产品一般非常适合产(或简称“驱动程序”)是使能PC与品开发期间使用的小型系统或一次仪器间的通信,针对特定仪器(或特接攴持软件互换能力的核心DLL性系统。与其相反,定制软件往往是定仪器门类)的高层软件部分。对软技术,应用程序必须调用中间驱件开发者来说,驱动程序通过指导动程序(一个“YVC类驱动程需要高性能和最大灵活性的设计验证和生产测试这类应用的最好答案。开发者完成各必要编程步骤和在程序”),然后由它接着调用实现该序环境内提供仪器能力简化编程和功能的专门仪器驱动程序。简化基本分析任务缩短开发时间(而不是像SCPI和直‘1coM:通过利用COM计算有一些替代通用开发环境的方接IO那样在手册中)。机标准,该标准能最大限度实现案。一个例子是“目标应用”,它针可互换性和重用。 IVI-COM驱动对特定的测量或技术领域,或针对第一代驱动程序针对特定厂商,程序与标准PC组件体系结构软产品开发生命期中的特定阶段或任通常使用特定ADE工作(有些遗存的应用程序还在使用这样的专用驱件相集成,从熟悉和方便的务。这些应用包括为非经常性测量动程序)。但今天巳有三种类型的标ADE控制仪器,以得到生产能力所设计的软件(手动或半自动)。这准化仪器驱动程序。它们与多种的极大改进。IVI-COM驱动程些软件一般用于产品开发的较早阶ADE一道工作,能使仪器与任何厂序用VISA( ISA COM或段或设计验证期间。商的IO硬件通信。ⅥISA-C)控制VX或GPB仪器。由于许多新的仪器包括计算机标像 Agilent IntuiLink连通性软件·VⅪ即插即用:它们原来是为模准O,如IAN和USB,用于非(免费)和 Agilent BenchLink(低价)块化ⅤⅪI仪器开发,后来又扩展GPB仪器的 VI-COM驱动程这类应用软件能容易地用于执行半到非VXI仪器。通过VISA库,序并不要求使用VSA,虽然许自动测量,收集效据和分析来自各种仪器的结果。这两种应用软件使致性的驱动程序提供Ⅰ/O多使用了VISA用驱动程序或直接IO一以实现仪器VXI即插即用WIN32驱动程序规范能在所有流行语言中工作,如果您不能确定使用的是何种通信、控制和数据传输。O技术或驱动程序,可检查仪器通是今天使用最广的驱动程序体系结构。信所使用的连接串或“仪器地址”VISA型串的形式如“ TCPIPⅣ-c:ⅣVL-C有二个明显不同的34980A.tm.agilent.com:inst0驱动程序。该术语通常适用于基NSTR”,而基于SCL的串则如“lan于NI专有工具的驱动程序。由34980A.m.agilent.com]nst0"www.agilent.com/find/systemcomponents· Intuilink:这种连通性应用软件BenchLink是 Windows基应用钦比较开发环境通过在流行PC应用软件,如件(图2),它用电子数据表格式Windows word和 Excel中增加流程化数据收集、展示和分析。您行将选择的软件环境对建立工具条简化数据传输。 Intuilink它也能通过包括在IO软件中的和维护测试系统所需要的时间、工作量和成本有极为显著的影响。开能从测量仪器直接取回数据,使LAN、USB或GPIB与仪器通信发环境可以是图形式的,或者是文您能保持在PC应用软件中,并还有对 BenchLink的更高售价本式的。如 Agilent VEE Pro和N使用其熟悉的界面。通过支持LabvIEw这样的图形环境使用图示GPB、USB、LAN和 Fire wire接替代方案,包括适用于功能测试的方法,工程师掌握这种方法比较容口, ntuilink也消除了仪器与PC仪器控制软件和特定域应用软件易。您只需操纵代表命令和功能的间的壁垒产品范围从一般测试执行程序到针图标用程序流线把它们连接,这样对应用的程序,如蜂窝电话管制测做能更容易看到执行路径和交互Benchlink:这种低价的应用软试L具。所有这些都服务于减少仪它也为您屏蔽了下层的语法。针对件有支持各种仪器的版本。器编程、连通和通信的负担测试和测量的图形环境还有扩展的1/O和仪器驱动程序,以及与测量相关的数学运算及图形能力。图形编程最适合小型和中型的测量应用图2. Agilent BenchLink Data Log9gr提供电子数据表形式的测试设置,以及对测量的实时显示和分析而对大型程序,可视接口则变得难以理解X吧国园xScen Setup SWich Cortrol l相反,文本程序则较难掌握,因Enablerecopy To Cupboard CrannetslodsMep为需要全面和深入了解编程语言的20-Chwnnel Amwu Mu曲啪母图·世留队茶命令和语法。但由于多数文本语言是基于开放标准,它们提供对开发0.036612435DC)环境、软件工具和培训机会的更大Awerage value. -0.0367263015253828选择。而且有众多适用的第三方驱动程序、工具和插卡。文本程序最适-1.157E06cDC)合大型复杂程序,因为更容易浏览Average Voke:-11016209107932E-06和理解。Rslerence Ref Unt MaterA Maxmum value: 1. 414E-0S过去,文本编程所产生的应用10.00md004212221444wdoChae5000c0024254程序在运行时间上有明显的速度优Minmum Value:-2357E-06势,它超过图形编程所产生的应用Count: 1184yl(02Auro ScoleD.002884919Della0010.64程序。但在今天,这两种方法产生的one Fo Computed应用程序在运行速度上相差甚小。最大化性能和灵活性屏上帮助: Intellisense特性和具有 Agilent测试和您可选择支持定制测量软件创F帮助”能力与基于COM和测量工具集的Ⅴisua| Studio建的方案。其范围从测试自动化应NET的第三方驱动程序和软件Agilent测试和测量L具集2.0用软件到使用图形或文本编程的全协同工作。例如驱动程序的功能开发环境。您选中的方案将确Intellisense窗显示所有可用的榮具有测试自动化能力,它使用一套作,对每一项操作的简要描述,集成和易于使用的软件工具和组件定仪器通信的最好选择。以及所有允许参数的概要和说项目向导、API、类库、 widgets、Microsoft visual studio明。对于各种驱动程序或部件,图形、驱动程序和其它工具扩屐V只需按F1键,就打开展现该驱 sual studio的NE版。所建立的坏Ⅴ Visual studio是文本式的编程动程序在线帮助手册的新视窗。境简化了把测试和测量融入定制应解决方案,它提供扩展的开发工具这种上下文相关的屏上帮助要比用软件的过程。在 Visual Studio环和内置的帮助能力,以加速Win-翻阅印刷的编程手册快得多。境中使用测试和测量工县集2.0,您dows基应用软件的开发。集成的就可使用所中意的文本编程语言,开发环境为所有支持语言提供一致种测试系统应用软件也有·把您的新代码与在其它语言中编写性的接口,包括 Visual basic,CH+项缺点:即Ⅴ isual studio中的新.的已有代码相集成。和C#。NFT基语言难以使用CAPI。Microsoft程序语言最新版用NET技测试和测量工具集2.0还提供作为标准化的主流开发产品,术与驱动程序及第三方软件通信二加速和简化系统开发的一些其它Visual studio有如下优点NHT迅速扬弃了CAP技术。这影能力。开放性:由于Ⅴ isual studio是开响到YSA1O库的CAP版本,以· DirectIo类:这是直接向仪器发放和应用广泛的标准,因此能与及IVC和ⅤX即插即用驱动程序送命令的最简单方法。任何其它编程技术通信。这样,为解决这一问题, Agilent为VlSA您就能用数以千计的第三方工具^PL提供NET的包装程序。该包·包装的ⅤX即插即用驱动程序软件和驱动程序等一来支持装程序可免费从www.agilent它把驱动程序集成至.NET,县您的开发工作。com/find/iolib下载,它也已包括在有全部 IntelliSense和F1帮助能Agilent IO库产品中。力。测试和测量工具集也能认识coM友好: Visual studio能使用和使用带有内置 Intellisense的基于 Microsoft com的编程技术IV-COM驱动程序。良好工作。包括Ⅴ ISA COM和IVI-COM。●仪器资源管理器:用这一工具能容易地看到和编辑仪器IO配置初始化与仪器的通信。www.agilent.com/find/systemcomponentso监视程序:这一公共程序使 Agilent VEE Pro由于 VEE Pro是开放和对标准您能更容易地使用仪器控制软件对于寻求替代文本编程的L稗友好的环境,它也为测试系统开发和仪器驱动程序—IVI-CON,师来说, Agilent VEE Pro70是能提供一些好处:VXI郎插即用驱动程序一通过监视直接LO下层发送至仪器的加速建造和编程测试系统进程的强直接JO:通过其容易和强大的直大而易用的程序环境。为创建一个命令和返回的结果数据诊断问题接I/O能力,Ⅴ EE Pro提供对直(图3)。程序,您从宏大的库中选择高级图接IO的极好支持,以控制任何形对象,把它们用直线或“导线”连标准仪器和许多厂商的PC插卡。这样, Visual Studio和测试和测接。导线连接规定了直观框图中的量工具集的有机结合就能解决与定功能和序列。仪器驱动程序: VEE Pro支持各制应用软件连接和控制测试设备相种工业标准驱动程序,如IVI关的许多难题。COM和VⅪI即插即用驱动程序。它支持上千种驱动程序,以及70多家制造商的流行仪器。图3.测试和测量工具集的监视程序跟踪o层,提供 Agilent VISA. SA COM,SCL和SCL细·COM和NET:对于不熟悉NET节,帮助您找到源代码中的瓶颈问题程序语言而又需要使用这些能力9 Agilent IO Monitor的工程帅来说, VEE Pro关注各Fle View Monitor Help种细节,可确保COM与NETG區母■园Time Stamp Progr3 aDdress」soe」 FunctionI 10 Data Ret Val Time(ms)软件的成功交互14: 03: 34.909 vaexe gpib. 22 SICLSICLcausee0367014: 03: 34.910 vaexe gpib. 22 SICLSICL:: Prompt1222573014: 03: 34.911 vaexe gpib. 22 SICL Detail SICL B: tulip write " TST?. 0 85.350014: 03: 34.997 va exe gpib, 22 SICL Detail SICL B: tulip read152129210SICL B: tulip write- Process ID 1884: Thread ID 1880Parameters.InputNameTypeValueA OffsetHexadecimalASCllin int327400000002a54535430..TSTImein uint 32in uintain uint32ab al Is评估ⅣO软件替代方案ADE VS. O APIIVI-C和 IVI-COM。它们与多种我们的最终目标是使您能用最选用ADE将影响为您的应用选ADE一道工作,可通过任何厂商的少时间确定测试系统中应使用何种择最好的IO库和API。表2示出IO硬件与仪器通信。IO库或驱动程序。这项工作在今天 Agilent支持的各种IO,为各ADE表3从左到右示出三代驱动程是不可避免的一但我们能提出简化推荐的库,以及首选的和历史上的序标准化的进程一专用、测试和这一过程的几项建议。替代方案。测量标准和PC工业标准。它也代仪器驱动程序vs.直接o作为一个值得注意的例子,在表了驱动程序技术的过去、现在和在比较驱动程序和直接顶O时,使用Ⅴ isual basic6时,我们认为未来需考虑两项关键因素。一是开发诫 VISA COM优 J VISA AP,因为为加速测试系统开发,我们推度和执行速度的权衡:驱动程序有VISA COM是面向对象,而VISA卷仪器控制使用最新 VI-COM驱动更快的开发速度,而直接IO则能AP是层次观察。使用COM版意谓程序和VX即插即用WN32驱动更快地执行。着您不需要为YB对象增加bas文程序。ⅣCOM驱动程序技术是建件(需要通过参考),并且VISA造于PC标准体系结构之上的唯一另一项因素是能访问的仪器功COM允许使用上下文相关的种。在COM上建造的部件驱动能。驱动程序通常覆盖仪器所有功 ntcllisensc都助,。程序可在所有流行PC语言和大多能的一个子集—一般限制为最常使用的功能。相反,直接ⅣO与SCPⅠ ADE VS.仪器驱动程序数测试和测量语言中L作。此外,它利用最流行的IO形式,可用于最命令的组合能访问仪器可编程功能如上所述,有三种类型的标准新NET技术之中。的100%。如果您既想利用驱动程序化仪器驱动程序:ⅤXI即插即用的优点,又需要访问所不支持的特性,在一个应用程序中使用这两种方法是有可能的。表2ADE和推荐的|O库应用开发环境推荐的库支持的替代方案首选历史Visual basic 6VISA COMVISA With visa 32. basSICLVisual c/ct+VISA With visa 32. hVISA COMSICLVisual basic net测试和测量工具集直接WOⅥ SA COMC#和其它NET语言VISA With visa32 csVISA with visa32, vb表3ADE及其推荐的仪器驱动程序仪器驱动程序家族专用测试和测量测试和测量组件Pc(针对一种语言)(基于测试和测量标准)(基于PC标准)Labview即插即用abwindows/cⅥ即插即用V-COMVX/即插即用GN)WNVX即插即用VEE Panel驱动程序VI-Cwww.agilent.com/find/systemcomponents成就测试系统的未来术语输入/输出层一也称WO层;该软件与外部装置(如仪器)交互,发布命令和开放标准,如COM和LAN巳ADE一应用程序开发环境;这一软件收集数据。被计算机世界广泛接纳,现在又正开发程序的集成套件可能包括文本编辑成就着测试系统开发的未来。通过器、编译器调试器,以及用于建立、维V—可互换虚拟仪器;这是一种标准最大化软件重用,更容易的仪器互护和调试应用程序的其它工具。仪器驱动程序模型,允许对不同仪器型换,包括不同型号甚至不同品牌仪号和门类有一致的程序形式。AP|—应用程序接口这是严格定义的器的互换,这些标准加速了系统的套软件例程,通过它,应用程序能访ⅣMcOM驱动程序一也称M组件驱动开发。通过允许您在一个应用程序问操作系统下层或可重用软件库提供的程序;M驱动程序作为COM对象出中使用直接IO,SCPI和驱动程序,功能和服务。现,它保留您所选开发环境的所有能力。标准也提高了系统的功能性和性能。C#一读作“ C sharp”;这是新近面向LAN—局域网您选择的开发环境应能将测试组件的程序语言,它类似C+,并组和测量更容易融入定制应用程序中。合了C和Java语言的属性。库一汇集可调用的软件操作可重用的如果您更乐于使用文本程序,带有coM一公共对象模型,也称Mcot软件功能意味着可由其它程序使用。agilent测试和测量工具集的 Visual COM:它允许软件开发者创建可与现NET框架用于应用程序开发的平台,Studio将能避免与测试设备连接与有应用程序一道使用,而不需要修改程它在 Windows环境中提供大的操作库,控制有关的许多问题。如果您愿采序的新软件组件;这是为软件重用对鼓励软件重用,减少程序员错误和简化用图形程序, Agilent VEE Pro是开DLL的改进。应用程序的开发;它的两个主要组件是放和对标准友好的环境,它支持直公共语言运行时间和类库接IO和驱动程序,以及COM和.直接Wo一直接输入/输出;与仪器通NFT技术。信,但没有驱动程序的好处(或开销);即插即用驱动程序—也称通用仪器驱成功使用直接MO需要深入了解可编程动程序;VⅪ丨即插即用驱动程序被非为了解简化系统集成的更多方仪器的标准命令(SCP)。VⅪ仪器采用;用户编写的程序也能调用库功能。法,加速系统开发和利用开放连通DLL—动态链接库由其它应用程序使能力的各种优点,请访问:wWw.用的一套软件操作;它可随时加载,作scP|一可编程仪器的标准命令;定agilent. com/findlopen。您也能由为可重用软件库的容器由多个应用程序义了全套控制可编程测试设备的通用此链接到我们的系统开发者在线社同时共享。命令。区,通过签约优先获得本系列中未来的应用指南。只需寻找链接“Join驱动程序—也称仪器驱动程序这是驻SCL一标准仪器控制库;这是模块化存在计算机上和用于控制仪器(如数字仪器通信库,能与各种计算机体系结your peers in simplifying test-system多用表、示波器、网络分析仪)的功能构、丨O接口和操作系统一道工作;已被Integration汇集:也是ScL,直接O和SA的VsA取代替代方案。USB—通用串行总线;设计用于取代GP|B—通用接口总线;这是用于测试PC中的RS232和RS422串行总线设备与测试系统连接的最主要8-bt并行ⅣO连接。UPnP一通用即插即用;这一网络体系结构保证了装置、软件和外设的兼容HPB— Hewlett-Packard接口总线:性;它不同于即插即用或VX即插即用GP|B的另一名称驱动程序。10
- 2020-12-11下载
- 积分:1
c++笔试面试之网络和多线程
该文档是我总结的c++笔试面试通常会问的一些问题。另外可以从我的资源目录下找c++数据结构与算法,c++笔试面试基础两部分材料,综合这三个材料一起看,我相信大家一定尽快找到工作。ClientServerFIN WAIT 1IFIN MCLOSE WAITack M+1FIN WAIT 2LAST ACKFIN NTIME WAITACK=1 ack=K+CLOSEDm由于TCP连接是全双工的,因此,每个方向都必须要单独进行关闭,这一原则是当一方完成数据发送任务后,发送个FIN来终止这·方向的连接,收到个FIN只是意味着这方向上没有数据流动了,即不会再收到数据了,但是在这个TCP连接上仍然能够发送数据,直到这一方向也发送了FIN。首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭,上图描述的即是如此第一次挥于Client发送个HN,用来关闭 Client到 Server的数据传送, Client进入 FIN WA1状第二次挥手Server收到FIN后,发送一个ACK给 Clien,确认序号为收到序号+1(与SN相同,一个FIN占用一个序号), Server进入 CLOSE WAIT状态。第三次挥手Server发送一个FIN,用来关闭 Server到 Client的数据传送, Server进入 LAST ACK状态。第四次挥手Client收到FIN后, Client进入 TIME WAIT状态,接着发送一个ACK给 Server,确认序号为收到序号+1, Server进入CL0SED状态,完成四次挥手。5.tcp为什么建立连接是三次握手,而关闭连接却是四次挥手呢?当主杋A确认发送完数据且知道B已经接受完了,想要关闭发送数据口(当然确认信号还是可以发),就会发FN给主机B;主机B收到A发送的F⊥N,表示收到了,就会发送ACK回复;但这是B可能还在发送数据,没有想要关闭数据口的意思,所以FⅣN与ACK不是同时发送的,而是等到B数据发送完了,才会发送FIN给主机A:;A收到B发米的FIN,知道B的数据也发送完∫,回复ACK,A等待2MSL以后,没有收到B传来的任何消息,知道B已经收到自己的ACK了,A就关闭链接,B也关闭链接了。6.TCP头大小,包含字段?TCP协议头最少20个字节,包括TCP的源端口,目的端口,序列号,应答号等等。7.tcp与udp的区别?为什么TCP要叫做数据流?1).基于连接与无连接2).对系统资源的要求(TCP较多,UDP少)3).UDP程序结构较简单4).流模式与数据报模式5).TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证6).TCP有拥塞控和流量控制,UDP没有TCP提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丟弃重复数据,检验数据,沇量控制等功能,保证数据能从端传到另·端UDP是一个简单的面向数据报的运输层协议。∪DP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是不能保证它们能到达目的地。山于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快8使用udp和tcp进程网络传输,为什么tcp能保证包是发送顺序,而udp无法保证?因为TCP发送的数据包是按序号发送,有确认机制和丢失重传机制,而udp是不可靠的发送机制,发送的对应端口的数据包不是按顺序发送的。9tcp三次握手的, accept发生在三次握手哪个阶段?三次握手:C--->SYNK>ACK K+1 SYN JC->ACK]+1DONELclient的 connect引起3次握于server在 socket,bind, listen后,阻塞在 accept,三次握手完成后, accept返回一个fd,TCP服务器端sackettTC客户端bindosten)connecto建立连接阻寒直到有客户端连接请求数据writereadr处理请求回应数据readr结束连接readr yclose10.流量控制和拥塞控制的实现机制数据的传送与接收过程当中很可能出现收方来不及接收的情况,这时就需要对发方进行控制,以免数据丢失。流量控制是一种解决发送端与接收方吞吐量不匹配问题的机制。网络拥瘧现象是指到达通信了网中杲部分的分组数量过多,使得该部分网络来不及处理,以致引起这部分乃至整个冈络性能下降的现象,严重时甚至会导致网络通信业务陷入停顿即出现死锁现象。拥塞控制是处理网络拥塞现象的一种机。11.滑动窗口的实现机制滑动窗凵机制是tcp流量控制的一种机制。滑动窗口分为发送窗凵和接收窗口,发送窗口会根据接受窗口返回的ack中的大小来确定发送数据多少,如果ack返回可接受为零时,发送窗口不发送数据,然后启动定时器,一定时间内给接收端发送探测报文。为了传递效率提扃,发送数据吋会尽量次发送多个字节,这里会通过算法控制接收窗口发送窗口接收窗口取决发送窗口取决于对于本段应用端接收窗囗应用应用接收窗口取决发送窗口取决于对于本段应用端接收舍口发送窗口接收窗口字节流方向窗囗关联方问发送窗口中的四个概念:已发送并收到确认;凵发送但未收到确认;允许发送但未发送;不允许发送。每次成功发送完数据后,发送窗口都会根据接受窗口返冋的ack大小来调整窗口大小后浩前沿前移收缩前移A的发送窗凵=20E区图国时国时网國國回回区画乎图已发送井不允许发送收到确认允许发送的序号B期望收到的序号图5-15根据B给出的窗口值,A构造出自己的发送窗口12. linux的五种I0模式/异步模式1)同步阻塞I/O2)同步非阻塞I/O(只能阻塞个io)3)同步I/O复用模型(可以阻塞多个i,用一个进程/线程调用多个io,其实是复用进稈/线程)4)同步信号驱动I/O5)异步I/O模型3.网络编程设计模式, reactor/ proactor/半同步半异步模式?reactor模式:同步阻塞I/O模式,注册对应读写事件处理器,等待事件发生进而调用事件处理器处理事件。 proactor模式:异步I/O模式。 Reactor和 Proactor模式的主要区别就是真正的读取和写入操作是有谁来完成的, Reactor中需要应用程序自己读取或者写入数据, Proactor模式中,应用程序不需要进行实际读写过程。Reactor是:主线程往epo‖l核上注册 socket读事件,上线程调用 epoll_wait等待 socket上有数据可读,当 socket上有数据可读的时候,主线程把 socket可读事件放入请求队列。睡眠在请求队列上的某个工作线程被唤醒,处理客户请求,然后往epo‖!内核上注册 socket写请求事件。主线程调用 epoll_wait等待写请求事件,当有事件可写的时候,主线程把 socket可写事件放入请求队刎。睡眠在请求队列上的工作线程被唤醒,处理客户请求。Proactor主线程调用 aio read函数向内核注册 socket上的读完成事件,并告诉内核用广读缓冲区的位置,以及读完成后如何通知应用程序,主线程继续处理其他逻辑,当 socket上的数据被读入用户缓冲区后,通过信号告知应用程序数据已经可以使用。应用程序预先定义好的信号处理凼数选择一个工作线程来处理客户请求。工作线程处理完客户请求之后调用ao wrⅰte函数向内核注册 socke写完成事件,并告诉内核写缓冲区的位置,以及写完成时如何通知应用程序。主线程处玛其他逻辑。当用户缓存区的数据被写入 socket之后内核向应用程序发送一个信号,以通知应用程序数据已经发送完毕。应用程序预先定义的数据处理函数就会完成工作。半同步半异步模式上:层的任务(如:数据库查询,文件传输)使用同步IO模型,简化了编写并行程序的难度而底层的任务(如网络控制器的中断处理)使用异步I/O模型,提供了执行效率14.1inux下io多路复用的方案 select、poll、epol1的区别select:利用一个数组结构(最大1024)来存储需要检测的描述符,每次调用需要清空数组结构后重新存入新的描述符文件,然后遍历需要操作的描述符。可以用仨检测单个描述符可以理解为拉取pol:也是利用数组结构存储,但是没有描述符个数限制,而且每次调用时不需要清空存储描述符结构数组。可以用于检测大量描述符的情况。可以理解为拉取epoll:是 select/po!的升级版本,它的机制是可以监视大量的描述符,当有需要连接时将改描述符存放到队列中,而epol只监视和执行队列中即可。可以用于大量并发连接中只有少量活跃的情况。可以理解为推送http://blog.csdnnet/lookatthestars/article/details/5210877315.epo11哪些触发模式,有啥区别?(必须非常详尽的解释水平触发和边缘触发的区别,以及边缘触发在编程中要做哪些更多的确认epo‖有EPoL和 EPOLLET两种触发模式,LT是默认的模式,ET是高速"模式。LT模式下,只要这个fd还有数据可读,每次 epoll_wait都会返回它的事件,提醒用户稈序去操作,而在ET(边缘触发)模式中,它只会提示一次,直到下次再有数据流入之前都不会再提小」,无论fd中是否还有数据可读。所以在ET模式下,read一个fd的时候一定要把它的 buffer读光,也就是说一直读到read的返回值小于请求值。也就是说在LT模式的情况下‘定要确认收发的数据包的 buffer是不是足够大如果收发数据包大小大于 buffer的大小的时侯就可能会出现数据丢失的情况。16. Boost.asio、 libevent、1ibev简介。Boost.asio是一个跨平台的C++库,用于网络和底层I/0编程,可以在I/0对象(如socket)上执行同步和异步操作。 boost.asio的跨平台性原理是在win系统(支持I0CP)linux系统(支持epo11)。 boost:asio将整个异步平台抽象成 boost::asio: lo service,用work控制 1o service生命周期,通知它是否结束,只要对象work( 1o servi ce)存在,10 service就不会结束。利用 buffer类存储数据libevent是一个C语言与的网络库,官方主要支持的是类 linux操作系统,最新的版本添加了对 windows的I0CP的支持由于I0CP是异步I0,与 linux下的POL模型, EPOLL型,还有 freebsd的 KQUEUE等这些同步模型在用法上完全不一致,所以使用方法也不样,就好比ACE中的 Reactor和 Proactor模式一样,使用起来需要转变思路。如果对性能没有特别的要求,那么使用 Libevent中的 select模型来实现跨平台的操作, select模型可以橫跨 windows, linux,unix, solaris等系统。libel是一个C语言写的,只支持1inux系统的库,我以前研究的时候只封装了EPOL模型,不知道现在的新版有没有改进。使用方法类似 libevent,但是非常简洁,代码量是最少的一个库,乜貮几千行代码。显然这样的代码跨平台肯定是无法支持的了,如果你只需要在1inux下面运行,那用这个库也是可以的。17. connect可能会长时间阻塞,怎么解决?1.使用定时器;(最常用也最有效的·种方法2.采用非阻塞模式:设置非阻塞,返回之后用 select检测状态18. keepalive是什么东西?如何使用?keepalive,是在TCP中一个可以检测死连接的机制。1).如果主机可达,对方就会响应ACK应答,就认为是存活的。2).如果可达,但应用程序退岀,对方烑发RST应答,发送TCP撤消连接。3).如果可达,但应用程序崩溃,对方就发FIN消息。4).如果对方主杋不响应ack,rst,继续发送直到超时,就撤消连接。默认二个小时。19. socket什么情况下可读?1. socket接收缓冲区中己经接收的数据的字节数大于等于 socket接收缓冲区低潮限度的当前值;对这样的 socket的读操作不会阻塞,并返回一个大于0的值(准备好读入的数据的字节数)2连接的读一半关闭(即:接收到对方发过来的FIN的TCP连接)并且返回03.s0cket收到了对方的 connect请求已经完成的连接数为非0这样的 socket处于可读状态;4.异常的情况下 socket的读操作将不会阻塞,并且返同一个错误(-1)。20. socket编程,如果 client断电了,服务器如何快速知道?使用定时器(适合有数据流动的情况);使用sock吐t选项SO_ KEEPALIVE(适合没有数据流动的情况);1)、自己编写心跳包程序,简单的说就是自己的程序加入一条线程,定时向对端发送数据包,看是否有ACK,根据ACK的返回情况来管理连接。此方法比较通用,般使用业务层心跳处理,灵活可控,但改变了现有的协议2)、使用TCP的 keepalive机制,∪NX网络编程不推荐使用SO_ KEEPALIVE米做心跳检测。keepalive原理:TCP内嵌有心跳包,以服务端为例,当 serve检测到超过一定时间(/proc/sys/net/ipv4/tcp_ keepalive_ time7200即2小时)没有数据传输,那么会向client端发送一个 keepalive packet21.如果 select返回可读,结果只读到0字节,什么情况?某个套接字集合中没有准备好,可能会 select内存用 FD CLR清为0.22.网络中,如果客户端突然掉线或者重启,服务器端怎么样才能立刻知道?若客户端掉线或者重新启动,服务器端会收到复位信号,每一种tcp/ip得实现不一样,控制机制也不·样。23.TTL是什么?有什么用处,通常那些工具会用到它?ping? traceroute? ifconfig?netstat?TTL是 Time to live,每经过一个路由就会被减去一,如果它变成0,包会被丢掉。它的主要目的是防止包在有回路的网络上死转,浪费网络资源。ping和 traceroute用到它。24请说出http协议的优缺点1.支持客户/服务器模式。2.简单快速:客户向服务器请求服务吋,只需传送请求方法和路径,通信速度很快。3.灵活:HTTP允许传输任意类型的数据对象。4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断廾连接。采用这种方式可以节省传输时间。5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,导致每次连接传送的数据量增大。缺点就是不够安全,可以使用hps完成使用25大规模连接上来,并发模型怎么设计Epol1+线程池(epo11可以采用 libevent处理)26.tcp怎么做到不丢包。TCP提供超时重发(每一个seq后都有ack,计时时间到后重发seq),丢重复数据(通过判断seq和ack的大小,如果seq比ack小说明发过了),检验数据(通过tcp的伪首部),流量控制(利用滑动窗口实伣流量控制)等功能,保证数据能从一端传到另一端。27.TCP的确认重发机制A发—B/a向b发送数据B确认-A//b收到数据后发送给a确认包A-在重发数据中将发送成功的数据删掉28.I0CP和epo1l的联系与区别?联系:两者都是高效的io模型,都是基于事件驱动。区别:TOCP用在 Windows上,epo11用在1inux上;IQCP本质是异步非阻塞的,而epo1l是同步非阻塞的;1OCP是当事件完成时再通知,而 epoll是当事件满足处理要求是通知处理。boost中的asio网络模块的跨平台性原理是在win系统(支持IOCP),1inuκ系统(支持epollhttps://yg.aliyun.com/articles/53621进程与线程1.进程之间的通信无名管道:单向通信,只能亲戚关系才能传递,般用在父了进程之间有名管道:单向通信,可以用在任意两个进程之间通信。信号量:是一种计数器,主要用于资源共亨,用在多个进程或者进程内多个线程之间同步手段共享内存:一个进程创建共多个进程使用,和信号一起使用在进程同步与通信。信号:比较复朵的·种通信。套接字:消息队列:客服信号传递信息少,管道缓冲区受限。2.线程同步临界区,互斥对象,事件,信号量3.多线程和多进程的区别1)进程数据是分丌的:共享复岽,需要用IPC,同步简单;多线程共享进程数据:共享简单,同步复杂2)进程创建销毁、切换复杂,速度慢:线程创建销毁、切换简单,速度快3)进程占用内存多,CPU利用率低;线程占用内存少,CPU利用率高4)进程编程简单,调试简单;线程编程复杂,调试复杂5)进程间不会相互影响;线程个线程挂掉将导致整个进程挂抻6)进程适应于多核、多机分布;线程适用于多核线程所私有的:线程jd、寄存器的值、栈、线程的优先级和调度策略、线程的私有数据、信号屏蔽字、ero变量。4.多线程锁的种类有哪些?a.互斥锁( mutex)b.递归锁C.自旋锁d.读写锁5.自旋锁和互斥锁的区别?白旋锁中当锁被其他线程占用时,其他线程并不是睡眠状态,而是不停的消耗CPU,获取锁;互斥锁则不然,保持睡眠,直到互斥锁被释放溦活。自旋锁,递归调用容易造成死锁,对长时间才能获得到锁的情况,使用自旋锁容易造成CPU效率低,只有内核可抢占式或SMP情况下才真正需要自旋锁6.多线程程序架构,线程数量应该如何设置?应尽量和CPU核数相等或者为CPU核数+1的个数7.有一个计数器,多个线程都需要更新,会遇到什么问题,原因是什么,应该如何做?如何优化?有可能一个线程更新的数据已经被另外一个线程更新了,更新的数据就会出现异常,可以加锁,保证数据史新只会被一个线程完成
- 2020-11-27下载
- 积分:1