为什么我接不到值?

tglflzqlmy 2008-06-05 08:01:50
<%@language=vbscript codepage=936 %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body leftmargin="2" topmargin="0" marginwidth="0" marginheight="0">
<%
call upload_0() '使用化境无组件上传类
%>
</body>
</html>
<%
sub upload_0() '使用化境无组件上传类
Set Upload = Server.CreateObject("Persits.Upload")
Upload.Save
the_pic_width=cint(upload.form("pic_width"))
If Upload.Files.count=0 Then
response.write("<script language=javascript>" & vbcrlf)
response.write("alert('请选择上传照片')" & vbcrlf)
response.write("</script>" & vbcrlf)
response.end
Else
'----------------------------
For Each File in Upload.Files
if file.size>1048576 then
response.write("<script language=javascript>" & vbcrlf)
response.write("alert('"&file.name&"大小超过1M')" & vbcrlf)
response.write("</script>" & vbcrlf)
response.end
else
'response.Write(File.ImageType)
If File.ImageType <> "GIF" and File.ImageType <> "JPG" and File.ImageType <> "PNG" and File.ImageType<>"BMP" Then
response.write("<script language=javascript>" & vbcrlf)
response.write("alert('文件格式只能是JPE、GIF、PNG或BMP!')" & vbcrlf)
response.Write("</script>" & vbcrlf)
isgo=false
else
picname="T" & year(now) & month(now) & day(now) & hour(now) & minute(now) & second(now)
pic=picname & File.ExtractFileName
filepath=server.MapPath("UploadFiles\")
file.saveas filepath & "\" & pic
'response.Write(filepath & "\" & pic)
'----------------------------
Set jpeg = Server.CreateObject("Persits.Jpeg")
jpeg.Open filepath & "\" & pic


' Draw frame: black, 2-pixel width
Jpeg.Canvas.Brush.Solid = False ' or a solid bar would be drawn
Jpeg.Canvas.Pen.Width = 0
'response.Write(jpeg.width)
if the_pic_width="" or the_pic_width=0 then
the_pic_width=120
end if
if cint(Jpeg.OriginalWidth)>the_pic_width then
jpeg.width=the_pic_width
jpeg.height=int(jpeg.OriginalHeight*(the_pic_width/Jpeg.OriginalWidth))
end if
Jpeg.Canvas.DrawBar 0, 0, jpeg.width,jpeg.height
Jpeg.Quality =80
'response.Write(filepath & "\" & pic)
Jpeg.save filepath & "\" & pic
response.Write("<script language=javascript>" & vbcrlf)
response.Write("alert('上传成功')" & vbcrlf)
response.Write("parent.parent.document.the_pic.src='editor/UploadFiles/" & pic & "';")
response.Write("parent.parent.form1.pic.value='UploadFiles/" & pic & "';")
response.Write("parent.parent.form1.ispic.status=true;")
response.Write("</script>" & vbcrlf)
end if
end if
next
set file=nothing
set jpeg=nothing
end if
set Upload=nothing
end sub
%>




<input name="isadd" type="hidden" value="yes">
<input name="pic_str" type="hidden" value="">
<input name="pic" type="hidden" value="">


这是哪个的
为什么NAME为PIC的没有值?
...全文
92 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
tglflzqlmy 2008-06-06
  • 打赏
  • 举报
回复
都没有
jhwcd 2008-06-05
  • 打赏
  • 举报
回复
能不能说的详细点,有点含糊。
其他的name有值吗?
xiaojing7 2008-06-05
  • 打赏
  • 举报
回复
人品
【课程介绍】     课程目标:             - 有状态登录和无状态登录的区别             - 常见的非对称加密算法和非对称的加密方式             - 老版本只使用jwt进行加密的弊端             - 授权中心的授权流程             - 如何整合网关组件实现jwt安全验证             - 理解什么是公钥什么是私钥      - 深刻理解授权流程什么是有状态? 有状态服务,即服务端需要记录每次会话的客户端信息,从而识别客户端身份,根据用户身份进行请求的处理,典型的设计如tomcat中的session。例如登录:用户登录后,我们把登录者的信息保存在服务端session中,并且给用户一个cookie,记录对应的session。然后下次请求,用户携带cookie来,我们就能识别到对应session,从而找到用户的信息。缺点是什么?- 服务端保存大量数据,增加服务端压力- 服务端保存用户状态,无法进行水平扩展- 客户端请求依赖服务端,多次请求必须访问同一台服务器。什么是无状态? 微服务集群中的每个服务,对外提供的都是Rest风格的接口。而Rest风格的一个最重要的规范就是:服务的无状态性,即:- 服务端不保存任何客户端请求者信息- 客户端的每次请求必须具备自描述信息,通过这些信息识别客户端身份带来的好处是什么呢?- 客户端请求不依赖服务端的信息,任何多次请求不需要必须访问到同一台服务- 服务端的集群和状态对客户端透明- 服务端可以任意的迁移和伸缩- 减小服务端存储压力
智能合约虚拟机赋予了区块链运行去中心化应用(Dapp)的能力。它让区块链演化为“操作系统”,孕育出繁荣的Dapp生态。一款优秀的VM不仅仅是要完成确定、高效、安全地执行合约字节码的功能,它应该足够通用,能最大化节省开发者的成本,甚至能形成独立的开发者生态。从架构上来说,VM为智能合约提供计算资源和运行容器,区块链的共识、执行模块与VM是完全解耦的。在区块链2.0项目中,我们看到大部分项目将VM作为区块链项目的一个子模块,一同编译进二进制中;Fabric更进一步,链码被编译成独立的程序,运行于独立的docker容器中,通过grpc与节点交互。如此,可将数据与逻辑彻底分离;在未来,VM可能以硬件的形式安装在“矿机”中,通过更底层的如PCIe接口与区块链进行通信。业界的Nervos CKB使用RISC-V实现VM,为演化成硬件模块做准备。架构设计验证层验证层会对合约字节码及传参进行一些验证,包含ABI验证,环境检查与版本检查三个环节。ABI验证:利用合约ABI对用户发送的合约调用及参数进行校验。环境检查:检查虚拟机执行环境是否符合预期检查Config字段。字节码是否合法。exports是否包含apply与memory,以及类型是否正确;是否包含start(被禁用);是否包含import,import的模块是否合法。解释器模块是否ready。版本检查:检查合约版本,选择对应版本的解释器。注入层注入层主要对合约字节码注入一些必要的代码,以及构建相应的执行上下文。Gas MeteringGas metering是用于统计每一个操作所须花费的Gas。原理非常简单:实现Env_api方法useGas。将wasm字节码恢复成易于解析的格式化文本(如JSON)。将useGas注入到格式化文本中将格式化文本重新恢复成wasm字节码。这里有一个得考虑的问题:**Gas Metering能否放到编译期去做?**在编译器做Gas metering注入的好处是只须要注入一次,节省了执行时的开销。但这样的弊端也很明显:Gas Table本属于区块链协议的一部分,但却被放到合约编译器中,恶意用户只须要更改编译器的Gas Table即可完成作恶,作恶成本大大降低。若Gas Table需要修改,无法再对已部署的旧合约更新Gas Metering,导致新老合约的Gas收费标准不一致。在每次执行时进行一次Gas Metering注入,虽然牺牲了一些执行效率,但换来了Gas灵活变更的特性,这对于不断调整、迭代的公链项目是至关重要的。一种更好的方案,是将Gas Table以合约形式部署,无须硬分叉便可更改Gas Table的参数。Env API 注入Env_api是区块链提供给合约层用于与区块链进行交互的接口。注入原理如下:合约字节码(wast)中包含形如(import env getAddress (func ...))的代码段。意为从env模块中导入getAddress函数。env模块从哪来呢?由虚拟机利用解释器的API构建原生模块,并实现预先设计的Env_api。这里的Env_api都须要用原生语言实现。利用解释器的moduleResolver在执行代码前注入。经以太坊基金会Go-team的gary推荐,这里隆重介绍下EVMC这个项目。它提供了一套虚拟机和客户端之间的通用交互接口。不同的VM只需要实现这些接口,即可为以太坊客户端提供交互功能。如此将客户端与虚拟机实现相互分离,更能够根据实际情况灵活切换底层虚拟机实现。上下文构建我们还需要给合约执行构建合理的上下文环境,提供必要的内部模块和数据以供合约使用,包括:区块链账本实例,提供区块、交易等信息的调用接口。状态数据库实例,提供状态数据的增删改查的调用接口。当前Transaction与Action的相关数据。当前区块高度和区块时间。执行层执行层是虚拟机的核心模块,负责执行合约字节码并返回结果。它必须具备以下几个特性:确定性:即相同入参和上下文,无论在什么设备上运行,何时运行,运行几次,都必须获得相同结果。高效执行:虚拟机的执行时间不大于共识算法给于交易执行的最大时间。停机与回滚:须要有相应停机机制。在执行失败时须要对本次执行涉及的所有状态变更进行回滚。沙箱环境:即保证合约与合约之间、合约与宿主系统之间的资源隔离。能够防备恶意和故障合约的不良影响。Apply执行合约字节码,实际是调用合约代码中的apply函数。合约上下文,包括用户指定调用的合约方法名和对应入参,通过Env_api在实际apply实现中获取,最终调用相应的合约方法。栗子详见系列第二篇。Memory合约除了应导出apply函数外,还须要导出memory对象。memory对象是wasm编译器在合约编译时自动注入,通常会开辟一页内存(64KB) (memory $0 1)。解释器会初始化一个线性字节数组作为内存供wasm使用,wasm与区块链数据交互是依靠内存共享的形式,通过该字节数组进行传递。(这也是为何在Env_api设计里,很多数的传参是offset与length的组合)Wasm的内存数组是按照| static memory | dynamic memory |的次序划分,static memory中存放编译期的字符串或数组,dynamic memory用于运行期的数据存储,并且可以动态扩容。为了防止dynamic memory无限制地扩容,需要有合理的收费机制与内存分配上限。AssemblyScript提供了一个额外的位于static memory之前的预留空间,称为reserved memory。这使得我们在运行期可以将一些变长数据(如字符串,数组等)以Global的形式导入wasm。这样wasm无须调用Env_api即可直接使用上下文的变量,如发送方、接收方、合约地址、当前调用的合约方法名等。状态存储对VM最本质的需求是对状态存储的需求,这种存储是达成共识的、不可逆的,从而实现了去中心化应用中数据的信任存储。Ethereum1出现的状态爆炸问题给我们敲响了警钟——只收取每一次读写操作的费用,而不收取占用存储的费用,是不合理的。如果不对占用存储收费,则用户可以无限制地占用区块链的稀缺存储资源;且由于没有好的数据清理机制,区块链的状态就会不断增长,即所谓“爆炸”。状态存储付费是很自然想到的方案。如何设计合理的状态存储付费方案,有两个底层逻辑需要考虑:用户应当为占用链上的稀缺存储资源付出成本。这里的成本是广义的,可以是代币价、机会成本与承担额外风险等形式。状态存储的使用属性最大化,投资属性最小化。须要避免出现用户大量囤积存储资源,提高资源利用率。EOS使用【RAM】来解决状态收费的问题。开发者须要使用代币向系统合约购买RAM,存储状态数据须要消耗对应大小的RAM资源,当数据删除时RAM资源也会相应释放,并且可以卖回给系统拿回代币。但开发者须要承担RAM和代币价波动风险。如何对RAM定价呢?EOS创新性地引入了Bancor算法对RAM进行模拟市场定价。Bancor算法有两个特点:数字货币价格取决于存储金金额和代币流通量,真实模拟了市场供需关系;人机交易,无须对手盘,这使得“巨鲸”可轻易做多或做空,导致价格波动剧烈。也正因为上面两个特性,EOS主网刚上线时,出现了大量RAM资源被囤积,RAM价格被瞬间拉至高位,又在随后的一周内快速下降,造成了“割开发者韭菜”的情况。V神在2018年曾提出过使用【状态租金】来解决状态爆炸问题。状态租金很像当前云计算服务的商业模式,用户不仅花费购买占用空间大小,还须购买占用时间。对于状态租金方案的具体设计,我们仍然须要考虑以下几个问题:用户体验:当状态出租时间快到期时,如何提醒用户续费?时间到期后状态数据是否立马清除?不同级别的数据是否有区别的对待?(云服务厂商都会提供到期后的赎回期,以防止关键数据被意外删除)支付对象:哪些数据需要支付租金?除了合约的状态数据必然要支付租金以外,账户本身的元数据(balance, nonce等)是否也要付租金?如果需要,时间到期后清零,势必损害用户的资金安全(与区块链保护数字资产的理念相背),同时nonce为0后可能会遭受重放攻击。如果不需要,仍然无法抑制因新账户的创建而产生的状态爆炸问题。定价:链上存储资源的稀缺程度,与区块链的生态价及当下的市场需求密切相关。如何建立一个合理定价模型便是个非常重要的问题。Ethereum Research中有大神对状态租金的方案进行了细化,引入了激励机制用于租赁过期的发现和确认,并且允许在状态数据删除后申请恢复。Nervos CKB结合了状态买卖和状态租金的长处,利用原生代币代表占用全局状态的权利,且汇率恒定,即1 CKB代表1 Bytes的存储空间。同时巧妙地利用【二级发行】机制为代币持有者(存储空间占有者)设置了【通胀税】,以作为支付给矿工的状态租金。靠通胀收取租金的方式既保留了RAM方案的买断存储空间的使用模式,解决了上面所提到的用户体验的问题,又将定价转移到了通胀部分对应的法币价,完全由二级市场进行价发现。但这使得状态空间的上限严格等同于当前代币流通量,在初期可能会限制生态的发展。合约安全我们在第一篇中有提到,合约安全分为编译期安全和执行期安全。本篇主要阐述执行期安全的设计思路。执行期安全也成为运行期安全,主要由VM针对以下两方面提供保障:数据安全:不能随意篡改其他用户或其他合约的状态数据。资源安全:CPU、内存、硬盘资源的分配与回收。数据安全加密数字资产真正实现了人类梦寐以求的“私有财产神圣不可侵犯”,它象征着真正的自由。为了捍卫这份“自由”,数据安全是重中之重。VM需要为以下两个方面提供安全保障:用户数据的安全,即利用密码学算法判断是否有修改状态数据的权限。合约状态数据的隔离,即任何合约都不能直接修改其他合约的状态数据,即使该用户拥有权限。第一个维度很好理解,合约会提供根据用户地址和交易签名进行身份权限审查的功能(甚至可提供基于多密钥对的权限管理),以判断本次合约调用是否有权限修改相应的数据。这也是“私有财产神圣不可侵犯”的根源。第二个维度需要特别解释一下。这里的不能直接修改其他合约的状态数据,是指不能在合约A的方法中直接修改合约B的数据。为什么?因为这会导致状态变更无法追溯,带来不确定性。我们知道,区块链环境中只能通过交易(Transaction)来触发状态变更,交易本身就是状态变更的日志。若允许在合约A中直接修改合约B的状态数据,则这次修改是并未生成相关日志的,使得状态修改无法追溯,与区块链“可追溯”的特性相违背。以太坊中跨合约调用也是没有保留日志的。笔者认为这是因为以太坊合约是不可升级的,一旦部署后地址和代码都是不可变更的,因此可结合交易和代码具体片段来追踪状态变更记录。但以太坊并没有提供相关的索引,这导致对状态修改的记录追踪基本不可能,因此我认为这是一个设计上的重大缺陷。在EOS中,我们看到跨合约调用是生成了新的action,并被加入到原action列表中,在链上保留了状态修改的日志。能否利用静态代码分析的方式确定跨合约的对方地址和相关合约方法,从而追溯到状态变更的细节?当然是可行的,但如果有多层调用(合约A -> 合约B -> ... -> 合约Z),这种方案显然开销是非常大的。尽管以太坊提供了tracer,可以在执行交易的过程中追踪跨合约调用的对象,但如果我想查找导致合约X某状态变更的所有历史操作,上述方案必须遍历并模拟执行所有的历史交易,显然是不可取的。我们认为,跨合约交易正确的做法,是通过内联交易的形式调用合约B的方法从而间接修改合约B数据。即生成一个新的交易来触发目标合约的状态变更。该交易也会应放入区块中,视为由原交易生成的日志。这样可为状态变更保留操作记录,也符合“可追溯”的特征。资源安全智能合约通常运行在由虚拟机提供的沙箱环境,我们需要对其能够使用的资源进行适度的把控。这些资源包括三类:CPU、内存、硬盘。下面我们以QA的形式对涉及到的问题进行解答——CPU资源Q1: 合约运行最大能占用多少个进程,多少个线程?一个;一个或多个。Q2: 是否允许合约内开辟新线程?不允许。合约不应有操作系统级别的调用,而应由虚拟机层来确定性地分配CPU资源(线程数)。Q3:多线程下如何保证线程安全?多线程下,不应通过加锁来保证线程安全,原因是加锁无法保证执行顺序,带来不确定性。正确的做法是在执行前通过静态分析、注解等手段对合约调用进行归类。互斥资源的调用顺序遵循交易发送的顺序;非互斥资源的合约调用可以并行执行。Q4: 如何控制执行时间?利用Gas机制控制合约执行时间(在本系列第一篇已提到),避免过度占用CPU时间。Q5: 如何捕捉错误与处理?合约执行的错误不应导致虚拟机的进程终止,虚拟机应当提供错误捕获和处理的机制。常规的做法时合约运行时的错误以error的形式抛出,虚拟机层捕获后做失败处理,包括终止交易执行、状态回滚、资源回收等。内存资源Q1:合约运行最大能占用多少内存?节点能分配多大的内存给虚拟机,是由矿工决定。这本质上经济学问题:扩大内存分配无疑会增加成本,而这部分提升的执行效率能为矿工带来多少收益。若可用内存过少,部分交易执行失败,可能导致分叉;若可用内存过多,又会造成资源浪费,降低矿工收益。Q2: 内存能否动态扩张?可以,但须要付费。为了防止内存无限制扩张,虚拟机还应对合约的内存占用设置上限。Q3: 如何避免内存泄漏?不应交由合约开发者控制内存回收,虚拟机应当实现GC机制。Q4: 如何避免内存溢出?Wasm虚拟机中内存实则为字节数组,本身带有边界控制,能有效防止内存溢出。磁盘资源Q1: 单个合约最多能够存储多少数据?这也是经济学问题,应该设置合理的硬盘占用计费。Q2: 能否修改其他合约的持久化数据?不能直接修改,因为这会影响到【数据安全】章节中提到的确定性。虚拟机为合约创建的上下文环境中,包含相互隔离的数据空间。可以通过创建新的上下文环境进行数据修改,这样的操作视为一次新的合约调用(保留日志)。Q3: 如何防止未知的数据丢失(如磁盘损毁)?当发生数据丢失时,节点执行合约会得到不同的状态结果,导致区块被认定为非法,区块链无法延长。这里需要区块链系统具备状态一致性的检测机制,在解决硬盘故障后采用同步主链块并重放交易的方式进行恢复。系统合约系统合约是指区块链系统在启动时预先部署的,可升级、可治理的合约,提供如权限控制、资源租赁、代币质押等基础服务。系统合约通常有以下三个特点:公开透明,无暗箱操作。可通过Env_api被用户合约调用。合约通过治理进行代码变更,无须硬分叉。系统合约可采用普通合约的实现方式,并在系统预定的合约地址部署。未来优化方向智能合约的并行执行合约并行执行是提升智能合约执行效率的一大思路。这里的并行执行并不是指单个合约方法内部的并行,而是合约间的并行。实现合约并行执行,我们需要考虑两个重要的问题:如何检测本次合约执行所访问的资源对象?如读写状态数据、读取账户余额等互斥操作。如何做合约执行的合理调度?即哪些合约能够并行执行,哪些必须串行?一种容易想到的思路是这样的:通过静态代码分析检测出合约方法可能访问到的资源,对会访问相同资源的合约调用归为同一个组。每个组的执行可以并行化,组内执行则串行化(根据交易发送顺序)。然而,实际设计时需要考虑的因素就复杂很多:如何设计一个完备的算法,准确地检测合约方法可能访问到的资源(包括跨合约调用中的资源访问)?如何设计一个高效的调度算法,将合约调用准确分组?合约并行执行后所带来的性能提升,是否能够追回以上两个算法所带来的开销?预言机预言机是智能合约获取链外数据的桥梁。这些数据通常由第三方可信数据源提供,如天气数据、赛事数据、数字货币价格等。在传统的互联网应用中,我们可以简单地通过HTTP API获取到这些数据。但在智能合约却不行,原因是HTTP调用通常是异步的,时间不可预估且不具备确定性。因此,需要一个专门的基础设施来为智能合约提供这些链外数据。预言机的设计原则中需要考虑三个要点:获取链外数据并保证数据的真实可用。以确定性、同步的方式被智能合约调用获取。预言机网络本身的安全性和可用性。隐私保护密码学的研究推动了隐私领域的创新。隐私研究主要涉及零知识、多方计算、全同态加密等领域。多方计算 MPC 允许一组人基于他们的输入进行联合计算,而不需要每个人显示其输入。 例如,Alice 和 Bob 想要知道谁拥有的比特币更多,那么在不需要他们披露自己拥有多少比特币的情况下就能达到这个目的。遗憾的是,目前多方计算的局限性在于它在实践中使用效率极低。全同态加密 (Fully homomorphic encryption) 则允许人们在加密的数据上计算。几十年来,这一直是密码学领域中的一个未解决的问题,直到 2009 年,斯坦福大学博士生克雷格·詹特利 Craig Gentry 使用「理想格」构建了第一个全同态加密方案。如果 Bob 想在 Alice 的数据上执行任意计算,比如训练机器学习模型,同时不必要求 Alice 显示明文数据,理想格加密方案就能派上用场。全同态加密和多方计算一样,目前仍然基本上停留在理论阶段,在实践中的使用效率太低。 
Re:CCNA_CCNP 思科网络认证 动态路由 EIGRP 和 OSPF 协议======================# EIGRP协议特点(CISCO产品专用独家协议) 使用Hello消息发现邻居,然后交换路由信息,使用Hello包维持邻居表 代替其它动态协议周期性更新而消耗资源。 有备用路径,当最佳路径不可用,立即使用备用路径 备用路径比动态获取新路径效率更高。 度量默认为带宽和延迟,也可以添加负载和可靠性以及最大传输单元(MTU) rip只是hops跳数为依据,使用带宽和延时为指标更合理 还可以负载、可靠性和MTU为依据,选择最佳路径。 默认支持4条链路的不同代价的负载均衡,可以更改为最多6条 最大跳数为255(默认是100跳) rip只有15hops,所有只能够使用在小型网络中。 触发式更新路由表,即网络发生变化时,增量更新 hello包和触发式结合,消耗设置资源更低 支持路由的自动汇总。 支持大的网络,可以使用自制系统号来区别可共享路由信息的路由器集合,路由信息只可以在拥有相同自制系统号的路由器间共享。 (即一片路由和另一片路由,不计划发布沟通的情况下,可以以系统号区分) 如同VLAN方式 管理距离是90 直连0静态路由1;rip协议120;EIGRP协议90(比rip优先级高) # EIGRP度量 EIGRP度量 带宽 延迟 可靠性 负载 最大路径和跳数 默认支持4条等价路径 最大跳数100,也可以设置成255 # EIGRP三张表 邻居关系表 拓扑表 路由表 # EIGRP专业术语 可行距离(FD)                :A到E最小开销的路径(最佳路径) 被通告距离(AD)            :A的前一个路由器,到E的开销 继任者(最佳路径)          :可行路径下一跳的路由器 可行的继任者(备用路径):被通告距离 ---------------------------------------------------------------------------------------# 介绍OSPF协议 开放最短路径优先(OSPF)是一个开放标准的路由选择协议,它被各种网络开发商所广泛使用。 即无厂家边界 # OSPF协议具有下列特性: 由区域和自治系统组成 最小化的路由更新的流量(触发式更新,平时hello包打招呼,类eigrp协议) 允许可缩放性 支持变VLSM和CIDR(五类间路由/23) 拥有不受限的跳数 允许多销售商的设备集成(开放的标准) 度量是带宽 # OSPF术语 Router-ID(网络中的身份:取ip最大) 网络中运行OSPF协议的路由器都要有一个唯一的标识,这就是Router-ID,并且Router-ID在网络中绝对不可以有重复。 COST(开销) OSPF协议选择最佳路径的标准是带宽,带宽越高计算出来的开销越低。到达目标网络的各个链路累计开销最低的,就是最佳路径。 链路(Link) 就是路由器上的接口,在这里,应该指运行在OSPF进程下的接口。 链路状态(Link-State) 链路状态(LSA)就是OSPF接口上的描述信息,例如接口上的IP地址,子网掩码,网络类型,Cost等等,OSPF路由器之间交换的并不是路由表,而是链路状态(LSA)。 邻居(Neighbor) 两台或多台运行OSPF的路由器在一个公共的网络上形成的基本关系。 但是不一定交换信息 邻接(Adjacency) OSPF只有邻接状态才会交换LSA。 只有发生交换数据关系的设备间叫做邻接 邻居间选择一个交通站DR,负责邻居间交换数据--------------------------------------------------------------------------------------- # 在边界路由器通过再发布方式向内部网段传递默认路由 两个不同协议自治区:RIP 和 EIGRP 路由再发布 两个不同协议自治区:OSPF 和 EIGRP 路由再发布 两个不同协议自治区:OSPF 和 RIP 路由再发布------------------------------------------------------------------                
一、5G技术的发展简介2018年6月,5G NR独立组网标准冻结,标志着5G时代的来临。5G仅仅是比4G的网速更快吗?绝非如此。5G不仅提供了极高的网速,而且将网络时延、可靠性、容量等性能大幅提升,使得5G成为一个万物互联的平台,从而可以极大地推动大量相关产业的发展。中国信息通信研究院在其研究报告中称:“第五代移动通信技术(5G)正在阔步前行,它将以全新的网络架构,提供至少十倍于4G 的峰速率、毫秒级的传输时延和千亿级的连接能力,开启万物广泛互联、人机深度交互的新时代。”中国电信在其《5G技术白皮书》中也写道:“5G将是引领科技创新、实现产业升级、发展新经济的基础性平台”。  由此可以看到,5G技术的应用,将不再局限于用户间的通信联系以及个人用户的信息获取,而是渗透到了诸多行业,满足各种行业应用的通信需求,从而推动整个社会的智能化进程,这将是一场广泛而深刻的通信变革。二、本课程的特色这门课程,是我花费了大量的时间,在阅读了大量的资料的基础上,精心编写、录制而成的。这门课程的目标人群是那些已经有了一定的移动通信知识,但对5g网络尚未有系统了解和掌握的朋友们。在编写课件的过程中,我力争做到深入浅出,既能把技术问题探讨到一定的深度,不流于肤浅,又能易于理解,避免晦涩难懂。从内容的选择上,我力争做到全面而系统,对于5G的组网策略、核心网、接入网、承载网、网络切片技术、大规模MIMO和移动边缘计算等内容都纳入了课程内容。如果各位认真地学完这门课程,我想您会对5G移动通信技术有一个相当程度的了解和掌握,您会感到“课有所”。三、本课程主要内容本课程包括八个方面的内容:1、从1G到5G在这一部分主要讲述了蜂窝移动通信系统的基本概念,1G、2G、3G、4G和5G移动通信系统的特点、发展演变的过程,以及5G的三大应用场景—eMBB(增强移动宽带)、mMTC(海量大连接)、URLLC(低时延高可靠),并以VR/AR(虚拟现实/增强现实)、智能家居、农业传感、智能制造、自动驾驶等具体应用来说明5G在垂直行业的应用场景。2、5G的独立组网和非独立组网模式主要讲述5G的组网方案,包括独立组网的2种模式和非独立组网的3个系列8种模式。课程中对各种组网方式的网络结构、优缺点、对业务的支持情况等进行了详细的分析,讲解了双连接、用户面、控制面、锚点等概念,并且对目前5G网络运营商如何选择各种组网模式进行了介绍。3、5G核心网解析主要讲述5G核心网SBA(基于服务的架构)、网络功能虚拟化、微服务、NF的调用、CUPS(控制面和用户面分离)、网络切片等内容,课程中对5G核心网的总体结构和各个NF(NSSF、NEF、NRF、PCF、UDM、AUSF、AMF、SMF、UPF)的作用都进行了讲解。4、5G接入网架构在这一部分,首先为大家回顾了从2G到4G接入网的发展过程,简述了它们各自的结构和特点。接下来,重点讲解了5G接入网的总体架构,CU、DU、AAU的作用,以及它们之间的功能划分。最后介绍了5G标准支持的多种接入网设备部署方案,包括CU/DU合设的两种方案和CU/DU分设的两种方案,以及它们各自的特点和适用场景。5、5G承载网作为移动通信网的三大子网之一,5G时代的承载网同样需要向前演进。这部分课程首先讲解了5G网络对承载网在带宽、时延、时间同步和网络切片等方面的性能需求。在参考大量文献资料的基础上,我尽量将这些性能需求量化,以期达到能够对实际工作起到指导和参考的作用。在带宽需求方面,针对前传、中传和回传网,分别给出了带宽需求的范围。接下来,课程讲解了5G承载网的技术实现方案,包括前传网的三种技术方案:光纤直连、无源WDM和有源OTN,以及中传和回传网络的通用分层结构、PAM4技术、FLEX-E技术、SR技术等,并介绍了中国移动、中国电信和中国联通的5G中、回传网技术方案:SPN(切片分组网络)、M-OTN(面向移动承载优化的OTN)和IP RAN增强,讲解了这三种技术的发展由来和技术特点。6、MIMO及大规模MIMO技术这一章包括四个部分的内容。第一部分是MIMO技术的原理,主要讲述了MIMO技术的基本概念、历史发展、对网络性能的改善(提高系统容量、对抗多经衰落、降低系统内干扰)等。第二部分讲MIMO技术的应用,主要包括MIMO技术的三种应用方式—空间复用、传输分集和波束成形的技术特点和优势,以及MIMO技术在WLAN、3G、B3G和4G系统的应用。第三部分讲解大规模MIMO技术的原理,包括它的技术特点、对系统性能的改善(信道容量大幅增加、波束更窄、系统内干扰更低、可实现3D波束赋形)以及它的缺点(算法复杂度高等)。第四部分是大规模MIMO技术的应用,主要介绍了它在4G和5G网络的应用,分析了大规模MIMO技术对4G网络容量提升的实测结果。7、5G网络切片技术这一章首先介绍了在5G网络中引入网络切片技术的必要性,以及网络切片技术的定义等内容,然后讲解了实现网络切片的技术基础。网络切片的实现,需要两个主要的技术来支撑,一个是NFV(网络功能虚拟化),另外一个是SDN(软件定义网络),课程中对这两项技术进行了比较详细的介绍。最后讲述了5G网络切片的实现,内容包括核心网切片、接入网切片以及承载网切片的实现,涉及到网络切片的选择、GROUP A、B、C三种切片构成方式、子载波间隔的选择等内容。8、5G与移动边缘计算这一章首先介绍了MEC(移动边缘计算)的起源和发展,追溯了IBM与诺基亚西门子开发的最早的MEC,ETSI在MEC方面的工作,以及3GPP在4G和5G标准中关于MEC的相关内容。接下来,讲解了MEC在5G网络的部署,包括边缘级、区域级和地区级MEC三种部署方式以及它们的适用场景。最后列举了一些具体的应用场景来说明MEC的应用情况,包括视频优化加速、车联网、VR直播和视频优化分析。四、讲师简介老铁于1991年毕业于南开大学电子系。从1994年开始,进入移动通信行业,先后在摩托罗拉公司、中国联通和中国电信的省级公司工作。2011年进入高校,从事移动通信相关课程的教学工作。       在联通和电信工作期间,老铁从事过移动通信网络的建设、规划、优化等工作,可以说在移动通信网络技术方面积累了比较丰富的知识和经验。在联通工作期间,参加过许多技术项目,也获得了一些奖项,包括中国通信标准化协会颁发的科学技术奖一等奖、信息产业部颁发的“CDMA网络创新贡献”奖,以及中国联通的“科技进步奖”三等奖。
​什么是共识算法背景分布式系统集群设计中面临着一个不可回避的问题,一致性问题对于系统中的多个服务节点,给定一系列操作,如何试图使全局对局部处理结果达成某种程度的一致?这个一致性问题大致有如下的场景:节点之间通讯不可靠的,延迟和阻塞节点的处理可能是错误的,甚至节点自身随时可能宕机节点作恶举例说明,就比如有两家电影院同时售卖总量一定的电影票,在这样的场景下,要如何设计方式来保证两家电影院协调同步不出现超卖或者错卖的问题呢?共识算法,就是解决对某一提案(目标,投票等各种协作工作),大家达成一致意见的过程比如上述的买票问题,就可以有如下的设计:1.每次卖票打电话给其他电影院,确认当前票数2.协商售卖时间,比如一三五A卖,二四六B卖3.成立个第三方存票机构,它统一发票通过以上的设计,可以看出一个很重要的解决一致性算法的解决思路,即:将可能引发不一致的并行操作进行串行化,就是现在计算机系统里处理分布式一致性问题基础思路和唯一秘诀 著名的共识设计理论FLP 不可能性原理  共识算法的理论下限提出该定理的论文是由 Fischer, Lynch 和 Patterson 三位作者于 1985 年发表,该论文后来获得了 Dijkstra(就是发明最短路径算法的那位)奖。FLP 原理认为对于允许节点失效情况下,纯粹异步系统无法确保一致性在有限时间内完成。三人三房间投票例子三个人在不同房间,进行投票(投票结果是 0 或者 1)。三个人彼此可以通过电话进行沟通,但经常会有人时不时地睡着。比如某个时候,A 投票 0,B 投票 1,C 收到了两人的投票,然后 C 睡着了。A 和 B 则永远无法在有限时间内获知最终的结果。如果可以重新投票,则类似情形每次在取得结果前发生带入到计算机领域就是说,即便在网络通信可靠情况下,一个可扩展的分布式系统的共识问题的下限是无解。即可靠性的下限是0%CAP  分布式系统领域的重要原理CAP 原理最早由 Eric Brewer 在 2000 年,ACM 组织的一个研讨会上提出猜想,后来 Lynch 等人进行了证明• C(一致性):所有的节点上的数据时刻保持同步,即数据一致• A(可用性):每个请求都能在一定时间内接受到一个响应,即低延迟• P(分区容错):当系统发生分区时仍然可以运行的定理:任何分布式系统只可同时满足二点,没法三者兼顾。即数据一致,响应及时,可分区执行不可能同时满足。举个例子:一个分布式网路上,某一个节点有一组依赖数据A,当网络无延迟,无阻塞时,依赖于X的操作可正常进行。但网络无延迟阻塞在现实世界中是没法100%保证的,那么当网络异常时,必然会产生分布式系统的分区和孤岛,那当一个执行操作在A分区之外时,如果要保证P,即当系统发生分区时仍可运行,就需要在分布式系统中多个节点有X的备份数据,以应对分区情况。则这时候就需要在C,A之间做出选择。假如选择C,即要保证数据在分布式网络中的一致性,那么就需要在X每次改动时,需要将全网节点的X数据同步刷新成最新的状态,那么在等待数据刷新完成之前,分布式系统是不可响应X的依赖操作的,即A的功能缺失假如选择A,即要突出低延迟的实时响应。那么在响应的时候,可能全节点的X数据并没有同步到最新的状态,则会导致C的缺失。上面看上去有些绕,那么你只要记住这句话,CAP原理在分布式网络系统的应用讨论,其实就是讨论在允许网络发生故障的系统中,该选择一致性还是可靠性?如果系统重视一致性,那么可以基于ACID原则做系统设计即 Atomicity(原子性)、Consistency(一致性)、Isolation(隔离性)、Durability(持久性)。ACID 原则描述了对分布式数据库的一致性需求,同时付出了可用性的代价。• Atomicity:每次操作是原子的,要么成功,要么不执行;• Consistency:数据库的状态是一致的,无中间状态;• Isolation:各种操作彼此互相不影响;• Durability:状态的改变是持久的,不会失效相应的有一个BASE原则,(Basic Availiability,Soft state,Eventually Consistency)则强调了可用性。 经典的共识算法设计业内,针对节点异常的情况,会有两种分类1.故障的,不响应的节点,成为非拜占庭错误2.恶意响应的节点,称为非拜占庭错误Paxos 最早的共识算法  非拜占庭算法的代表Paxos有三种角色:• proposer:提出一个提案,等待大家批准为结案。客户端担任该角色;• acceptor:负责对提案进行投票。往往是服务端担任该角色;• learner:被告知结案结果,并与之统一,不参与投票过程。即普通节点系统运行由proposer驱动,当合法提案在一定时间内收到1/2以上投票后达成共识。因此,可得出无法达成共识的条件:1.proposer故障2.二分之一以上acceptor故障拜占庭问题与BFT(Byzantine Fault Tolerant) 算法Leslie Lamport 1982 年提出用来解释一致性问题的一个虚构模型。拜占庭是古代东罗马帝国的首都,由于地域宽广,守卫边境的多个将军(系统中的多个节点)需要通过信使来传递消息,达成某些一致的决定。但由于将军中可能存在叛徒(系统中节点出错),这些叛徒将努力向不同的将军发送不同的消息,试图会干扰一致性的达成。拜占庭问题即为在此情况下,如何让忠诚的将军们能达成行动的一致。对于拜占庭问题来说,假如将军总数为 N,叛变将军数为 F,则当N>=3F+1 时,问题才有解,即叛变的将军不超过1/3时,存在有效的算法,如BFT,不论叛变者如何折腾,忠诚的将军们总能达成一致的结果。这是一个数学论证的结论,有兴趣的同学可以自行推导。PBFT  一种高效拜占庭容错共识算法PBFT是Practical Byzantine Fault Tolerance的缩写,意为实用拜占庭容错算法。该算法是Miguel Castro 和Barbara Liskov(2008年图灵奖得主)在1999年提出来的,解决了原始拜占庭容错算法效率不高的问题。他的核心思想是:对于每一个收到命令的将军,都要去询问其他人,他们收到的命令是什么。如上图,假设命令由A将军分发,假如A是作恶异常,分发给B,C,D的操作分别是1,2,3.意图扰乱共识。拜占庭容错算法上设计实现是,当B,C,D收到命令后,相互之间也会沟通从A收到的命令是否一致,从而达到识破干扰的目的。其容错的极限就是N>=3F+1。PBFT 在区块链上的实现区块链的节点分为记账节点和普通节点两个角色记账节点负责向全网提供记账服务,并维护全局账本,每过一段时间从记账节点中选一个议长,进行命令的分发,其他记账节点则作为议员进行验证将军就是记账节点,拥有全局账本,并验证交易的有效性,过互相传达验证结果,在f共识的一般流程如下:1.任一节点接收到发送者签名的交易数据请求后,向全网广播2.所有记账节点均独立监听全网的交易数据,并记录在内存3.议长在经过t后发送共识请求提案request4.议员在收到提案后,进行相关验证,发送响应response5.任意节点在限定时间内收到至少F+1个response后,共识达成,把交易记录入区块并发布给全网,如果超时,则更换视图和议长6.任意节点在收到完整区块后,把包含的交易从内存中删除开始下一个共识循环区块产生间隔t,    记账节点n,  可容错节点数f, 视图编号v,  区块高度h, 议长编号p,  议员编号i p=(h-v)%n  未来的发展POW算法建立了比特币帝国,具有划时代的意义。但其能耗和速度问题却是制约区块链普及的两大难以解决的问题。目前POS算法是一大趋势,以太坊的Casper,EOS的DPos等都是借鉴了上述前人的设计理念做的基于应用场景的优化改造,但万变不离其宗,我和大家一样,需要不断的学习和思考,没准,能有发明出自己的共识算法的一天呢。 

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