TCPIP完整的一套基础介绍

实战uC-TCPIP 经过十几天的努力,终于在板子上把uC-TCPIP跑起来了。趁着还记得,赶紧把过程记录下来,分享心得体会。当中也走了不少弯路,以后吸取经验教训。 这十几天的工作大概可以分为三个部分:搜集资料、代码移植、测试调试。 由于项目需要,我们要在现有的ARM7平台上加网口跑TCP应用,然而我们现有的工程并没有实现TCP/IP协议栈。在初步调研之后,开始在网上搜集了关于一些uC-TCPIP的资料,主要有“官方Micrium”uC-TCPIP的源码,再加两三个不同硬件平台上的使用示例(感谢csdn、goo 阅读详情
TCP/IP应该是个协议集,根据OS的七层理论,TCP/IP分为四层.分别是应用,传输,Interne和网络界面.

我们一般说TCP在传输层,而IP在Internet层.

TCP/IP的应用程序包括我们平时经常用到的Ping,Telnet,Ftp,Finger等等

配置TCP/IP包括IP地址,子网掩码和缺省网关

正确检测TCP/IP的四个步骤:PIng 127.0.0.1(回环地址)如果通表示TCP/IP已经装入,Ping自己表明客户机正常(主要是网卡),Ping网关表示局域网正常,Ping路由外地址表示完全正常,当然你也可以直接进行第四步,一般来说没这么麻烦的,但理论是基础:-)

IP地址是四段八位的二进制数组成的,IP分为A,B,C,D,E五类地址

A类高端为0,从1.x.y.z~126.x.y.z .B类高端为10,从128.x.y.z~191.x.y.z C类高端为110,从192.x.y.z~223.x.y.z D类高端为1110是保留的IP地址 E类高端为1111,是科研用的IP地址

其中255是广播地址,127是内部回送函数

以上算是开头,以后一点点增加,实在是现在还有很多事情等着去做,不好意思了 :-)

以下内容是子网的设定

若公司不上Internet,那一定不会烦恼IPAddress的问题,因 为可以任意使用所有的IPAddress,不管是AClass或是BClass, 这个时候不会想到要用SubNet,但若是上Internet那IPAddress 便弥足珍贵了,目前全球一阵Internet热,IPAddress已经愈 来愈少了,而所申请的IPAddress目前也趋保守,而且只有 经申请的IPAddress能在Internet使用,但对某些公司只能申 请到一个CCLass的IPAddress,但又有多个点需要使用,那这 时便需要使用到Subnet,这篇短文说明Subnet的原理及如 何规划。

SubnetMask的介绍
设定任何网路上的任何设备不管是主机、PC、Router等 皆需要设定IPAddress,而跟随著IPAddress的是所谓的NetMask, 这个NetMask主要的目的是由IPAddress中也能获得NetworkNumber ,也就是说IPAddress和NetMask作AND而得到NetworkNumber,如下所 示


IPAddress 192.10.10.611000000.00001010.00001010.00000110
NetMask 255.255.255.011111111.11111111.11111111.00000000
AND -------------------------------------------------------------------
etworkNumber 192.10.10.011000000.00001010.00001010.00000000


NetMask有所谓的预设值,如下所示

ClassIPAddress范围NetMask
A 1.0.0.0-126.255.255.255255.0.0.0
B 128.0.0.0-191.255.255.255255.255.0.0
C 192.0.0.0-223.255.255.255255.255.255.0



在预设的NetMask都只有255的值,在谈到SubnetMask时这个值 便不一定是255了。
在完整一组CClass中如203.67.10.0-203.67.10.255NetMask255.255.255.0, 203.67.10.0称之NetworkNumber(将IPAddress和Netmask作AND),而 203.67.10.255是Broadcast的IPAddress,所以这?两者皆不能使用,实 际只能使用203.67.10.1--203.67.10.254等254个IPAddress,这是以 255.255.255.0作NetMask的结果,而所谓SubnetMsk尚可将整组C Class分成数组NetworkNumber,这要在NEtMask作手脚,若是要将 整组CCLass分成2个NetworkNumber那NetMask设定为255.255.255.192, 若是要将整组CCLass分成8组NetworkNumber则NetMask要为 255.255.255.224,这是怎麽来的,由以上知道NetworkNumber是由IP Address和NetMask作AND而来的,而且将NetMask以二进位表示 法知道是1的会保留,而为0的去掉



192.10.10.193--11000000.00001010.00001010.10000001
255.255.255.0--11111111.11111111.11111111.00000000
--------------------------------------------------------------
192.10.10.0--11000000.00001010.00001010.00000000


以上是以255.255.255.0为NetMask的结果,NetworkNumber是192.10.10.0, 若是使用255.255.255.224作NetMask结果便有所不同


192.10.10.193--11000000.00001010.00001010.10000000
255.255.255.224--11111111.11111111.11111111.11100000
--------------------------------------------------------------
192.10.10.192--11000000.00001010.00001010.10000000


此时NetworkNumber变成了192.10.10.192,这便是Subnet。
那要如何决定所使用的NetMask,255.255.255.224以二进位表示 法为11111111.11111111.11111111.11100000,变化是在最後一组,11100000 便是224,以三个Bit可表示2的3次方便是8个NetworkNumber

NetMask二进位表示法可分几个Network

