ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:310.09KB ,
资源ID:10652486      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10652486.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第十六章 网络通信协议探讨要点.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

第十六章 网络通信协议探讨要点.docx

1、第十六章 网络通信协议探讨要点第十六章 网络通信协议探讨LINUX的源代码中属于网络的就有近38万行;我必须先花时间彻底解决网络编程问题,再论其它;所以、其它题目暂停更新;或许这样、APO操作系统的改动就会少一些。Internet网络是一个公用网络,要知道林子大了、什么鸟都有;我们必须将安全放在第一。说实在、我仔细看了ipv6协议,给我的印象就是希望越大、失望就越大。总之,我认为ipv6是一个失败协议;本文就是我的观点和设想,当然以后还会修改、不可能一步到位。一个多星期的边学、边写、边思考;给我的感觉就是那么多的协议,都是一个头痛医头、脚痛医脚的方案。复杂、啰嗦、多余充斥我的脑海,如果我一个业

2、余者都能看出那么多毛病,怎么都能成为标准?我是想不通。本文可能批判的地方较多,我也不好意思;但那毕竟是我的心声,是我内心的呐喊、与嘶叫,请理解。 对于网络设备、或称为节点,我们可以归纳为二大类:网络终端设备-主机,和网络中的设备-路由器(路由器、交换机等)。那么,协议应该有3种:主机之间,主机和路由器,路由器之间。好的协议应该是能保证用户通信安全,主机和路由器驱动程序简洁;和路由器高效、高速处理数据包的路径选择、和保证传输质量等。网络安全的首要问题就是杜绝地址假冒、杜绝用户数据包的被窃取。那么,我们必须对链路地址作认证、和注册。一、网络安全1、防止同一条链路下的以太网地址假冒 通常,表示主机的

3、地址就是6字节的以太网地址(前3字节是厂家编码、后3字节是网卡序号);那么IPV6的64位接口地址就显得多余、和浪费网络带宽了。连接一台用户主机,基本上都是二层交换机的一个端口,跟别的主机是隔离的;不再是以前挂在同一条线路上。当一台主机A想使用在同一条链路上的另一台主机B的以太网地址时,交换机发出警告、并给A一个错误报文。不同链路上的以太网地址是可以相同,但在同一条链路上的就不允许相同。6字节的地址分配可以到千万亿个以上,而通常是网卡决定的,不可能相同;相同的情形只会是用户故意修改造成。所以、假冒其它用户的以太网地址只能是影响自己。对于移动用户,可以随机生成以太网地址、或交换机分配。每一台主机

4、打开时,都会向其所属交换机发宣告报文“hello”、包含有主机的以太网地址和主机名字,交换机返回其自身的IP地址、即链路地址、和交换机的以太网地址;并查询端口表,看是否需要刷新。连接几十个用户主机的交换机不一定就代表一个子网地址,一台用户主机也不一定就不是代表一个子网。在一个子网下,理论上可以有千万亿个以上的主机。不管如何,一个子网必定有一台做主管的带路由功能的交换机。我们称一个子网下的所有主机都在同一个网段上。同一个网段上的主机都是互为邻居,一个用户主机想查看其邻居;可以向其子网主管交换机提交申请报文;主管交换机将其管辖下、并在线的邻居信息返回报文;并不一定要通过广播来实行,也不需要什么路由

5、器前缀公告。用户主机的以太网地址、和其所属的主管交换机的64位链路地址就构成了一个IP地址。用户主机想和另一个用户主机通信,那必须知道对方的IP地址才行。因为IP地址就包含了以太网地址,所以、我们不需要ARP协议。这样、我们的IP地址,似乎有很多个;这又能飞天?即使你的MAC地址在不断的做不冲突的变换,你的链路地址是变不了的,最后、还是能追查到。如果用户主机作为网站服务,是不能随意更改MAC地址的;那需DNS服务数据库也相应更改才行。有时候,我们只有用户域名的网站字符串地址;那需要向DNS域名服务器查询。DNS的IP地址通常是基本固定的、在安装网络时,就设置在你的主管交换机上了、或你设置在主机

