TCP/IP协议基础
-------------------------------------------------------------------------------- 1、TCP/IP协议栈 四层模型 网络接口层 互联层 传输层 应用层 网络接口技术 串行线路协议 2、ARP 要在网络上通信,主机就必须知道对方主机的硬件地址(我们不是老遇到网卡的物理地址嘛)。地址解析就是将主机IP地址映射为硬件地址的过程。地址解析协议ARP用于获得在同一物理网络中的主机的硬件地址。 解释本地IP地址(要了解地址解析工作过程的朋友看好了) 解析远程IP地址 ARP缓存 ARP缓存总是为本地子网保留硬件广播地址(0xffffffffffffh)作为一个永久项。 加入静态(永久)记录 ARP包的结构 3、ICMP和IGMP internet控制消息协议ICMP是用于报告错误并代表IP对消息进行控制。 ICMP ICMP数据包结构 IGMP IGMP包结构 4、IP IP是一个无连接的协议,主要就是负责在主机间寻址并为数据包设定路由,在交换数据前它并不建立会话。因为它不保证正确传递,另一方面,数据在被收到时,IP不需要收到确认,所以它是不可靠的。 5、TCP TCP是一种可靠的面向连接的传送服务。它在传送数据时是分段进行的,主机交换数据必须建立一个会话。它用比特流通信,即数据被作为无结构的字节流。 端口 套接字 TCP端口 TCP的三次握手 TCP滑动窗口 6、UDP 用户数据报协议UDP提供了无连接的数据报服务。它适用于无须应答并且通常一次只传送少量数据的应用软件。 UDP端口 IP地址分配 1、IP地址 IP地址标识着网络中一个系统的位置。我们知道每个IP地址都是由两部分组成的:网络号和主机号。其中网络号标识一个物理的网络,同一个网络上所有主机需要同一个网络号,该号在互联网中是唯一的;而主机号确定网络中的一个工作端、服务器、路由器其它TCP/IP主机。对于同一个网络号来说,主机号是唯一的。每个TCP/IP主机由一个逻辑IP地址确定。 网络号和主机号 2、地址类型 为适应不同大小的网络,internet定义了5种IP地址类型。 3、地址分配指南 在分配网络号和主机号时应遵守以下几条准则: 分配网络号 分配主机号 有效的主机号 4、子网屏蔽和IP地址 TCP/IP上的每台主机都需要用一个子网屏蔽号。它是一个4字节的地址,用来封装或“屏蔽”IP地址的一部分,以区分网络号和主机号。当网络还没有划分为子网时,可以使用缺省的子网屏蔽;当网络被划分为若干个子网时,就要使用自定义的子网屏蔽了。 缺省值 确定数据包的目的地址 建立子网 1、 子网简介 一个网络实际上可能会有多个物理网段,我们把这些网段称之为子网,其使用的IP地址是由某个网络号派生而得到的。 (2) 克服当前技术的限制,比如突破每段主机的最大数量限制。 实现子网划分 子网屏蔽位 2、定义子网屏蔽 3、定义子网号 4、定义子网中的主机号 -------------------------------------------------------------------------------- 实现IP路由 1、IP路由简介 路由就是选择一条数据包传输路径的过程。当TCP/IP主机发送IP数据包时,便出现了路由,且当到达IP路由器还会再次出现。路由器是从一个物理网向另一个物理网发送数据包的装置,路由器通常被称为网关。对于发送的主机和路由器而言,必须决定向哪里转发数据包。在决定路由时,IP层查询位于内存中的路由表。 -------------------------------------------------------------------------------- TCP/IP协议介绍 TCP/IP的通讯协议 这部分简要介绍一下TCP/IP的内部结构,为讨论与互联网有关的安全问题打下基础。TCP/IP协议组之所以流行,部分原因是因为它可以用在各种各样的信道和底层协议(例如T1和X.25、以太网以及RS-232串行接口)之上。确切地说,TCP/IP协议是一组包括TCP协议和IP协议,UDP(User Datagram Protocol)协议、ICMP(Internet Control Message Protocol)协议和其他一些协议的协议组。 TCP/IP整体构架概述 TCP/IP协议并不完全符合OSI的七层参考模型。传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这7层是:物理层、数据链路层、网路层、传输层、话路层、表示层和应用层。而TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。这4层分别为: 应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。 传输层:在此层中,它提供了节点间的数据传送服务,如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。 互连网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。 网络接口层:对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet、Serial Line等)来传送数据。 以下简单介绍TCP/IP中的协议都具备什么样的功能,都是如何工作的: 1. IP 网际协议IP是TCP/IP的心脏,也是网络层中最重要的协议。 IP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层---TCP或UDP层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。 高层的TCP和UDP服务在接收数据包时,通常假设包中的源地址是有效的。也可以这样说,IP地址形成了许多服务的认证基础,这些服务相信数据包是从一个有效的主机发送来的。IP确认包含一个选项,叫作IP source routing,可以用来指定一条源地址和目的地址之间的直接路径。对于一些TCP和UDP的服务来说,使用了该选项的IP包好象是从路径上的最后一个系统传递过来的,而不是来自于它的真实地点。这个选项是为了测试而存在的,说明了它可以被用来欺骗系统来进行平常是被禁止的连接。那么,许多依靠IP源地址做确认的服务将产生问题并且会被非法入侵。 2. TCP 如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向‘上’传送到TCP层。TCP将包排序并进行错误检查,同时实现虚电路间的连接。TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。 TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序。应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物理介质,最后到接收方。 面向连接的服务(例如Telnet、FTP、rlogin、X Windows和SMTP)需要高度的可靠性,所以它们使用了TCP。DNS在某些情况下使用TCP(发送和接收域名数据库),但使用UDP传送有关单个主机的信息。 3.UDP UDP与TCP位于同一层,但对于数据包的顺序错误或重发。因此,UDP不被应用于那些使用虚电路的面向连接的服务,UDP主要用于那些面向查询---应答的服务,例如NFS。相对于FTP或Telnet,这些服务需要交换的信息量较小。使用UDP的服务包括NTP(网落时间协议)和DNS(DNS也使用TCP)。 欺骗UDP包比欺骗TCP包更容易,因为UDP没有建立初始化连接(也可以称为握手)(因为在两个系统间没有虚电路),也就是说,与UDP相关的服务面临着更大的危险。 4.ICMP ICMP与IP位于同一层,它被用来传送IP的的控制信息。它主要是用来提供有关通向目的地址的路径信息。ICMP的‘Redirect’信息通知主机通向其他系统的更准确的路径,而‘Unreachable’信息则指出路径有问题。另外,如果路径不可用了,ICMP可以使TCP连接‘体面地’终止。PING是最常用的基于ICMP的服务。 5. TCP和UDP的端口结构 TCP和UDP服务通常有一个客户/服务器的关系,例如,一个Telnet服务进程开始在系统上处于空闲状态,等待着连接。用户使用Telnet客户程序与服务进程建立一个连接。客户程序向服务进程写入信息,服务进程读出信息并发出响应,客户程序读出响应并向用户报告。因而,这个连接是双工的,可以用来进行读写。 两个系统间的多重Telnet连接是如何相互确认并协调一致呢?TCP或UDP连接唯一地使用每个信息中的如下四项进行确认: 源IP地址---发送包的IP地址。 目的IP地址---接收包的IP地址。 源端口---源系统上的连接的端口。 目的端口---目的系统上的连接的端口。 端口是一个软件结构,被客户程序或服务进程用来发送和接收信息。一个端口对应一个16比特的数。服务进程通常使用一个固定的端口,例如,SMTP使用25、Xwindows使用6000。这些端口号是‘广为人知’的,因为在建立与特定的主机或服务的连接时,需要这些地址和目的地址进行通讯。 -------------------------------------------------------------------------------- TCP/IP远程访问操作 TCP/IP网络通信软件包使用远程访问的命令,这些命令首先是由UC Berkely为Arpanet开发的。它允许您远程注册到另一个系统中,并从一个系统复制文件到另一个系统。您能取得关于一个系统的信息,比如当前谁正在注册使用。调用一个系统的地址时,这些远程命令使用域名或IP地址。和TCP/IP远程访问命令一样,域名地址开始好是为在Arpanet上使用而设计。 许多TCP/IP命令可以和用在Internet上的网络通信功能相比较。例如,用TCP/IP命令rlogin可以远程注册到一个系统,它和telnet相似。rcp命令能远程复制文件,它执行和ftp相同的功能。TCP/IP命令的不同之处是它们提供给用户的易用和易控制性。您能很容易地访问在不同的Unix或Linux系统中的帐号,并且能控制访问这些帐号但没有提供口令的用户。事实上您能提供给不同的用户提供关于您的帐号的一种组权限。 一、TCP/IP网络系统信息:rwho,uptime和ping 这些命令是一些TCP/IP命令,通过它们,您能从网络中的不同系统上取得信息。您能找到谁正在注册,得到另一个系统中用户的信息,或查询一个系统是否正在运行。例如,rwho命令和who命令的功能很相似。它显示网络中的每个系统的当前注册的用户。 $rwho violet robert:tty1 Sept 10 10:34 garnet chris:tty2 Sept 10 09:22 命令ruptime可以显示网络中的每个系统的信息。此信息能显示出每个系统是如何执行。ruptime显示系统是否运行,它运行了多久,系统中的用户数和系统在最后5、10和15分钟内的系统负荷。 $ruptime violet up 11+04:10, 8 users, load 1.20 1.10 garnet up 11+04:10, 20 users, load 1.50 1.30 命令ping能检测出系统是否启动和运行。ping命令加上您想检测的系统名做为参数,下面的例子将检测violet是否启动并连接在网络中。 $ping violet violet is alive $ 如果您想检测的系统已经关机,将得到一个如下的响应。这种情况下,garnet是关闭并没有连接到网络中。 $ping garnet no answer from garnet $ 二、远程访问权限:.rhosts 您能用.rhosts文件控制使用TCP/IP命令对您帐号的访问。用户能用标准的编辑器象Vi来创建他们帐号中的.rhosts文件。它必须位于用户的主目录。下面的例子中,使用者显示文件.rhosts文件的内容。 $cat.rhosts garnet chris ciolet robert 使用.rhosts文件是一种允许用户不提供口令而访问您的系统的简单方法。如果需要禁止此用户访问,只须简单地从文件.rhost中删除系统各和用户注册名。如果一个用户的注册名和系统名在文件.rhost中,那么此用户即呆不提供口令直接访问系统。并不是所有的远程注册操作都需要这种访问形式(您能用输入口令的方式来替代);但一些远程命令要求有.rhosts文件,象远程复制文件或远程执行Linux命令。如果您想在远程系统的帐号中招待这些命令,此帐号的.rhosts文件中必须有您 的注册名和系统名。 通过.rhosts对某一系统进行访问时,也允许您使用TCP/IP命令直接访问系统中您的其他帐号。您不需要先注册到这些帐号中。可以把系统中您的其他帐号做为当前注册帐号的扩展。不管文件牌佻 的哪个账号下,都可以用frcp命令从一个目录复制到另一个目录。用命令rsh,可以在您的其他帐号中招待任何Linux命令。 三、远程注册:rlogin 您可能在网络中的不同系统上都有自己的帐号,或者可以访问别人在另一个系统上的帐号。要访问别的系统中的帐号,首先要注册到您的系统中,接着通过网络远程注册到帐号所在的系统中。用命令rlogin可以远程注册支别的系统。命令的参数应是一个系统名。命令将把您连接到另一个系统中并开始注册的过程. 用rlogin的注册过程和一般的注册过程有所不同,用rlogin时用户不被提示输入注册名。rlogin假设您的本地系统中的注册名和远程系统中的一致。所以象上面执行rlogin命令时,您将马上被提示输入口令。输入口令后,您即可进入远程系统各的帐号。 用rlogin假设注册各是相同的,因为大多数的人用rlogin访问别的系统中的注册名一般和本地的注册名是相同的。然而,当远程系统中的注册名和本地系统的不同时,选项1-允许您输入远程系统帐户的不同的注册名。语法如下所示: $rlogin sys tem-name -1 login-name 在下面的例子中,用户使用注册名robert注册到violet的系统中。 $rlogin violet-1 robert password $ : 一旦注册到远程系统中,您能执行任何命令。可以用exit、CTRL-d或logout(TCSH或C-shell)结束连接。 四、远程复制文件:rcp 您能用命令rcp从远程系统复制文件到本地系统中。rcp执行文件传输的功能,它的操作和cp命令很相似,但它是通过网络连接到另一系统。执行命令rcp时要求远程系统的。rhosts文件中有您的本地系统名和注册各。命令rcp用关键字rcp开头,参数为源文件名和复制的目标文件名。为了指定文件在远程系统中,您需要在文件名前放置一个系统名,两者之间用冒号分隔,如下所示: $rcp sys tem-name:source-file slystem-name:copy-file 当复制一个文件到远程系统中时,复制的目标文件是远程文件,它要求带有系统名。而源文件在您的本机系统中,不要求系统名: $rcp source-file remote-sys tem-name:copy-file 在下面的例子中,用户从自己的系统中复制文件weather到远程系统violet并重命名为monday. $rcp weather violet:Monday 从远程系统中复制一个文件到本地时,源文件是远程文件,它要求带有系统名。而复制的目标文件在您的本机系统中,不要求系统名: $rcp remote-sys tem-name:source-file copy-file 在下面的例子中,用户从远程系统之间复制整个目录。rcp命令加上-r选项将从一个系统复制一个目录和它的子目录到另一个系统。象cp命令一样,rcp要求一个源目录和复制目录。在远程系统中的目录要求系统名和一个以分隔系统名和目录名的冒号,以及目录名。当从您的系统复制目录到一个远程系统,则在远程系统中的复制目录需要远程系统名。 $rcp -r source-directory remote-sys tem-name:copy-directory 在下面的例子中,使用者把目录letters复制到远程系统violet中的目录oldnotes中。 $rcp-r letters violetldnotes 当从您的系统复制一个远程系统中的目录到本地时,在远程系统中的源目录需要远程系统名。 $rcp-r remote-sys tem-name:source-directory copy-directory 在下面的例子中,使用者把远程系统violet中的目录birthdays复制到本地的目录party中。 $rcp-r violet:birthdays party 同时,您可以用星号指定名字,或用圆点引用当前目录。对于Shell的特殊字符,是由您的本地系统进行解释转换,而不是远程系统。为了使远程系统解释转换一个特定字符,您必须通进某种方式引用它。为了复制远程系统种所有带扩展名.c的文件到您的系统中,您需要用特殊字符-星号:*.c来指定所有的带扩展名.c的文件。您必须注意引用星号的方式。下面的例子中,在系统violet中的带.c扩展名的文件被复制到使用者的系统中。注意,星号是通过一个反斜杠引用。而最后的圆点,表示当前的目录,并没被引用。它是由您的本地系统解释并转换的。 $rcp violet:\*.c 下面的例子中,目录report将从使用者的本地系统复制到远程系统的当前目录中。注意圆点被引用,它将被远程系统解释转换。 $rcp -r reports violet:\. 五、远程执行:rsh 您可能需要在远程系统中执行一个命令。rsh命令将在远程Linux系统上执行一个命令并把结果显示到您的系统中。当然,您的系统名和注册名必须在远程系统的.rhosts文件中,命令rsh有两个一般的参数,一个系统名和一个Linux命令。语法如下所示: $rsh remote-sytem-neame Linux-command 在下面的例子中,rsh命令将在远程系统violet中执行一个ls命令以列出在violet中目录/home/robert中的文件。 $rsh violet ls /home/robert 除非是引用特定字符,否则它将被本李系统解释转换,对于控制标准输出的特殊字符更是如此,象重定向或管道字符。下面的例了中列出远程系统上的文件,并把它们送到本系统中的标准输出。重定向操作由本地系统解释,并把输出改向到本地系统中的文件myfiles中。 $rsh violet ls /home/robert>;myfiles 如您引用一个特定字符,它将成为Linux命令的一部分被远程系统解释。引用重定向操作符将允许您在远程系统中执行重定向操作。下面的例子中,引用一个重定向操作符。它变成Linux命令的一部分,包括命令的参数,文件名myfile。命令ls产生一列文件名并把它们重定向到远程系统中的一个文件myfile中。 $rsh violet ls /home/robert‘>;‘myfiles 对于管道操作也是如此。下面例子中第一个命令输出一列文件到本地的打印机中。标准的输出能过管道输出到您的在线打印机中。第二个命令中,一列文件将输出远程系统的打印机上。管道线被远程系统解释。输送标准输出到远程系统的打印机上。 -------------------------------------------------------------------------------- (安全篇) TCP/IP的层次不同提供的安全性也不同,例如,在网络层提供虚拟私用网络,在传输层提供安全套接服务。下面将分别介绍TCP/IP不同层次的安全性和提高各层安全性的方法。 一、Internet层的安全性 对Internet层的安全协议进行标准化的想法早就有了。在过去十年里,已经提出 了一些方案。例如,“安全协议3号(SP3)”就是美国国家安全局以及标准技术协 会作为“安全数据网络系统(SDNS)”的一部分而制定的。“网络层安全协议(NLS P)”是由国际标准化组织为“无连接网络协议(CLNP)”制定的安全协议标准。 “集成化NLSP(I-NLSP)”是美国国家科技研究所提出的包括IP和CLNP在内的统一 安全机制。SwIPe是另一个Intenet层的安全协议,由Ioannidis和Blaze提出并实 现原型。所有这些提案的共同点多于不同点。事实上,他们用的都是IP封装技术。 其本质是,纯文本的包被加密,封装在外层的IP报头里,用来对加密的包进行In ternet上的路由选择。到达另一端时,外层的IP报头被拆开,报文被解密,然后 送到收报地点。 Internet工程特遣组(IETF)已经特许Internet协议安全协议(IPSEC)工作组对IP安 全协议(IPSP)和对应的Internet密钥管理协议(IKMP)进行标准化工作。IPSP的主 要目的是使需要安全措施的用户能够使用相应的加密安全体制。该体制不仅能在 目前通行的IP(IPv4)下工作,也能在IP的新版本(IPng或IPv6)下工作。该体制应 该是与算法无关的,即使加密算法替换了,也不对其他部分的实现产生影响。此 外,该体制必须能实行多种安全政策,但要避免给不使用该体制的人造成不利影 响。按照这些要求,IPSEC工作组制订了一个规范:认证头(Authentication Hea der,AH)和封装安全有效负荷(Encapsulating Security Payload,ESP)。简言之, AH提供IP包的真实性和完整性,ESP提供机要内容。 IP AH指一段消息认证代码(Message Authentication Code,MAC),在发送IP包之 前,它已经被事先计算好。发送方用一个加密密钥算出AH,接收方用同一或另一 密钥对之进行验证。如果收发双方使用的是单钥体制,那它们就使用同一密钥; 如果收发双方使用的是公钥体制,那它们就使用不同的密钥。在后一种情形,AH 体制能额外地提供不可否认的服务。事实上,有些在传输中可变的域,如IPv4中 的time-to-live域或IPv6中的hop limit域,都是在AH的计算中必须忽略不计的。 RFC 1828首次规定了加封状态下AH的计算和验证中要采用带密钥的MD5算法。而与 此同时,MD5和加封状态都被批评为加密强度太弱,并有替换的方案提出。 IP ESP的基本想法是整个IP包进行封装,或者只对ESP内上层协议的数据(运输状 态)进行封装,并对ESP的绝大部分数据进行加密。在管道状态下,为当前已加密 的ESP附加了一个新的IP头(纯文本),它可以用来对IP包在Internet上作路由选择。 接收方把这个IP头取掉,再对ESP进行解密,处理并取掉ESP头,再对原来的IP包 或更高层协议的数据就象普通的IP包那样进行处理。RFC 1827中对ESP的格式作了 规定,RFC 1829中规定了在密码块链接(CBC)状态下ESP加密和解密要使用数据加 密标准(DES)。虽然其他算法和状态也是可以使用的,但一些国家对此类产品的进 出口控制也是不能不考虑的因素。有些国家甚至连私用加密都要限制。 AH与ESP体制可以合用,也可以分用。不管怎么用,都逃不脱传输分析的攻击。人 们不太清楚在Internet层上,是否真有经济有效的对抗传输分析的手段,但是在 Internet用户里,真正把传输分析当回事儿的也是寥寥无几。 1995年8月,Internet工程领导小组(IESG)批准了有关IPSP的RFC作为Internet标 准系列的推荐标准。除RFC 1828和RFC 1829外,还有两个实验性的RFC文件,规定 了在AH和ESP体制中,用安全散列算法(SHA)来代替MD5(RFC 1852)和用三元DES代 替DES(RFC 1851)。 在最简单的情况下,IPSP用手工来配置密钥。然而,当IPSP大规模发展的时候,就需要在Internet上建立标准化的密钥管理协议。这个密钥管理协议按照IPSP安全条例的要求,指定管理密钥的方法。 IBM 提出的“标准密钥管理协议(MKMP)” 在这里需要再次强调指出,这些协议草案的相似点多于不同点。除MKMP外,它们都要求一个既存的、完全可操作的公钥基础设施(PKI)。MKMP没有这个要求,因为它假定双方已经共同知道一个主密钥(Master Key),可能是事先手工发布的。SK IP要求Diffie-Hellman证书,其他协议则要求RSA证书。 1996年9月,IPSEC决定采用OAKLEY作为ISAKMP框架下强制推行的密钥管理手段, 采用SKIP作为IPv4和IPv6实现时的优先选择。目前已经有一些厂商实现了合成的 ISAKMP/OAKLEY方案。 Photuris以及类Photuris的协议的基本想法是对每一个会 话密钥都采用Diffie-Hellman密钥交换机制,并随后采用签名交换来确认Diffie --Hellman参数,确保没有“中间人”进行攻击。这种组合最初是由Diffie、Oos chot和Wiener在一个“站对站(STS)”的协议中提出的。Photuris里面又添加了一 种所谓的“cookie”交换,它可以提供“清障(anti-logging)”功能,即防范对 服务攻击的否认。 Photuris以及类Photuris的协议由于对每一个会话密钥都采用Diffie-Hellman密 钥交换机制,故可提供回传保护(back-traffic protection,BTP)和完整转发安 全性(perfect-forward secrecy,PFS)。实质上,这意味着一旦某个攻击者破解 了长效私钥,比如Photuris中的RSA密钥或SKIP中的Diffie-Hellman密钥,所有其 他攻击者就可以冒充被破解的密码的拥有者。但是,攻击者却不一定有本事破解 该拥有者过去或未来收发的信息。 值得注意的是,SKIP并不提供BTP和PFS。尽管它采用Diffie-Hellman密钥交换机 制,但交换的进行是隐含的,也就是说,两个实体以证书形式彼此知道对方长效 Diffie--Hellman 公钥,从而隐含地共享一个主密钥。该主密钥可以导出对分组 密钥进行加密的密钥,而分组密钥才真正用来对IP包加密。一旦长效Diffie-Hel lman密钥泄露,,则任何在该密钥保护下的密钥所保护的相应通信都将被破解。 而且SKIP是无状态的,它不以安全条例为基础。每个IP包可能是个别地进行加密 和解密的,归根到底用的是不同的密钥。 SKIP不提供BTP和PFS这件事曾经引起IPSEC工作组内部的批评,该协议也曾进行过 扩充,试图提供BTP和PFS。但是,扩充后的SKIP协议版本其实是在BTP和PFS功能 的提供该协议的无状态性之间的某种折衷。实际上,增加了BTP和PFS功能的SKIP 非常类似于Photuris以及类Photuris的协议,唯一的主要区别是SKIP(仍然)需要 原来的Diffie-Hellman证书。这一点必须注意:目前在Internet上,RSA证书比其 他证书更容易实现和开展业务。 大多数IPSP及其相应的密钥管理协议的实现均基于Unix系统。任何IPSP的实现都 必须跟对应协议栈的源码纠缠在一起,而这源码又能在Unix系统上使用,其原因 大概就在于此。但是,如果要想在Internet上更广泛地使用和采纳安全协议,就 必须有相应的DOS或Windows版本。而在这些系统上实现Internet层安全协议所直 接面临的一个问题就是,PC上相应的实现TCP/IP的公共源码资源什么也没有。为 克服这一困难,Wagner和Bellovin实现了一个IPSEC模块,它象一个设备驱动程序 一样工作,完全处于IP层以下。 Internet层安全性的主要优点是它的透明性,也就是说,安全服务的提供不需要 应用程序、其他通信层次和网络部件做任何改动。它的最主要的缺点是: Intern et层一般对属于不同进程和相应条例的包不作区别。对所有去往同一地址的包, 它将按照同样的加密密钥和访问控制策略来处理。这可能导致提供不了所需的功 能,也会导致性能下降。针对面向主机的密钥分配的这些问题,RFC 1825允许(甚 至可以说是推荐) 使用面向用户的密钥分配,其中,不同的连接会得到不同的加 密密钥。但是,面向用户的密钥分配需要对相应的操作系统内核作比较大的改动。 虽然IPSP的规范已经基本制订完毕,但密钥管理的情况千变万化,要做的工作还 很多。尚未引起足够重视的一个重要的问题是在多播 (multicast)环境下的密钥 分配问题,例如,在Internet多播骨干网(MBone)或IPv6网中的密钥分配问题。 简而言之,Internet层是非常适合提供基于主机对主机的安全服务的。相应的安 全协议可以用来在Internet上建立安全的IP通道和虚拟私有网。例如,利用它对 IP包的加密和解密功能,可以简捷地强化防火墙系统的防卫能力。事实上,许多厂商已经这样做了。RSA数据安全公司已经发起了一个倡议,来推进多家防火墙和 TCP/IP软件厂商联合开发虚拟私有网。该倡议被称为S-WAN(安全广域网)倡议。其 目标是制订和推荐Internet层的安全协议标准。 二、传输层的安全性 在Internet应用编程序中,通常使用广义的进程间通信(IPC)机制来与不同层次的 安全协议打交道。比较流行的两个IPC编程界面是BSD Sockets和传输层界面(TLI), 在Unix系统V命令里可以找到。 在Internet中提供安全服务的首先一个想法便是强化它的IPC界面,如BSD Socke ts等,具体做法包括双端实体的认证,数据加密密钥的交换等。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)。另一免费的S SL实现叫做SSLeay。SSLref和SSLeay均可给任何TCP/IP应用提供SSL功能。Inter net号码分配当局(IANA)已经为具备SSL功能的应用分配了固定端口号,例如,带 SSL的 HTTP(https)被分配的端口号为443,带SSL的SMTP(ssmtp)被分配的端口号 为465,带SSL的NNTP(snntp)被分配的端口号为563。 微软推出了SSL2的改进版本称为PCT(私人通信技术)。至少从它使用的记录格式来 看,SSL和PCT是十分相似的。它们的主要差别是它们在版本号字段的最显著位(T he 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) 建立一个符合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和D SS。 目前还没有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国际和微软已经同意联手推出I nternet上的安全信用卡交易服务。他们发布了相应的安全电子交易(SET)协议, 其中规定了信用卡持卡人用其信用卡通过Internet进行付费的方法。这套机制的 后台有一个证书颁发的基础结构,提供对X.509证书的支持。 上面提到的所有这些加安全功能的应用都会面临一个主要的问题,就是每个这样 的应用都要单独进行相应的修改。因此,如果能有一个统一的修改手段,那就好 多了。通往这个方向的一个步骤就是赫尔辛基大学的Tatu Yloenen开发的安全sh ell(SSH)。SSH允许其用户安全地登录到远程主机上,执行命令,传输文件。它实 现了一个密钥交换协议,以及主机及客户端认证协议。SSH有当今流行的多种Uni x系统平台上的免费版本,也有由Data Fellows公司包装上市的商品化版本。 把SSH的思路再往前推进一步,就到了认证和密钥分配系统。本质上,认证和密钥 分配系统提供的是一个应用编程界面(API),它可以用来为任何网络应用程序提供 安全服务,例如: 认证、数据机密性和完整性、访问控制以及非否认服务。目前 已经有一些实用的认证和密钥分配系统,如: MIT的Kerberos(V4与V5),IBM的Cr yptoKnight和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更高的层次,使同网络安全性有关的编程更加方便了。 |
【TCP/IP协议基础】
时间: 2024-12-20 05:52:02
【TCP/IP协议基础】的相关文章
(转) HTTP &; HTTPS网络协议重点总结(基于SSL/TLS的握手、TCP/IP协议基础、加密学)
HTTP & HTTPS网络协议重点总结(基于SSL/TLS的握手.TCP/IP协议基础.加密学) 原文:http://blog.csdn.net/itermeng/article/details/78517364 原文地址:https://www.cnblogs.com/liujiacai/p/8325931.html
TCP/IP协议简介
计算机网络是什么? 简单地理解,计算机网络的任务就是传输数据.为了完成这一复杂的任务,国际标准化组织ISO提供了OSI参考模型,这种模型把互联网网络氛围7层,分别是物理层.数据链路层.网络层.传输层.会话层.表示层和应用层.每个曾有明确的分工,并且在层与层之间,下层为上层提供服务.这种分层的思想简化了网络系统的设计过程,例如在设计应用层时候只需要考虑创建满足用户实际需求的应用:在设计传输层时,只需要考虑如何在两个主机之间传输数据:在设计网络层时,只需要考虑如何在网络上找到一条发送数据的路径,即路
Linux程序设计学习笔记----Socket网络编程基础之TCP/IP协议簇
转载请注明出处: ,谢谢! 内容提要 本节主要学习网络通信基础,主要涉及的内容是: TCP/IP协议簇基础:两个模型 IPv4协议基础:IP地址分类与表示,子网掩码等 IP地址转换:点分十进制\二进制 TCP/IP协议簇基础 OSI模型 我们知道计算机网络之中,有各种各样的设备,那么如何实现这些设备的通信呢? 显然是通过标准的通讯协议,但是,整个网络连接的过程相当复杂,包括硬件.软件数据封包与应用程序的互相链接等等,如果想要写一支将联网全部功能都串连在一块的程序,那么当某个小环节出现问题时,整只
【TCP/IP 协议】 TCP/IP 基础
总结 : 通过学习 TCP/IP 基础, 并总结相关笔记 和 绘制思维导图 到博客上, 对 TCP/IP 框架有了大致了解, 之后开始详细学习数据链路层的各种细节协议, 并作出笔记; 博客地址 : http://blog.csdn.net/shulianghan/article/details/40045487 一. TCP/IP 分层 思维导图 : TCP / IP 四层简介 : -- 应用层 : Telnet, FTP, SMTP, SNMP, DNS, URI, HTML, HTTP 等协
TCP/IP协议(一)网络基础知识
参考书籍为<图解tcp/ip>-第五版.这篇随笔,主要内容还是TCP/IP所必备的基础知识,包括计算机与网络发展的历史及标准化过程(简述).OSI参考模型.网络概念的本质.网络构建的设备等 下面是协议层从底层至顶层的一个模型图: 一.计算机网络的背景 1.1 计算机的发展 有人说:"20世纪最伟大的发明就是计算机",自诞生伊始,计算机经历了一系列发展,从大型通用计算机.超级计算机.小型机.个人电脑.工作站以及现如今笔记本.平板.智能手机等, 计算机已经彻底融入了我们的生活
TCP/IP 协议的基础知识
一个 http 请求的整个流程 负责域名解析的 DNS 服务 首先,用户访问一个域名,会经过 DNS 解析 DNS(Domain Name System),它和 HTTP 协议一样是位于应用层的协议,主要提供域名到 IP 的解析服务.我们其实不用域名也可以访问目标主机的服务,但是 IP 本身不是那么容易记,所以使用域名进行替换使得用户更容易记住. 加速静态内容访问速度的 CDN 我这里只讲了比较简单的解析流程,在很多大型网站,会引入 CDN 来加速静态内容的访问, 这里简单给大家解释一下什么是
【Linux网络基础】TCP/IP协议簇的详细介绍(三次握手四次断开,11种状态)
一.TCP/IP协议簇(DoD参考模型) 用于简化OSI层次,以及相关的标准. 传输控制协议(tcp/ip)簇是相关国防部DoD所创建的,主要用来确保数据的完整性以及在毁灭性战争中维持通信 是由一组不同功能的协议组合在一起构成的协议簇 利用一组协议完成OSI所实现的功能 1. TCP/IP 协议簇中的相关协议 TCP/IP协议簇--应用层: TCP/IP协议簇--主机到主机层: TCP与UDP对比: TCP相关报文结构: 源端口:即本地发起连接的端口 目标端口:即要访问的服务的端口 序列号:因为
第12章 网络基础(1)_网络分层和TCP/IP协议族
1. 协议的概念 (1)计算机网络中实现通信必须有一些约定.如对速率.传输代码.代码结构.传输控制步骤和出错控制等约定,这些约定即被称为通信协议 (2)在两个节点之间要成功地进行通信,两个节点之间必须约定使用共同的"语言",这些被通信各方共同遵守的约定.语言.规则被称为协议 (3)在Internet中,最为通用的网络协议是TCP/IP协议. 2. 网络分层模型 (1)应用层:提供用户接口,特指能够发起网络通信的应用程序,如客户端程序.QQ.MSN.浏览器等,服务器程序有Web服务器.邮
JAVA基础知识之网络编程——-TCP/IP协议,socket通信,服务器客户端通信demo
OSI模型分层 OSI模型是指国际标准化组织(ISO)提出的开放系统互连参考模型(Open System Interconnection Reference Model,OSI/RM),它将网络分为七层:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层 TCP/IP协议 TCP/IP是一系列网络通信协议的统称,其中最核心的两个协议是TCP和IP.TCP称为传输控制协议,IP称为互联网络协议. 网络分层除了OSI模型分层,还有TCP/IP模型分层,将网络划分为四层,应用层.传输层.网际层