255.255.255.0 11111111.11111111.11111111.000000001
255.255.255.128 11111111.11111111.11111111.100000002
255.255.255.192 11111111.11111111.11111111.110000004
255.255.255.224 11111111.11111111.11111111.111000008
255.255.255.240 11111111.11111111.11111111.1111000016
255.255.255.248 11111111.11111111.11111111.1111100032
255.255.255.252 11111111.11111111.11111111.1111110064



以下使用255.255.255.224将C Class203.67.10.0分成8组NetworkNumber,各 个NetworkNumber及其BroadcastIPAddress及可使用之IPAddress

序号NetworkNumberBroadcast可使用之IPAddress

1 203.67.10.0 203.67.10.31 203.67.10.1-203.67.10.30
2 203.67.10.32 203.67.10.63 203.67.10.33-203.67.10.62
3 203.67.10.64 203.67.10.95 203.67.10.65-203.67.10.94
4 203.67.10.96 203.67.10.127 203.67.10.97-203.67.10.126
5 203.67.10.128 203.67.10.159 203.67.10.129-203.67.10.158
6 203.67.10.160 203.67.10.191 203.67.10.161-203.67.10.190
7 203.67.10.192 203.67.10.223 203.67.10.193-203.67.10.222
8 203.67.10.224 203.67.10.255 203.67.10.225-203.67.10.254



可验证所使用的IPAddress是否如上表所示

203.67.10.115--11001011.01000011.00001010.01110011
255.255.255.224--11111111.11111111.11111111.11100000
--------------------------------------------------------------
203.67.10.96--11001011.01000011.00001010.01100000

203.67.10.55--11001011.01000011.00001010.00110111
255.255.255.224--11111111.11111111.11111111.11100000
--------------------------------------------------------------
203.67.10.32--11001011.01000011.00001010.00100000

其他的NetMask所分成的NetworkNumber可自行以上述方法自行推演出来。

Subnet的应用
使用Subnet是要解决只有一组CClass但需要数个NetworkNumber的问题,并不是解决IPAddress不够用的问题,因为使用 Subnet反而能使用的IPAddress会变少,Subnet通常是使用在总公司在台北,但分公司在台中,两者之间使用Router连线 ,同时也上Internet,但只申请到一组CCLassIPAddress,过Router又需不同的Network,所以此时就必须使用到Subnet,当然二 办公司间可以RemoteBridge连接,那便没有使用Subnet的问题,这点在此不讨论,所以在以上情况下的网路连线架 构及IPAddress的使用


TCP/IP(传输控制协议/网间协议)是一种网络通信协议,它规范了网络上的所有通信设备,尤其是一个主机与另一个主机之间的数据往来格式以及传送方式。TCP/IP是INTERNET的基础协议,也是一种电脑数据打包和寻址的标准方法。在数据传送中,可以形象地理解为有两个信封,TCP和IP就像是信封,要传递的信息被划分成若干段,每一段塞入一个TCP信封,并在该信封面上记录有分段号的信息,再将TCP信封塞入IP大信封,发送上网。在接受端,一个TCP软件包收集信封,抽出数据,按发送前的顺序还原,并加以校验,若发现差错,TCP将会要求重发。因此,TCP/IP在INTERNET中几乎可以无差错地传送数据。


在任何一个物理网络中,各站点都有一个机器可识别的地址,该地址叫做物理地址.物理地址有两个

特点:
物理地址的长度,格式等是物理网络技术的一部分,物理网络不同,物理地址也不同.
同一类型不同网络上的站点可能拥有相同的物理地址.
以上两点决定了,不能用物理网络进行网间网通讯.

在网络术语中,协议中,协议是为了在两台计算机之间交换数据而预先规定的标准。TCP/IP并不是一个而是许多协议,这就是为什么你经常听到它代表一个协议集的原因,而TCP和IP只是其中两个基本协议而已。

你装在计算机-的TCP/IP软件提供了一个包括TCP、IP以及TCP/IP协议集中其它协议的工具平台。特别是它包括一些高层次的应用程序和FTP(文件传输协议),它允许用户在命令行上进行网络文件传输。

TCP/IP是美国政府资助的高级研究计划署(ARPA)在二十世纪七十年代的一个研究成果,用来使全球的研究网络联在一起形成一个虚拟网络,也就是国际互联网。原始的

Internet通过将已有的网络如ARPAnet转换到TCP/IP上来而形成,而这个Internet最终成为如今的国际互联网的骨干网。

如今TCP/IP如此重要的原因,在于它允许独立的网格加入到Internet或组织在一起形成私有的内部网(Intranet)。构成内部网的每个网络通过一种-做路由器或IP路由器的设备在物理上联接在一起。路由器是一台用来从一个网络到另一个网络传输数据包的计算机。在一个使用TCP/IP的内部网中,信息通过使用一种独立的叫做IP包(IPpacket)或IP数据报(IPdatagrams)的数据单元进--传输。TCP/IP软件使得每台联到网络上的计算机同其它计算机“看”起来一模一样,事实上它隐藏了路由器和基本的网络体系结构并使其各方面看起来都像一个大网。如同联入以太网时需要确认一个48位的以太网地址一样,联入一个内部网也需要确认一个32位的IP地址。我们将它用带点的十进制数表示,如128.10.2.3。给定一个远程计算机的IP地址,在某个内部网或Internet上的本地计算机就可以像处在同一个物理网络中的两台计算机那样向远程计算机发送数据。