6、上。在你hello时,主管交换机的返回报文中就有DNS的IP地址。表面上,我们是用网站字符串地址访问网站,实际上、主机要先用存储在主机上的DNS的IP发报文给DNS查询到对应的网站IP之后、才能真正的访问相应网站。经常访问的网站IP地址,我们可以保存到一个临时文件;这样、以后就可先查临时文件中的数据,如果有相关网站IP,就不需要查询DNS了。2、防止链路地址假冒 64位的链路地址包含:16位TLA世界级电信公共骨干网接入点,32位NLA下级聚合体、通常是大型ISP网络服务商,16位SLA节点级聚合体、子网地址。一些机构或小型ISP可以申请多个连续的子网地址、或1个NLA(包含64K个子网地址)

7、来构造局域网络。所以、链路地址是通过申请、登记、注册才获得的,每个子网所在的地域位置、创建时间、负责人等信息都备案在上级NLA、或TLA数据库中。可能有人会说,我只要在发送数据包时,将源IP中的链路地址改变为自己设置的链路地址,那就可以起到假冒作用了。这是不行的、你的主管交换机都会在你的源IP中的链路地址打上正确的链路地址印记,并在链路地址最高字符写入你的连接交换机的端口号标记;以便上级更好的做本地交换。如果你是出到大网的,自然有更上级的交换机在出去时、打上正确的链路地址印记。即使你能搞掂SLA,还有上级NLA的监控维护服务器啊;你的SLA总有个连接到NAL的端口吧,一旦进入该端口时的数据包中

8、的源链路地址范围不对,就给记录在案了。用户级交换机通常是链路层、用以太网地址做交换;但主管交换机再往上的、通常是3层交换机了,即是用链路地址做标记交换。就像一个金字塔,汇聚到最顶端的骨干网时,每个端口的数据包数目巨大,但通常都是许多数据包(可能数百万包)整合到一包、标记交换(如ATM等标记交换机)到另一端口。这时,MUT不可能是1518B了;或许是4GE = 128GB。对于网络,我是外行、新手;主要靠想象。所以,本文仅供参考;我会使用APO来设计、规划、模拟路由器,2层、3层、4层交换机,标记交换机,虚拟网络VLAN组服务器,网络编程等等。 安全、简洁是首要;可惜太多的资料要看了,速度会放慢

9、。学院派啊,学院派;你们的脑袋也太复杂了,整出一大堆协议,有必要吗?那个IPV6啊,就只有源主机可以分段是改进得好外;没有发现什么比较先进的地方。链路地址汇聚、IP4就这样了;接口地址跟以太网地址重复、浪费啊。你说、简化了IPV4的协议字段数,但那个扩展头要复杂得多啊!一个就行了,一个MTU大小的包就含多个扩展头、那代码量太大了。那个指定路径路由器、或中间点路由器扩展头,随着网络设备的发展、除了浪费路由器资源,将是没屁用的功能;还不踢掉,失望。那个版本位段IPV4、IPV6有屁用,各协议组合时、地址有重复啊;浪费。ICMP协议应该是想办法将路由器、网关、主机之间的协议简化、合一啊,却越搞越复杂

10、。只有你们晚上做梦时,可以自我欣赏吧;我是学得一肚子气。安全性,完全没考虑好、要从源头解决啊,搞个复杂的IPSEC有屁用、花拳绣腿。认证、加密无需搞进协议里的,多余。最为失望的是,你们都认识到以字节、或字分段;在64位CPU对数据包组装时、会搞死人的!搞成64位分段、你们除了吹嘘64位操作比8位的字节要快8倍外,有没有用你们的复杂脑袋想想啊?能否看长远些?能否不鼠目寸光!人类在发展啊,连我一个业余爱好者都在设计用256位的高速总线了,2GE/S = 64GB/S;将来、就是一次操作32字节、甚至64字节,难道、你的IPV6还能更改?设备也要丢掉?只要把分段改为64字节为单位,那都能兼容字节、3