TCP/IP提供了一个方案用来解决属于同一个内部网而分属不同物理网的两台计算机之间怎样交换数据的问题。这个方案包括许多部分,而TCP/IP协议集的每个成员则用来解决问题的某一部分。如TCP/IP协议集中最基本的协议-IP协议用来在内部网中交换数据并且执行一项重要的功能:路由选择--选择数据报从A主机到B主机将要经过的路径以及利用合适的路由器完成不同网络之间的跨越(hop)。

TCP是一个更高层次的它允许运行在在不同主机上的应用程序相互交换数据流。TCP将数据流分成小段叫做TCP数据段(TCPsegments),并利用IP协议进行传输。在大多数情况下,每个TCP数据段装在一个IP数据报中进行发送。但如需要的话,TCP将把数据段分成多个数据报,而IP数据报则与同一网络不同主机间传输位流和字节流的物理数据帧相容。由于IP并不能保证接收的数据报的顺序相一致,TCP会在收信端装配TCP数据段并形成一个不间断的数据流。FTP和Telnet就是两个非常流行的依靠TCP的TCP/IP应用程序。

另一个重要的TCP/IP协议集的成员是用户数据报协议(UDP),它同TCP相似但比TCP原始许多。TCP是一个可靠的协议,因为它有错误检查和握手确认来保证数据完整的到达目的地。UDP是一个“不可靠”的协议,因为它不能保证数据报的接收顺序同发送顺序相同,甚至不能保证它们是否全部到达。如果有可靠性要求,则应用程序避免使用它。同许多TCP/IP工具同时提供的SNMP(简单网络管理协议)就是一个使用UDP协议的应用例子。

其它TCP/IP协议在TCP/IP网络中工作在幕后,但同样也发挥着重要作用。例如地址转换协议(ARP)将IP地址转换为物理网络地址如以太网地址。而与其对应的反向地址转换协议(RARP)做相反的工作,即将物理网络地址转换为IP地址。网际控制报文协议(ICMP)则是一个支持性协议,它利用IP完成IP数据报在传输时的控制信息和错误信息的传输。例如,如果一个路由器不能向前发送一个IP数据报,它就会利用ICMP来告诉发送者这里出现了问题。


网络设计者在解决网络体系结构时经常使用ISO/OSI( 国际标准化组织/开放系统互连)七层模型,该模型每 一层代表一定层次的网络功能。最下面是物理层,它 代表着进行数据转输的物理介质,换句话说,即网络 电缆。其上是数据链路层,它通过网络接口卡提供服 务。最上层是应用层,这里运行着使用网络服务的应 用程序。

TCP/IP是同ISO/OSI模型等价的。当一个数据单元 从网络应用程序下流到网络接口卡,它通过了一列的TCP/IP 模块。这其中的每一步,数据单元都会同网络另一端 对等TCP/IP模块所需的信息一起打成包。这样当数据最 终传到网卡时,它成了一个标准的以太帧(假设物理 网络是以太网)。而接收端的TCP/IP软件通过剥去以太网 帧并将数据向上传输过TCP/IP栈来为处于接收状态的应 用程序重新恢复原始数据(一种最好的了解TCP/IP工作实 质的方法,是使用探测程序来观察网络中的到处流动 的帧中被不同TCP/IP模块所加上的信息)。

为了勾勒TCP/IP在现实网络世界中所扮演的角色, 请考虑当使用HTTP(超文本传输协议)的Web浏览器从连接 在Internet上的Web服务器上获取一页HTML数据时所发生的情 况。为形成同Web服务器的虚链路,浏览器使用一种被 抽象地称为套接口(socket)的高层软件。为了获 取Web页,它通过向套接口向套接口写入HTTPGET命令来向Web 服务器发出该指令。接下来套接口软件使用TCP协议向 Web服务器发出包含GET命令的字节流和位流,TCP将数据 分段并将各独立段传到IP模块,该模块将数据段转换 成数据报并发送给Web服务器。

如果浏览器和服务器运--在不同物理网络的计 算机上(一般情况如此),数据报从一个网络传到另一 个网络,直到抵达服务器所在的那个网。最终,数据 被传输到目的地址并被重新装配,这样Web服务器通过 读自己的套接口来获得数据主干,并进而查看连续的 数据流。对浏览器和服务器来说,数据在这一端写入 套接口而在另一端出现如同魔术一般,但这只是底 下发生的各种复杂的交互,它创造了数据经过网络无 缝传输的假象。

这就是TCP/IP所做的:将许多小网联成一个大网。 并在这个大网也就是Internet上提供应用程序所需要的 相互通信的服务。

评论:

对于TCP/IP有许多可谈的,但这里仅讲三个关键 点:

·TCP/IP是一族用来把不同的物理网络联在一 起构成网际网的协议。TCP/IP联接独立的网络形成一个 虚拟的网,在网内用来确认各种独立的不是物理网络 地址,而是IP地址。

·TCP/IP使用多层体系结构,该结构清晰定义了 每个协议的责任。TCP和UDP向网络应用程序提供了高层 的数据传输服务,并都需要IP来传输数据包。IP有责任 为数据包到达目的地选择合适的路由。

·在Internet主机上,两个运行着的应用程序之 间传送要通过主机的TCP/IP堆栈上下移动。在发送端TCP/IP 模块加在数据上的信息将在接收端对应的TCP/IP模块上 滤掉,并将最终恢复原始数据。

如果你有兴趣学习更多的TCP/IP知识,这里有两个 较高层次的信息源RFC(RequestforComment)1180——叫做“TCP/IP Tutorial”的文档,你可以从许多普及的RFC的Internet节点上 下载。另一个是InternetworkingwithTCP/IP的第一卷:Principles,Protocols,and Architectures,作者DouglasE.Comer(1995,Prentice-Hall)。作为该系三部 曲中的第一部分,许多人把看成是一本TCP/IP圣经。(原 文刊载于Vol.15No.20)



二、传输层的安全性

在Internet应用编程序中,通常使用广义的进程间通信(IPC)机制来与不同层次的安全协议打交道。比较流行的两个IPC编程界面是BSD Sockets和传输层界面(TLI),在Unix系统V命令里可以找到。

在Internet中提供安全服务的首先一个想法便是强化它的IPC界面,如BSD Sockets等,具体做法包括双端实体的认证,数据加密密钥的交换等。Netscape通信公司遵循了这个思路,制定了建立在可靠的传输服务(如TCP/IP所提供)基础上的安全套接层协议(SSL)。SSL版本3(SSL v3)于1995年12月制定。它主要包含以下两个协议:

SSL记录协议 它涉及应用程序提供的信息的分段、压缩、数据认证和加密。SSL v3提供对数据认证用的MD5和SHA以及数据加密用的R4和DES等的支持,用来对数据进行认证和加密的密钥可以通过SSL的握手协议来协商。
SSL握手协议 用来交换版本号、加密算法、(相互)身份认证并交换密钥。SSL v3 提供对Deffie-Hellman密钥交换算法、基于RSA的密钥交换机制和另一种实现在 Fortezza chip上的密钥交换机制的支持。
Netscape通信公司已经向公众推出了SSL的参考实现(称为SSLref)。另一免费的SSL实现叫做SSLeay。SSLref和SSLeay均可给任何TCP/IP应用提供SSL功能。Internet号码分配当局(IANA)已经为具备SSL功能的应用分配了固定端口号,例如,带SSL的 HTTP(https)被分配的端口号为443,带SSL的SMTP(ssmtp)被分配的端口号为465,带SSL的NNTP(snntp)被分配的端口号为563。

微软推出了SSL2的改进版本称为PCT(私人通信技术)。至少从它使用的记录格式来看,SSL和PCT是十分相似的。它们的主要差别是它们在版本号字段的最显著位(The Most Significant Bit)上的取值有所不同: SSL该位取0,PCT该位取1。这样区分之后,就可以对这两个协议都给以支持。

1996年4月,IETF授权一个传输层安全(TLS)工作组着手制定一个传输层安全协议(TLSP),以便作为标准提案向IESG正式提交。TLSP将会在许多地方酷似SSL。

前面已介绍Internet层安全机制的主要优点是它的透明性,即安全服务的提供不要求应用层做任何改变。这对传输层来说是做不到的。原则上,任何TCP/IP应用,只要应用传输层安全协议,比如说SSL或PCT,就必定要进行若干修改以增加相应的功能,并使用(稍微)不同的IPC界面。于是,传输层安全机制的主要缺点就是要对传输层IPC界面和应用程序两端都进行修改。可是,比起Internet层和应用层的安全机制来,这里的修改还是相当小的。另一个缺点是,基于UDP的通信很难在传输层建立起安全机制来。同网络层安全机制相比,传输层安全机制的主要优点是它提供基于进程对进程的(而不是主机对主机的)安全服务。这一成就如果再加上应用级的安全服务,就可以再向前跨越一大步了。




三、应用层的安全性
必须牢记(且须仔细品味): 网络层(传输层)的安全协议允许为主机(进程)之间的数据通道增加安全属性。本质上,这意味着真正的(或许再加上机密的)数据通道还是建立在主机(或进程)之间,但却不可能区分在同一通道上传输的一个具体文件的安全性要求。比如说,如果一个主机与另一个主机之间建立起一条安全的IP通道,那么所有在这条通道上传输的IP包就都要自动地被加密。同样,如果一个进程和另一个进程之间通过传输层安全协议建立起了一条安全的数据通道,那么两个进程间传输的所有消息就都要自动地被加密。

如果确实想要区分一个具体文件的不同的安全性要求,那就必须借助于应用层的安全性。提供应用层的安全服务实际上是最灵活的处理单个文件安全性的手段。例如一个电子邮件系统可能需要对要发出的信件的个别段落实施数据签名。较低层的协议提供的安全功能一般不会知道任何要发出的信件的段落结构,从而不可能知道该对哪一部分进行签名。只有应用层是唯一能够提供这种安全服务的层次。

一般来说,在应用层提供安全服务有几种可能的做法,第一个想到的做法大概就是对每个应用(及应用协议)分别进行修改。一些重要的TCP/IP应用已经这样做了。在RFC 1421至1424中,IETF规定了私用强化邮件(PEM)来为基于SMTP的电子邮件系统提供安全服务。由于种种理由,Internet业界采纳PEM的步子还是太慢,一个主要的原因是PEM依赖于一个既存的、完全可操作的PKI(公钥基础结构)。PEM PKI是按层次组织的,由下述三个层次构成:

顶层为Internet安全政策登记机构(IPRA)
次层为安全政策证书颁发机构(PCA)
底层为证书颁发机构(CA)
建立一个符合PEM规范的PKI也是一个政治性的过程,因为它需要多方在一个共同点上达成信任。不幸的是,历史表明,政治性的过程总是需要时间的,作为一个中间步骤,Phil Zimmermann开发了一个软件包,叫做PGP(pretty Good Privacy)。PGP符合PEM的绝大多数规范,但不必要求PKI的存在。相反,它采用了分布式的信任模型,即由每个用户自己决定该信任哪些其他用户。因此,PGP不是去推广一个全局的PKI,而是让用户自己建立自己的信任之网。这就立刻产生一个问题,就是分布式的信任模型下,密钥废除了怎么办。

S-HTTP是Web上使用的超文本传输协议(HTTP)的安全增强版本,由企业集成技术公司设计。S-HTTP提供了文件级的安全机制,因此每个文件都可以被设成私人/签字状态。用作加密及签名的算法可以由参与通信的收发双方协商。S-HTTP提供了对多种单向散列(Hash)函数的支持,如: MD2,MD5及SHA; 对多种单钥体制的支持,如:DES,三元DES,RC2,RC4,以及CDMF; 对数字签名体制的支持,如: RSA和DSS。

目前还没有Web安全性的公认标准。这样的标准只能由WWW Consortium,IETF或其他有关的标准化组织来制定。而正式的标准化过程是漫长的,可能要拖上好几年,直到所有的标准化组织都充分认识到Web安全的重要性。S-HTTP和SSL是从不同角度提供Web的安全性的。S-HTTP对单个文件作"私人/签字"之区分,而SSL则把参与通信的相应进程之间的数据通道按"私用"和"已认证"进行监管。Terisa公司的SecureWeb工具软件包可以用来为任何Web应用提供安全功能。该工具软件包提供有 RSA数据安全公司的加密算法库,并提供对SSL和S-HTTP的全面支持。

另一个重要的应用是电子商务,尤其是信用卡交易。为使Internet上的信用卡交易安全起见,MasterCard公司(同IBM,Netscape,GTE和Cybercash一道) 制定了安全电子付费协议(SEPP),Visa国际公司和微软(和其他一些公司一道)制定了安全交易技术(STT)协议。同时,MasterCard,Visa国际和微软已经同意联手推出Internet上的安全信用卡交易服务。他们发布了相应的安全电子交易(SET)协议,其中规定了信用卡持卡人用其信用卡通过Internet进行付费的方法。这套机制的后台有一个证书颁发的基础结构,提供对X.509证书的支持。

上面提到的所有这些加安全功能的应用都会面临一个主要的问题,就是每个这样的应用都要单独进行相应的修改。因此,如果能有一个统一的修改手段,那就好多了。通往这个方向的一个步骤就是赫尔辛基大学的Tatu Yloenen开发的安全shell(SSH)。SSH允许其用户安全地登录到远程主机上,执行命令,传输文件。它实现了一个密钥交换协议,以及主机及客户端认证协议。SSH有当今流行的多种Unix系统平台上的免费版本,也有由Data Fellows公司包装上市的商品化版本。

把SSH的思路再往前推进一步,就到了认证和密钥分配系统。本质上,认证和密钥分配系统提供的是一个应用编程界面(API),它可以用来为任何网络应用程序提供安全服务,例如: 认证、数据机密性和完整性、访问控制以及非否认服务。目前已经有一些实用的认证和密钥分配系统,如: MIT的Kerberos(V4与V5),IBM的CryptoKnight和Netwrok Security Program,DEC的SPX,Karlsruhe大学的指数安全系统(TESS)等,都是得到广泛采用的实例。甚至可以见到对有些认证和密钥分配系统的修改和扩充。例如,SESAME和OSF DCE对Kerberos V5作了增加访问控制服务的扩充,Yaksha对Kerberos V5作了增加非否认服务的扩充。

关于认证和密钥分配系统的一个经常遇到的问题是关于它们在Internet上所受到的冷遇。一个原因是它仍要求对应用本身做出改动。考虑到这一点,对一个认证和密钥分配系统来说,提供一个标准化的安全API就显得格外重要。能做到这一点,开发人员就不必再为增加很少的安全功能而对整个应用程序大动手术了。因此,认证系统设计领域内最主要的进展之一就是制定了标准化的安全API,即通用安全服务API(GSS-API)。GSS-API(v1及v2)对于一个非安全专家的编程人员来说可能仍显得过于技术化了些,但德州Austin大学的研究者们开发的安全网络编程(SNP),把界面做到了比GSS-API更高的层次,使同网络安全性有关的编程更加方便了。


局域网在网络层有什么不安全的地方?

NAI公司 供稿

不安全的地方

由于局域网中采用广播方式,因此,若在某个广播域中可以侦听到所有的信息包,黑客就对可以对信息包进行分析,那么本广播域的信息传递都会暴露在黑客面前。

网络分段

网络分段是保证安全的一项重要措施,同时也是一项基本措施,其指导思想在于将非法用户与网络资源相互隔离,从而达到限制用户非法访问的目的。

网络分段可分为物理分段和逻辑分段两种方式:
物理分段通常是指将网络从物理层和数据链路层(ISO/OSI模型中的第一层和第二层)上分为若干网段,各网段相互之间无法进行直接通讯。目前,许多交换机都有一定的访问控制能力,可实现对网络的物理分段。逻辑分段则是指将整个系统在网络层(ISO/OSI模型中的第三层)上进行分段。例如,对于TCP/IP网络,可把网络分成若干IP子网,各子网间必须通过路由器、路由交换机、网关或防火墙等设备进行连接,利用这些中间设备(含软件、硬件)的安全机制来控制各子网间的访问。在实际应用过程中,通常采取物理分段与逻辑分段相结合的方法来实现对网络系统的安全性控制。