11、2位、64位、128位、256位、512位;反之、不成立啊。学院派啊,我无语了。3、数据包安全 如果要考虑防止ISP服务商、或一些监控软件对数据包的窃听;那么,只能对数据包内的数据进行加密了。可以使用公开的常用加密算法,也可以定义自己的加密算法、只要通信双方认可就行。二、网络通信协议:网络通信除了标准协议外,也应该能支持用户自定义的协议。路由器主要的任务就是转发数据包,还需实现网络控制消息协议(internet control message protocol)ICMP。不过、ICMP是IP层上的协议,如果不是使用IP包的、还需另外定义控制消息协议;那需要路由器认识才行。TYPE.15-11共

12、5位协议类型,TYPE.15 = 1 是非IP协议:0X8137 IPX协议、0X8035为RARP、Ethernet 802.2.LLC 、Ethernet 802.2.LLC.SNAP、用户自定义协议、等等。TYPE.15 = 0 是IP协议:1、互联网控制报文协议ICMPAPO,2、IPA/TCP, IPA为APO的IP协议,3、IPA/UDP,4、IPV4,5、IPAICMP,ICMP的差错报文、应答报文协议,6、IPV6,7-15 其它、或用户自定义。 路由器、交换机通常只是处理第一项ICMPAPO,其它项是转发、除非目标地址是自己。如果数据报有错误时,会做第5项APOICMP的差错

13、报文;如果是路由器组播地址、或目标是路由器地址,也会做第5项APOICMP的应答报文。 对于用户组播,我希望是全球型的、而非单纯是局域网VLAN。网上的关于组播资料(IPV4、或IPV6),或许我笨了些、真的看了半天、没有明白过来。我想:先不说112位的组播地址,就拿32位组播地址ID来说;假设一个小组可以有64K个用户,那32位就可有64K个小组。我们是不可能知道那一个用户主机、在什么时候加入了那n个小组的。要想实现对组播ID的转发,那用户主机的主管交换机就要建立最少一张表吧;假设主管交换机有1K个用户、那表大小是1K个记录项;每个记录项是用户MAC地址、端口号、组播ID1-IDn、上行端口

14、号。嗯、全世界的小组数不止64K个,好、我们又换种方式:24位的组播标识地址、40位组地址ID、48位小组成员MAC地址。就算、每个小组成员最多能加入64K个小组,那组播ID1-IDn最少要安排64K个列字段啊、一个列字段40位,不算别的,我们就算32位、64K个列字段;那表大小也要64KW * 1K = 64MW = 256MB。路由器、交换机就是查表、识辨就要耗尽资源了,还能做转发?主管交换机的上一级需要的表更大,能实现吗?还是我没考虑到?还是学院派的虚妄? 我的设想是:用户组播功能从路由器、交换机中剔除,用户组播应该是应用层的事情,而路由器、交换机只是实现二层、三层、四层的数据包交换;主

15、要用于转发。路由器、交换机的组播只是有限的组播,局限于周边;或局部节点、或本地节点、或子网节点。而用户组播功能是由某个服务器、或用户主机来实现;这种用户组播功能是相当灵活、强大的;表大小不受限、可以构建许多个组;易于实现权限,组成员管理;轻松构建全球性的VLAN。但组播服务器的带宽要高些,这需要在NLA、或TLA上建立组播服务器才合理。1)、APO的IP数据包帧结构:头部占2E = 64B,包含MAC、IPA、TCP/UDP/ICMPA字段。BU64B EMAC / 最小长度2E = 18 + 46 = 64B,最大长度 = 1526B/ IP数据包分段单位是2E一片,所以分段数据含头部最多2

16、3片、46E = 1472B。/ 如果以一片为1E,则含头部最大47E = 1504B,分段数据最大45E = 1440B。BU1E MACIP / 以太网和IP头部、1E(1行) = 32B;路由器处理入口。BU48 MDA; / 以太网目标地址BU48 MSA; / 以太网源地址BU16 TYPE; / 类型和长度。/ TYPE.15 IPX; 1、0X8137 IPX等非IP协议;0、IP协议。/ TYPE.14-11 TYPEP; 协议类型标识。/ TYPE.10-0 LEN; 数据包字节长度。BU8 TTL; / 跳数限制。BU8 TOS; / 8位传输优先级、流量类型。 BU64

17、SLADD; / 源链路地址。SLADD + MSA = 源IP地址BU64 DLADD; / 目标链路地址。DLADD + MDA = 目标IP地址union / APO的TCP协议头、1E;支持4GB的文件流传输。 BU32 length; / 文件流总字节长度,不含头部64字节(2E)。 BU32 sheetoff; / 低26位片偏移、分段单位1片 = 64字节。/ sheetoff.31 MF; 更多分段标志(more fragment),0、最后一个分段/ sheetoff.30-26 tcplen; 5位选项长度。BU32 flowlabel; / 32位流标签 BU20B TC

18、P / 标准TCP协议头。 BU16 SPORT; / 源端口BU16 DPORT; / 目的端口 BU32 seqnum; / 序号。 BU32 connum; / 确认号。 BU16 trflag; / 控制标志。 BU16 windows; / 窗口BU16 cheksum; / 校验和。BU16 urgentp; / 紧急指针。 / TCP协议太复杂了,也要结合ICMP做大的改进。希望能改革MTU,为2KE = 64KB;这时,我们的分段单位就可以设为 1片 = 256字节 = 8E;甚至 1片 = 1个扇区 = 16E。/union / APO的UDP协议头、1E,带弱连接;支持4G

19、B的文件流传输。 BU32 length; / 文件流总字节长度,不含头部64字节(2E)。 BU32 sheetoff; / 低26位片偏移、分段单位1片 = 64字节。/ sheetoff.31 MF; 更多分段标志(more fragment),0、最后一个分段/ sheetoff.30 RRQ; 以数据包头后的文件名、映射到一个流标签,读请求。 / sheetoff.29 WRQ; 以数据包头后的文件名、映射到一个流标签,写请求。/ sheetoff.28 RRQ; 以流标签、分段偏移、段片数,重传一个段请求。/ sheetoff.27 DATA; 正常的DATA传输。/ sheeto

20、ff.26 ACK; 确认应答。BU32 flowlabel; / 32位流标签BU16 rwmode; / 读、写请求的传输模式。BU16 eroorm; / 差错码,非0则有错。BU8B usedata; / 用户自定义。 BU8B UDP / 标准UDP协议头。BU16 SPORT; / 源端口BU16 DPORT; / 目的端口BU16 segnum; / 文件流的段数;不分段时就是数据报长度。BU16 cheksum; / 校验和。 union / APO的组播UDP协议头、1E,支持弱连接,由组播服务器处理。/ 每个组播UDP包、需要相应的组播服务器转发到其它成员。数据报还是同一份

21、、/ 但目标IP地址成为多个;可以任播、组播;组成员必须保存有组服务器IP。 BU32 length; / 文件流总字节长度,不含头部64字节(2E)。 BU32 sheetoff; / 低26位片偏移、分段单位1片 = 64字节。/ sheetoff.31 MF; 更多分段标志(more fragment),0、最后一个分段/ sheetoff.30 RRQ; 以数据包头后的文件名、映射到一个流标签,读请求。 / sheetoff.29 WRQ; 以数据包头后的文件名、映射到一个流标签,写请求。/ sheetoff.28 RRQ; 以流标签、分段偏移、段片数,重传一个段请求。/ sheeto