VLAN的实现


虚拟网技术主要基于近年发展的局域网交换技术(ATM和以太网交换)。交换技术将传统的基于广播的局域网技术发展为面向连接的技术。因此,网管系统有能力限制局域网通讯的范围而无需通过开销很大的路由器。

以太网从本质上基于广播机制,但应用了交换器和VLAN技术后,实际上转变为点到点通讯,除非设置了监听口,信息交换也不会存在监听和插入(改变)问题。

由以上运行机制带来的网络安全的好处是显而易见的:
信息只到达应该到达的地点。因此、防止了大部分基于网络监听的入侵手段。
通过虚拟网设置的访问控制,使在虚拟网外的网络节点不能直接访问虚拟网内节点。

但是,虚拟网技术也带来了新的安全问题:
执行虚拟网交换的设备越来越复杂,从而成为被攻击的对象。基于网络广播原理的入侵监控技术在高速交换网络内需要特殊的设置。基于MAC的VLAN不能防止MAC欺骗攻击。
采用基于MAC的VLAN划分将面临假冒MAC地址的攻击。因此,VLAN的划分最好基于交换机端口。但这要求整个网络桌面使用交换端口或每个交换端口所在的网段机器均属于相同的VLAN。


VLAN之间的划分原则

VLAN的划分方式的目的是保证系统的安全性。因此,可以按照系统的安全性来划分VLAN;可以将总部中的服务器系统单独划作一个VLAN,如数据库服务器、电子邮件服务器等。也可以按照机构的设置来划分VLAN,如将领导所在的网络单独作为一个Leader VLAN(LVLAN), 其他司局(或下级机构)分别作为一个VLAN,并且控制LVLAN与其他VLAN之间的单向信息流向,即允许LVLAN查看其他VLAN的相关信息,其他VLAN不能访问LVLAN的信息。VLAN之内的连接采用交换实现, VLAN与VLAN之间采用路由实现。由于路由控制的能力有限,不能实现LVLAN与其他VLAN之间的单向信息流动,需要在LVLAN与其他VLAN之间设置一个Gauntlet防火墙作为安全隔离设备,控制VLAN与VLAN之间的信息交流
LWIP_简记(7.tcpip_init()之tcpip_thread) LWIP一句话记住就行: 一项工程,两份配置,三种内存分配,四套操作API,五步初始化,六个"数据流",七个数据结构 ------------------------------------------- 接着上一篇的讲: /** * @ingroup lwip_os * Initialize this module: * - initialize all sub modules * - ... 阅读详情

相关推荐

图解AUTOSAR_CP_TcpIp

用逻辑图让晦涩艰深的AUTOSAR通俗易懂~AUTOSAR TcpIp模块是AUTOSAR通信栈中的核心组件,负责实现标准TCP/IP协议栈功能,为上层应用提供网络通信服务。该模块位于AUTOSAR通信栈的中间层,连接上层的Socket适配器(SoAd)和下层的以太网接口(EthIf),实现了OSI模型中的传输层和网络层功能。TcpIp模块为汽车电子控制单元(ECU)提供了标准化的网络通信能力,使ECU能够通过以太网与其他ECU或外部设备进行数据交换,支持诊断、软件更新、远程监控等多种应用场景。

一名留德华的,康德的信徒的,专注于汽车电子领域的博客 2482

后台数据量太大传输慢_TCP的可靠性传输是如何保证的

TCP的可靠性传输是如何保证的 系统总结TCP连接中,它是如何保证数据的传输01 前言我们之前介绍过TCP的连接比UDP连接复杂,也比较安全,但是我们想知道它是如何保证这些数据的安全的?数据的发送先后有什么秘诀呢?接下来我就一一去总结这些细节性的问题。02 保证数据安全的方法TCP主要提供了检验和、序列号/确认应答、超时重传、最大消息长度、滑动窗口控制等方法实现了可靠性传输。检验和通过检验和的方式...

weixin_39586265的博客 669

Matlab2018a崩溃解决的办法No sandbox or build area path

Matlab 2018a (No sandbox or build area path)出现崩溃后需要使用terminal进行如下操作: cd /home/david/MySoft/MATLAB/R2018a/bin/glnxa64 (你的matlab路径) mkdir exclude mv libfreetype* exclude/ 执行后图片如下: 如果你用的Windows系统,请手动按照上面步骤剔除了dll。 Matlab 2018a (No sandbox or build are

David Xiao 1万+

TCP/IP详解

TCP/IP内容整理TCP/IP不是一个协议,而是一个协议族的统称(TCP/IPProtocols),简称TCP/IP。TCP/IP协议族提供了点对点的连结机制,并且将传输数据帧的封装、寻址、传输、路由以及接收方式,都予以标准化。

啊唯的博客 1万+

PCIe链路训练Recovery状态机:从RcvrLock到链路稳定的关键路径

本文深入解析PCIe链路训练中的Recovery状态机,特别是RcvrLock状态的关键作用。从Block对齐、均衡预设值应用到状态转移条件,详细介绍了确保链路稳定的技术要点,并提供了高速率下的特殊处理方法和常见问题排查指南,帮助工程师解决PCIe链路不稳定问题。

weixin_28739079的博客 174

Java开源海外跨境电商购物商城源码,TikToK商城系统源码,外贸商城在线交易

最近很火的一款商城源码,朋友分享给我的,完整版,java开源代码,带有非常详细的搭建教程,文件都一个多G,喜欢的可以下载来研究研究!3、创建mall 数据库并导入数据,数据库名用户名为:mall 数据库密码保持为:XXKytcACPX3GbdsH。8、进入cd /data/deploy/mall-tool/目录执行./build.sh脚本。7、宝塔ssh进入cd /data/deploy/mall/ 执行./build.sh脚本。2、安装宝塔环境:安装 Redis、MySQL5.7、Ngin1.2。

百创科技 2821

关于 TCP/IP,必知必会的十个问题

本文整理了一些TCP/IP协议簇中需要必知必会的十大问题,既是面试高频问题,又是程序员必备基础素养。 TCP/IP十个问题 一、TCP/IP模型 TCP/IP协议模型(Transmission Control Protocol/Internet Protocol),包含了一系列构成互联网基础的网络协议,是Internet的核心协议。 基于TCP/IP的参考模型将协议分成四个层次,它们分别是链路...

weixin_34075268的博客 2万+

从原理到落地:Mamba-YOLOv8 全面实战指南(源码 + 训练 + 部署一次学会)

在目标检测领域,CNN与Transformer的较量从未停歇。本文提出一种革命性的架构——,将状态空间模型(SSM)首次引入YOLO框架。实验表明,该模型在COCO数据集上达到54.3% mAP@0.5,推理速度达89 FPS(RTX 4090),相比原版YOLOv8提升12.7%精度与23%速度。本文将完整揭示其技术原理与工程实现,助您掌握这一前沿技术。

FJN110的博客 119

一文讲透TCP/IP协议 | 图解+秒懂+史上最全

TCP/IP协议包含了一系列的协议,也叫TCP/IP协议族(TCP/IP Protocol Suite,或TCP/IP Protocols),简称TCP/IP。TCP/IP协议族提供了点对点的连结机制,并且将传输数据帧的封装、寻址、传输、路由以及接收方式,都予以标准化。

青春木鱼的博客 14万+

SST专题(2-4)MMC-SST 输入级的环流分析

本文分析了模块化多电平换流器(iMMC-SST)的输入级等效电路、子模块电容电压波动特性及环流抑制机理。研究表明:1)子模块电容电压波动包含基频和二倍频分量,与传统换流器相比波动幅值更大;2)环流主要由子模块电容电压波动在桥臂电感上激发的偶次谐波电流构成,呈频率越高幅值越小的特性;3)可通过增大桥臂电感或采用调制策略叠加抑制电压分量来有效控制环流。研究结果为MMC系统设计提供了理论依据。

嵌入式老牛的博客 585

第14.10章 高翔博士最新开源框架Lightning-LM源码解读(十):在线定位run_loc_online涉及到的核心模块总结

本文对Lightning-LM激光SLAM定位框架进行了全面剖析。该框架是一个轻量高效的激光雷达建图与定位系统,支持3D SLAM、动态图层管理等功能。文章首先介绍了项目概况和源码结构,包括核心模块如定位系统(loc_system)、激光匹配(lidar_loc)和位姿图优化(pose_graph)等。接着详细解析了各模块的关键函数和运行流程,如数据接收处理、NDT匹配和位姿优化等。最后总结了学习该框架所需的C++知识要点,包括智能指针、多线程编程等现代C++特性。该分析为SLAM开发者提供了实用的架构参考

行知SLAM 801

计算机网络协议

目录   一、计算机网络的发展历程      1、计算机网络发展      2、计算机的模式变化  二、各种协议      1、协议的重要性      2、协议的标准:OSI七层模型  三、TCP/IP协议      1、介绍      2、TCP/IP协议的发展历程      3、TCP/IP四层模型  四、IP协议      1、介绍      2、IP协议特点      3、IPV4和I...

littlerain666 1385

AI应用架构师视角:AI技术引发的全球经济格局重构,你看懂了吗?

本文将从AI应用架构师的独特视角,拆解AI技术栈(算力/算法/数据)如何通过"架构渗透"重塑产业价值链,分析中美欧等主要经济体的AI战略差异如何改写全球分工格局,并为企业与个人提供一套可落地的"AI经济适应性框架"。当OpenAI的GPT-4在代码生成、多模态理解上展现出超越人类的能力,当英伟达的H100芯片成为全球科技巨头争抢的"数字石油",当中国的AI大模型在电商、金融等场景实现规模化落地——我们正站在一场由AI技术引发的全球经济重构的临界点上。AI重构全球经济格局的过程,既是挑战,更是机遇。

小白菜的博客 1258

TcpIp (TCP/IP Stack)

AUTOSAR的TcpIp(Transmission Control Protocol/Internet Protocol)模块为汽车电子系统提供了一套高效、可靠的网络通信和连接管理解决方案。通过标准化的接口和协议栈操作,TcpIp实现了网络接口管理、数据传输、连接管理、事件处理及错误检测等功能,确保网络通信的稳定性和安全性。在车载网络通信、远程诊断和更新、数据采集和传输及实时通信等应用场景中,TcpIp模块发挥着至关重要的作用。

erroror的专栏 1665

掌握 Unity 中的状态机:综合指南

最后,将拥有一个由状态机驱动的功能齐全的播放器控制器,可以集成到自己的项目中。此外,状态机有助于实现复杂的人工智能、玩家控制、动画系统等,从而形成更强大、更灵活的游戏架构。状态机是计算机科学和游戏开发中的一个基本概念,它通过定义一组有限的状态及其之间的转换来模拟实体的行为。你可以定义常见的状态行为,例如 Enter、Update 和 Exit 方法,确保整个状态机架构的一致性和连贯性。由于前面提到的状态类扩展了 BaseState 类,因此我们可以为具有不同状态的不同对象创建单独的类。

yolo模型训练找我,AI游戏合作找我 1451

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

LwIP源码分析(2):tcpip_init和tcpip_thread函数分析

中等待消息队列阻塞时释放这个锁,等待完这个队列,无论有没有消息到来,函数内容如下(各个初始化需要打开相应的宏定义,这里略去。已经阻塞死等,此时用户可以调用部分LwIP内核函数。返回后就立即上锁,因为在此期间。

主要分享嵌入式软件、人工智能部分知识 7575

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

LwIP内核启动探秘:从tcpip_init到tcpip_thread的协议栈构建之路

本文深入解析LwIP协议栈的启动过程,从tcpip_init函数的基础初始化到tcpip_thread线程的核心运转机制。通过源码分析,揭示内存管理、消息驱动模型和锁机制的设计艺术,并提供实战中的优化技巧与陷阱规避方法,帮助开发者高效构建稳定的网络协议栈。

weixin_30924087的博客 317

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

【AUTOSAR以太网】TcpIp简介

TcpIp 实现以太网通信服务的网络层和传输层协议。TcpIp 模块与 AUTOSAR 软件架构中其他模块之间的关系如下所示:从图中可以看出, TcpIp 内部包含多功能子模块,所有模块组合起来实现了 TcpIp 协议簇的主要内容。TcpIp 模块与其它 AUTOSAR 软件模块主要通过接口调用来实现数据发送,通过回调函数实现数据接收和事件通知。TcpIp 模块主要与四个模块之间存在接口交互。底层模块是 EthIf, 为 TcpIp 提供以太网帧的收发服务。

JJCar 的博客 958

TCPIP网络编程尹圣雨源码资源介绍:助力网络编程学习与实践

TCPIP网络编程尹圣雨源码资源介绍:助力网络编程学习与实践 去发现同类优质开源项目:https://gitcode.com/ 《TCPIP网络编程尹圣雨源码资源》是《TCPIP 网络编程》一书的配套源码,核心功能在于帮助读者通过实践来深入理解和掌握TCP/IP网络编程的相关知识。 项目介绍 《TCPIP网络编程尹圣雨源码资源》是一个开源项目,提供了《TCPIP 网络编程》一书的全部示例程序源码。...

gitblog_06704的博客 675

TCPIP协议(ppt)资源下载介绍

TCPIP协议(ppt)资源下载介绍 去发现同类优质开源项目:https://gitcode.com/ 此仓库提供了关于TCPIP协议的详细讲解幻灯片(ppt格式)。以下是该资源文件的详细信息: TCPIP协议(ppt)TCPIP协议(ppt)TCPIP协议(ppt)TCPIP协议(ppt)TCPIP协议(ppt)TCPIP协议(ppt)TCPIP协议(ppt)TCPIP协议(ppt)TCPIP协...

gitblog_06769的博客 462

tcpip协议_网络安全基础入门之TCPIP协议安全和网络攻击方式

一、TCPIP协议安全隐患1、缺乏数据源验证2、缺乏完整验证3、缺乏机密性保证物理层: 比如线路损害,光纤网线损害及侦听等。链路层: MAC欺骗、MAC泛洪、ARP欺骗网络层:IP欺骗、Smurf攻击、ICMP攻击、地址扫描传输层: TCP欺骗、拒绝服务、UDP拒绝服务应用层:漏洞、病毒、木马二、协议安全及相关攻击方式1、MAC欺骗原理攻击者通过伪造的源Mac地址数据包发送给交换机,造成交换机学习...

weixin_39996798的博客 1032

移远4G模块TCPIP协议AT指令说明文档

移远4G模块TCPIP协议AT指令说明文档 【下载地址】移远4G模块TCPIP协议AT指令说明文档 本开源项目提供了移远4G模块在TCPIP协议栈下的AT指令详细说明文档,帮助用户快速掌握并高效使用相关指令。文档涵盖了所有关键指令及其功能说明,适合具备基础AT指令知识的开发者。通过本指南,用户无需深入了解协议栈底层实现,...

gitblog_06765的博客 1083

TCPIP网络基础知识

1、OSI七层模型及数据传输过程 物理层 解决问题:实现两台机器互联,机器和机器之间是怎么通信? 1.两台机器互联的物理链路,物理介质。网线(双绞线)光纤、无线电波---基本连接 2.存在形式:01001二进制形式存在,电信号、比特流 数据链路层 解决问题:01010比特流其实是没有什么意思的数据,变成有意义的数据呢?确认这个数据是发给我的呢? 比特流进行处理:分组。8位为一组,一个字节,依次按顺序发送数据。 数据格式:帧 定义发送地址,MAC地址---网卡-.

诗诗的远方 7285
上一篇: Windows 2000下的Raw Socket编程
下一篇: 如何迅速成为Java高手 [转]
icemanpro
博客等级 码龄25年 4粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值