22、ff.27 DATA; 正常的DATA传输标志。/ sheetoff.26 ACK; 确认应答。BU32 flowlabel; / 32位流标签BU16 rwmode; / 读、写请求的传输模式。BU16 eroorm; / 差错码,非0则有错。BU8B usedata;/ 用户自定义的IGMP协议,查询、注册、注销等。/ 比如:1字节命令(任播、组播、查询、注销、注册、无连接等)、1字节代码号/(优先级、标志、状态等),4字节组标识,2字节设备类型等。 BU8B UDP / 标准UDP协议头。BU16 SPORT; / 源端口BU16 DPORT; / 目的端口BU16 segnum; /

23、文件流的段数;不分段时就是数据报长度。BU16 cheksum; / 校验和。 APO的以太网包格式:14字节、4个字段;IP包格式:18字节、4个字段;数据包格式:最大1518字节。APO的TCP/UDP/ICMP:32字节、12字段 。 2)、APO的网际信报控制协议(ICMP) 有2类ICMP报文,应答、差错报文IPAICMP总是起始于数据包的2E包头后面、而信令报文则被封装到类似UDP格式的ICMPAPO协议1E。从设备上分类则有:1、主机、路由器的宣告、请求报文。2、路由器、或主机到主机的应答、差错报文。3、路由器间的协议报文(内部网关协议IGP(包括RIP、IGRP、OSPF、EI

24、GRP、IS-IS等),外部网关协议BGP、也称为EGP)。没用、取消!为何要分为2类ICMP报文?因为信令报文ICMPAPO是路由器必须检查、处理的,而应答、差错报文IPAICMP对于路由器来说、通常只是转发;而最终是由目的节点来处理。对于应答、差错报文,我们往往要保留TCP/UDP/ICMPAPO的头部、以便节点知道缘由、从而方便处理。 交换机都有路由功能,二层交换机的路由实现较为简单一些;三层交换机就能实现大部分的路由功能。二层交换机是以MAC地址作交换、而三层交换机是以链路地址作交换。交换机必须实现的基本功能有:1、包头长度检查(二层交换机不检查)。2、检查校验和。3、本节点的地址、设

25、备编号、时间戳提交。4、跳数处理。5、出错时、发出差错ICMP报文。6、转发(二层是据MAC地址,三层是据链路地址)。7、对本节点的请求、应答处理。8、在一个子网内MTU最少要做到64KB。 到此、在APO网络中,将节点、路由器等广播地址全部去掉;只有用户层的组播功能,路由器、交换机不再处理广播数据报。要知道交换机、路由器是交换、转发数据报,不是广播机!不要连姓什么都忘了。三、ICMPAPO协议 每一个子网必须有一台主管交换机,它保存有子网下的所有主机MAC、端口表。一个子网不要超过2K台主机,全球子网地址可达到16E+18;那么庞大的子网地址数量,没必要一个子网带太多的主机。用户开机时,会有

26、一个主机宣告ICMPAPO报文发送;该报文只是到达主管交换机路径上的相关交换机会处理,并更新它们的MAC表;主管交换机还要做MAC地址是否重复的处理,重复则回发差错ICMP报文。泛洪广播会过多的浪费带宽、应彻底清除。邻居请求ICMPAPO报文,也只是主管交换机才会应答;而不是子网下的所有交换机都应答;避免重复的邻居信息,但需要用户主机到主管交换机间有2K*32B = 64KB的MTU。交换机、路由器也同样有一个宣告开机报文,和邻居信息请求报文;我们不能将它们封装在一起吗?探查ICMP报文是探查从源到目的的路径上所有路由器的IP地址、时间戳、MTU、跳数等信息。 我们的目标是简化路由器、交换机代

27、码量,而非让他们执行许多垃圾协议。那个全网广播命令、只有白痴才会去实行。我们应该彻底清除掉所有广播地址,清扫掉这些扰乱市场的因素;还网络一个清净,网络只有点对点通信;用户组播实质还是用点对点通信在用户层完成的。BU64B EMAC / ICMPAPO是节点必须检查、执行的协议。BU1E MACIP; / MAC、IP头32字节。union / APO的ICMPAPO协议头、1E,无连接。 BU8 imcptype; / 报文类型:宣告、邻居请求、探查。 BU8 imcpcode; / 代码号。 BU16 devtype;/ 源设备类型(主机,2-3-4层交换机等)、网络中的级数。 BU32 P

28、TID; / 源设备的进程号(或端口号)、线程号(或标识)。BU32 times; / 报文发送时的时间戳us。BU16 MTU; / 源设备的MTU。BU16 cheksum;/ 校验和。BU16B icmpdata; / 用户自定义的数据。1、链路地址汇聚三层交换机图1,假设我是一个ISP网络服务商,获得了一个NLA下级聚合体地址,具有64K个的子网地址;三层交换机的上级端口2个、下级端口48个。我们先不考虑备用交换机,和非线性分割;那么A层(顶端、只需一台)交换机有47个下级端口、每个端口线性分割子网地址后,为包含1394个子网地址的子网集束;第48端口为余下的18个子网地址用于服务器。

29、那么,B层的47个交换机的每个交换机的29个下级端口连接下级的C层交换机(每个C层端口包含48个子网地址集束),有2个端口是单子网地址、直接连接子网主管交换机;余下的17个端口用于B层交换机互连,以减少跳数。到达B层某个交换机j的数据包,如果目的地是B层的另一个交换机i、如有互联、那么一跳就行了,否则需经A层交换机做2跳。C层交换机的48个下级端口(每端口一个子网地址)就连接到子网主管交换机。用户主机要发数据包到ISP网络外,那么、需要经0-3级到达其子网主管交换机(用户主机0级、hub是1级、用户接入交换机是2级、主管交换机是3级)、再2-3级(C、B、A,或B、A)才能到达外网。这样一来,

30、三层交换机将是非常简洁,路由表最多48项;每一项记录是:端口号、子网集束(16位的子网开始地址、结束地址)。到达交换机的数据包,先查NLA地址、不同则往上级端口转发(如果从上级端口来的、则直接抛弃),相同、则用子网地址查路由表、没有符合项则往上级端口转发(如果从上级端口来的、则直接抛弃);有符合项、则按照相应端口号往下级转发。骨干交换机也是类似的,不过是用更大的子网集束NLA地址来判断吧了。整个网络基本上就是2-4层交换机,网关内、外等协议全部简化成2对ICMP报文类型:宣告、应答,和邻居请求、应答。那些垃圾的、人为复杂的协议通通清掉。2、二层交换机就是用MAC地址来转发数据包,每个主管交换机

31、只有一个子网地址,最多管理2K个用户主机。用户主机可能通过HUB端口才连接到上一级2层用户接入交换机,所以交换机的每个下级端口会有一张端口MAC表,每项是:设备类型级数、活动标志、MAC地址、活动定时器、主机名字(最多10字符)等。对于主管交换机最多2K项;24口交换机也就24项;48口交换机也就48项。对于一个子网,网内的通信需要更大的数据报(64KB);64KB = 2KE,包头只占数据报的0.1%。用户主机发一个请求邻居报文,其主管交换机就返回一个大的数据包、包含了子网上所有活动邻居的信息;简单多了。对于路由交换机的情形略有不同。在三层交换机时、它的宣告,其上级路由交换机会返回一个链路地址前缀、和子网束报文;接着、它需要扫描下级端口,并为下级端口分配子网地址束;这也是属于一个强权型请求邻居报文;通常A层、B层是手工分配(几百万用户、只需手工分配50台交换机),C层是每个下级端口一个子网地址的自动分配。在二层交换机时、也类似,不过换成是MAC地址。对于交换机、宣告是上级端口的分配,请求是处理下级端口分配。对于用户主机、宣告是其所在用户交换机端口的刷新设置,请求只有邻居请求。3、用户主机 用户主机可发出宣告(类型0)、邻居请求(类型1)、探查(类型2)、这3

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1