资源目录
压缩包内文档预览:
编号:511916
类型:共享资源
大小:550.58KB
格式:RAR
上传时间:2015-11-11
上传人:QQ28****1120
认证信息
个人认证
孙**(实名认证)
辽宁
IP属地:辽宁
6
积分
- 关 键 词:
-
毕业设计
- 资源描述:
-
12.TCPIP 套接字编程的分析与实现,毕业设计
- 内容简介:
-
江苏大学本科毕业论文 - 1 - 毕 业 论 文 TCP/IP 套接字编程的分析与实现 学生姓名 沈志贤 班级学号 通信 001 班 13 号 专 业 通信工程 所在院系 计算机科学与通信工程学院 指导教师 谢建菲 论文提交时间 2004 年 6 月 论文答辩时间 2004 年 6 月 答辩委员会主席 _ 评阅人 _ 2004年 月 日 nts江苏大学本科毕业论文 - 2 - 摘要 TCP/IP 参考模型是目前最为成熟的网络参考模型。它为今天网络技术的迅速发展立下了汗马功劳。 20 世纪 80 年代早期,远程规划局( ARPA)资助加利福尼亚大学的一个研究组,将 TCP/IP 第一次实现在 UNIX 系统上,这就是广为人知的套接字 socket 接口。网络编程的基石是套接字,一个套接字 是通信的一端。在这一端上你可以找到与其对应的一个名字,一个正在被使用的套接字都有它的类型和与其相关的任务。 关键字 TCP/IP 套接字 客户端 /服务器 防火墙 Abstract TCP/IP model is the most mature refernced model in these days. It make the great contribution to the nettech today. In the eatly days of 20 Cen. 80 days, with the satke of ARPA, a workgroup in California University realize the TCP/IP on UNIX system the first time, which is the famous Socket interface. Socket is the headstone of the networkware programme, and a socket is a side of the communication. A opposite name could be found at the side, and a socket which is used has its style and its opposite mission. Keywords TCP/IP Socket Client/Server Firewall nts江苏大学本科毕业论文 - 3 - 目 录 摘要 . 2 Keywords . 2 前言 . 4 第一章 NAT/防火墙网络环境下的 VoIP应用 . 4 1.1 概述 . 4 1.2 技术背景 . 4 1.2.1 H.323 VoIP. 5 1.2.2 防火墙简介 . 11 1.2.3 NAT 简介 . 12 1.2.4 如何在 H323中穿越防火 墙和 NAT. 14 第二章 socket编程 . 15 1.1 Socket基础 . 16 1.2 TCP/IP协议族 . 16 1.3 Socket常用的数据结构 . 16 1.4 客户机 /服务器模型 . 17 1.5 Socket 编程接口的系统调用 . 19 第三章 为实现代理功能 底层 socket 编程的详细设计 27 第四章 程序调试及心得 . 41 4.1 程序调试 . 41 4.2 个人心得 . 42 致 谢 . 43 参考书目 . 43 nts江苏大学本科毕业论文 - 4 - 前言 VoIP是指利用 IP网络传 送话音的技术,也称网络电话或 IP电话。而 VoIP网关是整个VoIP系统中的关键设备,它负责在传统的电话交换网络和 Internet之间架起一坐桥梁,它可提供包括 NO1信令、 SS7信令、 H.323、 ISDN、 CO环路等多种接入方式。 本文主要介绍 VoIP网关软件系统中的低层 socket模块的设计过程 ,并对 VoIP网关进行了详尽的描述,由于本文的意图是讨论在 H323协议下的通过代理功能来实现打 ip电话,所以 H.323协议栈也是本文介绍的重点。本文的第一章是对 VoIP技术和 VoIP网关进行相应的描述和介绍;第二章是 对 sock 的基础理论知识和具体的信令流程进行描述。第三章是对代理底层 socket 的详细设计(系统的实现是依赖于其它的模块支持的基础上的,所以在这也对其它相关的模块进行了简单的描述,阐述了本模块在系统中的地位和与其它模块的关系);第四章是在调试过程中所遇到的具体问题和整个系统设计后的一些个人心得。所有的代码都包含在附录中,整个模块的代码在 KVP6033的硬件系统基础上运行得以通过。 本文所编写的代码均采用 C语言描述,因为经过编译后的代码是运行在 vxworks 操作系统下的,所以它其中调用了 vxworks操作系统 里的一些库函数, vxworks操作系统是一种多任务的实时嵌入式系统,而采用的编译环境是在 Tornado下进行编译的,有关 vxworks操作系统和 Tornado编译环境在这很少提到,读者想了解其详细细节,可以查阅其它的一些相关资料。 由于时间和精力有限,本文主要只涉及到上层软件部分,有关一些芯片的底层驱动只是略有涉及。也由于作者的知识和阅历非常有限,所以文章中肯定有不少错误和遗漏之处,肯请读者批评指正。 第一章 NAT/防火墙网络环境下的 VoIP 应用 1.1 概述 随着 H.323、 SIP、 MGCP等相关协议体系 的不断发展和逐渐完善, VoIP以其固有的多方讨好的姿态,正在获得越来越多的用户、服务供应商、以及设备制造商的青睐。 VoIP是在无 QoS保证的 IP网络上传输语音信息、以实现端到端语音通信的一系列技术、协议及应用的统称。这里所说的 IP网络可以是 LAN、 MAN,也可以是基于多项复杂技术由多个 LAN、 MAN互联而形成的 WAN,甚至可以是 Internet。任意两个端点之间只要可以通过 IP协议进行互联,就应该可以实现 VoIP的应用。 下面主要描述在带有 NAT或防火墙的 IP网络环境下实现 VoIP应用的相关问题及技术细节 ,并提出相关建议和解决方法。 1.2 技术背景 近年来,出于安全性和 IPv4 地址空间缺乏的考虑,大多数服务供应商和企业都在自己的网络边缘部署了防火墙并使用了 NAT 技术。在这样的网络环境下实现 VoIP 应用,需要考虑很多方面的问题。下面简单介绍 VoIP、防火墙以及 NAT 的技术原理,并指出在这样的环nts江苏大学本科毕业论文 - 5 - 境下 VoIP面临的难题。 1.2.1 H.323 VoIP Voice over IP,即在 IP网络上的语音系统。通俗的讲,就是通过 IP网络打电话 目前,在 IP 网络上实现语音通信主要有以下几个协议体系: H.323、 SIP、 MGCP。其中SIP和 MGCP的体系结构还不够完善,所以在 VoIP 中的应用还不是很广泛。但是 SIP的开放、简单、易实现等特性使得该体系有着强大的生命力,并有取代 H.323的趋势。 H.323体系由 ITU-T 提出,并发表了一系列建议。 H.323 系列建议定义了在无业务质量保证的 Internet 或其它分组网络上实现多媒体通信的协议及规程。 H.323 体系的完善以及ITU-T浓厚的传统语音通信的技术背景使得该体系成为目前最为广泛部署的 VoIP技术体系。本文档主要讨论 H.323体系。在带有 NAT或防火墙的 IP网络环 境下实现 VoIP应用的讨论上,SIP、 MGCP与 H.323面临同样的问题。 ) H.323系统组件 H.323系统的组件主要包括终端 Terminals、网关 Gateways、网守 Gatekeepers、多点控制器 Multipoint Controllers、多点处理器 Multipoint Processors、以及多点控制单元Multipoint Control Units。 H.323终端提供了在点到点或多点会议中进行语音和可选视频和数据通信的能力,与其它 H 系列终端、 GSTN 或 ISDN 语音终端、 GSTN 或 ISDN 数据终端的通信通过网关来实现。网守主要完成许可控制和地址翻译功能。多点控制器、多点处理器以及多点控制单元提供多点会议支持。 H.323终端设备互连如下图所示: T 1 6 0 4 2 1 0 - 97 ( N o t e ) H . 3 1 0 t e r m i n a l o p e r a t i n g i n H . 3 2 1 m o d e N O T E A g a t e w a y m a y s u p p o r t o n e o r m o r e o f t h e G S T N , N - I S D N a n d / o r B - I S D N c o n n e c t i o n s . P a c k e t B a s e d N e t w o r k V . 7 0 T e r m i n a l H . 3 2 4 T e r m i n a l S p e e c h T e r m i n a l H . 3 2 2 T e r m i n a l S p e e c h T e r m i n a l H . 3 2 0 T e r m i n a l H . 3 2 1 T e r m i n a l H . 3 2 1 T e r m i n a l S c o p e o f H . 3 2 3 B - I S D N G u a r a n t e e d QOS L A N N - I S D N G S T N T e r m i n a l H . 3 2 3 T e r m i n a l H . 3 2 3 G a t e w a y H . 3 2 3 G a t e k e e p e r H . 3 2 3 T e r m i n a l H . 3 2 3 M C U H . 3 2 3 H323终端设备互连示意图 ) H.323协议栈 H.323很大程度上基于 ITU-T以前有关多媒体通信的建议,其编码机制、协议范围和基本操作类似于 ISDN 的 Q.931 信令协议的简化版本,并采用了比较传统的电路交换的方式。相关的协议包括用于建立连接的 H.225.0、用于呼叫控制的 H.245、用于大型会议的 H.332、用于补充业务的 H.450.1、 H.450.2和 H.450.3、用于安全控制的 H.235、用于与电路交换业务互操作的 H.246、用于控制各类多媒体网关的 H.248 等。 nts江苏大学本科毕业论文 - 6 - 一个典型的 H.323协议栈如下图所示A V A p p . T e r m i n a l C o n t r o l a n d M a n a g e m e n t D a t a G . 7 X H . 2 6 H . 2 2 5 . 0 C a l l S i g n a l i n g H . 2 4 5 T . 1 2 5 T . 1 2 4 R T P R T C P R A S U n r e l i a b l e T r a n s p o r t ( U D P ) R e l i a b l e T r a n s p o r t ( T C P ) T . 1 2 3 N e t w o r k L a y e r ( I P ) L i n k L a y e r P h y s i c a l L a y e r H.323 协议是一个庞大的协议族,包括许多相关的协议,它们形成了一个协议栈。 - 在 H.323 协议栈结构中,下三层是分组网的底层协议,其中的网络层在 IP 网络中就是 IP 协议。 - 语音压缩编码采用 ITU-T 的 G 系列建议。一般情况下,人的话音在采样编码(模数转换)后未压缩前生成的是 64Kbps 的比特流,为了提高网络带宽的利用率,需要对编码后的语音进行压缩。早期的语音压缩采用波形编码的方式,如 G.711、 G.726、 G.727 和 G.722 等,最多只能将语音压缩至 16Kbps。现在则主要采用参数编码的方式,如 G.729A 和 G.723.1 等。这种方式的原理是模拟讲话者的发声声道,构造话音生成模型,再加上静音压缩机制(即在不讲话的情况下仅发送很少的比特流),至少能将语音压缩至 8Kbps。一般情况下,该方式能将比 特流的速率降至 2 4Kbps,而且话音质量仍保持良好水平(可以分辨出讲话者)。 - 视频压缩编码和数据通信分别采用 ITU-T 的 G.260 系列建议和 T.120 系列建议,不再赘述。 - 实时传输协议 /实时传输控制协议( Real-time Transport Protocol/ Real-time Transport Control Protocol, RTP/RTCP)是 IETF 建议的 ,它并非专为 IP 电话设计的,而是适用于一般的多媒体通信的技术。RTP 协议为音频、视频等实时数据提供端到端的 传递服务,可以向接收端点传送恢复实时信号必需的定时和顺序信息, RTCP 协议能向收发双方和网络运营者提供 QoS 的监测手段。 - H.225.0 和 H.245 是 H.323 系统的核心协议,前者主要用于呼叫控制,后者用于媒体信道控制 。一次呼叫可以包含多种媒体信息,如可视电话就包含了音频和视频流。 H.225.0 还定义了注册、呼叫接纳和状态协议( Registration Admission and Status, RAS), RAS 协议的作用是为网守( GateKeeper),即网络管理点提供确定端点地址和状态、进 行呼叫接纳控制等服务。 H.323协议栈示意图 ) H.323典型呼叫过程 一次典型的 H.323 呼叫涉及多个交互的过程,下图显示了 H.323信令交互过程: nts江苏大学本科毕业论文 - 7 - 根据 H.323系列建议,一次典型的呼叫过程(通过网守)由下图所示: ARQ ( 1 )ACF (6 )ARQ (5 )ALERTIN G (7 )CONN ECT (8 )CALL PROCEEDI NG (4 )SETUP (3 )ACF (2 )H. 22 5 Sign al ing MessageRAS Message呼叫建立过程 nts江苏大学本科毕业论文 - 8 - Term in alCapabil ity Set (9)H.2 45 M ess ageOpen Lo gi calChann el ( 16 )Open Lo gi calChann el ( 15 )Open Lo gi calChann el Ack ( 14 )Open Lo gi calChann el ( 13 )Term in alCapabil ity Set Ack ( 12 )Term in alCapabil ity Set (11 )Term in alCapabil ity Set Ack ( 10 )控制通道过程 RTP Med ia Str eam (17 )RTP Med ia Str eam and RTP M ess ageRTCP Messa ges ( 20 )RTCP Messa ges ( 19 )RTP Med ia Str eam ( 18 )媒体传输过 程 nts江苏大学本科毕业论文 - 9 - En d Session Co m m and (21 )H.2 25 Si gn aling M ess ageDRQ ( 24 )Relea se Com pl ete ( 23 )En d Session Co m m and ( 22 )DRQ ( 24 )DCF ( 25 )DCF ( 25 )H.2 45 M ess ageRAS M ess age会话结束过程 上图四个示意图显示了一次 H.323 VoIP 呼叫所经历的典型过程,对照下图 Telephone1呼叫 H323 Terminal1 的情形,全部过程描述如下: V I P C l o u d G a t e w a y T e l e p h o n e 1 H . 3 2 3 T e r m i n a l 1 G a t e k e e p e r 图 8 实际网络示意图 a) 为 Telephone1连接在 Gateway1上的端口配置一个 E.164号码 1,而 H323 Terminal1的 E.164号码为 2; b) 在 Telephone1上拨号 2时, Gateway1在发起呼叫前首先需要得到 Gatekeeper1的许可,因此向 Gatekeeper1发送 ARQ消息; c) Gateway1得到 ACF回应后再向 H323 Terminal1的 H.225侦听端口(缺省为 1720TCP端口)发送 Setup消息; d) H323 Terminal1 得到 Setup 消息后,立刻向对方发送 Call Proceeding 消息通知本方正在处理对方的请求; e) H323 Terminal1 在本地对呼叫验证通过,准备接受请求前也需要得到 Gatekeeper的许可,所以向 Gatekeeper1发送 ARQ消息; f) H323 Terminal1 在得到 ACF消息后向对方发送 Alerting消息; g) H323 Terminal的用户接听该呼叫后,向 Gateway1发送 Connect消息。 这时,在呼叫信令上,一次呼叫就已接通。 被叫方收到 Setup 消息后,在回应消息中需要带有 H.245控制通道的传输地址,主叫方以 TCP连接该传输地址后即可开始控制通道协商过程。最简单的协商过程主要包含能力交换和打开逻辑通道。能力交换主要用来协商通话的各方所采用的媒体编码方式如 G.711、G.729、 H.261 等;打开逻辑通道是在进行语音或视频传输时建立传输通道用的。在此以后nts江苏大学本科毕业论文 - 10 - 就可以 开始正常的媒体传输。 在语音或视频的媒体传输过程中,使用 RTP协议承载数据, RCTP来监测传输质量。 当需要结束会话过程时,可以由建立了逻辑通道的各方之间互相传输 EndSession 的H.245 消息,提示关闭逻辑通道。随后由主动结束会话过程的一方向对方发送 H.225 的ReleaseComplete消息。 EndSession消息是可选的。 最后如果一个 H323设备希望断开与 Gatekeeper的连接,则可以向 Gatekeeper发送 DRQ消息,得到回应后,断开, Gatekeeper可以认为该设备已关机。 Cisco语音设备一次典型的 H.323 VoIP呼叫如下图所示(图 9): T e r m i n a l A 415 - 557 - 1111 G K 1 1 ) T e r m i n a l A d i a l s t h e p h o n e n u m b e r 4 0 8 - 667 - 1 1 1 1 f o r T e r m i n a l B 2 ) G W A s e n d s G K 1 a n A R Q , a s k i n g p e r m i s s i o n t o c a l l T e r m i n a l B 3 ) G K 1 d o e s a l ook - u p a n d f i n d s T e r m i n a l B r e g i s t e r e d ; r e t u r n s a n A C F w i t h t h e I P a d d r e s s o f G W B 4 ) G W A s e n d s a Q . 9 3 1 C a l l - S e t u p t o G W B w i t h T e r m i n a l B s p h o n e n u m b e r 5 ) G W B s e n d s G K 1 a n A R Q , a s k i n g p e r m i s s i o n t o a n s w e r G W A s c a l l 6 ) G K 1 r e t u r n s a n A C F w i t h t h e I P a d d r e s s o f G W A 7 ) G W B s e t s u p a P O T S c a l l t o T e r m i n a l B a t 4 0 8 - 667 - 1111 8 ) W h e n T e r m i n a l B a n s w e r s , G W B s e n d s Q . 9 3 1 C o n n e c t t o G W A G W A G W B T e r m i n a l B 408 - 667 - 1111 1 5 3 7 6 4 2 8 图 9 C i s c o H . 3 2 3 V o I P 呼叫过程 ) H.323呼叫通道 如上文所述,一次典型的 H.323呼叫流程需要建立四种通道: RAS信令及 RAS信令通道、H.225.0呼叫信令及 H.225.0 呼叫信令通道、 H.245 呼叫控制及 H.245呼叫控制通道、逻辑通道(语音通道)。 RAS信令通道用于传递 RAS信令,以完成终端与网守之间的登记注册、授权许可、带宽改变、状态和脱离等过程。 H.225.0呼叫信令通道用于传递 H.225.0呼 叫信令,以建立两个终端之间的连接。该信令使用 Q.931消息来控制呼叫的建立和拆除。当系统中没有网守时,呼叫信令信道在呼叫涉及的两个终端之间打开;当系统中包括一个网守时,由网守决定在终端与网守之间还是在两个终端之间建立呼叫信令信道。 H.245控制信令通道用于传递 H.245控制信令,以传送终端到终端的控制消息,包括主从判别、能力交换、打开和关闭逻辑通道、模式参数请求、流控消息和通用命令与指令等。H.245控制信令信道建立于两个终端或一个终端与一个网守之间。 H.323信令结构如下图所示: nts江苏大学本科毕业论文 - 11 - 呼叫控制通道 呼叫信令通道 R A S 通道 音频 / 视频通道 H . 2 4 5 H . 2 2 5 . 0 R T P T C P U D P IP 底层传输 H.323信令及通道结构 如上图所示,信令消息、控制消息、以及语音流分别在各自的通道中传递,这些通道的建立依赖于 TCP或 UDP 协议。 H.225.0呼叫信令使用 TCP连接,端口号 1720; H.245呼叫控制使用 TCP连接,端口号动态; RAS信令使用 TCP连接,端口号 1718、 1719; RTP语音流使用 UDP,端口号动态。 如上图所示,信令消息、控制消息、以及语音流分别在各自的通道中传递,这些通道的建立依赖于 TCP或 UDP 协议。 H.225.0呼叫信令使用 TCP连接,端口号 1720; H.245呼叫控制使用 TCP连接,端口号动态; RAS信令使用 TCP连接,端口号 1718、 1719; RTP语音流使用 UDP,端口号动态。 比如说要传递 H.245呼叫控制消息,首先必须由高层实体(如会话层、应用层)在两个端点间建立呼叫控制通道,而该通道的建立依赖于 TCP连接的建立,要建立 TCP连接必须要知道对方端点的传输层地址( IP 地址和端口号),对方传输层地址的获得则依赖于前一次对方回应的 H.225.0消息中包含的 H.245传输地址(消息段格式如 h245Address = ipAddress ip = 4 octets 0b 01 01 01port = 20014),该地址实际上就是对端的 IP 地址和守护进程端口号。而这一段 H.225.0 消息是在对端 TCP/IP模型的会话层产生的,要在 IP 网上传递则必须封装相应的 TCP层、 IP 层、链路层的头然后传递到本端。 所以, IP网络上的一个 VoIP 报文不仅仅在 IP 报文头部包含了用于路由的源、目的 IP地址,而且还有可能在 IP报文的数据部分即高层(如 5到 7 层)也包含了用于建立连接的IP地址,而该地址一般不会被互联网上的设备所识别(互联网设备一般工作于第三层)。 1.2.2 防火墙简介 出于安全考虑,很多企业或运营商会在自己内部网与外部网的交界处部署防火墙,以防止外部用户非法入侵内部网,从而避免可能的攻击,同时提供安全的 Internet 和远程访问连接。绝大多数防火墙还可以保护一个和多个边界网络,即非军事区( DMZs)。内部网、外部网以及边界网之间的连接由防火墙控制。 为了有效地利用防火墙来保护内部网,用户必须规划一个安全策略,以确保所有内部网与外部网之间的数据流都通过该防火墙。 目前,根据应用,防火墙的实现主要有以下几种:基于包过滤、基于代理服务器、基于状态。基于 包过滤的防火墙一般集成在路由器当中,通过手工设置访问列表来限制特定的数据包流向,工作于 OSI 模型的第 3、 4层,缺点是暴露用户的 IP 地址、无状态、基于规则容易犯错。基于代理服务器的防火墙一般通过运行于 Unix平台的代理软件来实现,工作在 OSI模型的第 3 7 层,缺点是高成本、低效率。基于状态的防火墙可以动态反映用户的连接状nts江苏大学本科毕业论文 - 12 - 态,可以通过多种技术实现安全目的,如 ACL、 NAT、 ALG、 VPN、 IPSEC、 AAA、 IDS等,同时可以实现 OSI高层的安全特性。 I n t e r n e t R o u t e r I n t e r n e t a c c e s s i b l e s e r v e r R o u t e r F i r e w a l l P e r i m e t e r I n s i d e O u t s i d e W E B S e r v e r M a i l S e r v e r P r o t e c t e d C l i e n t P r o t e c t e d S e r v e r 防火墙典型应用 如上图,当外出的数据包到达防火墙的内部接口时,防火墙检查先前是否有来自这一内部主机的数据包。如果没有,防火墙则在它的状态表中为此新连接创建一个传输通道,其中包括了一个内部 IP 地址、一个外部全局唯一 IP地址。然后,防火墙将数据包的源地址替换为全局唯一的地址、修改校验和及其它相应字段,并将修改后的数据包发往相应的外部接口。 当外部进入内部网络的数据包到达的外部接口时,它必须首先经过防火墙的安全验证。如果数据包通过了安全验证,则防火墙移去该数据包的目标 IP 地址,插入相应的内部 IP 地址,并在修改 过相应字段后将该数据包发往内部接口。 一般来说, 防火墙 会 检查从外部进来的每个数据包的 IP 地址和目的端口号 。防火墙的一个典型配置是: 如果防火墙内 部 的一台计算机 A 向防火墙外 部 的一台计算机 B主动发出请求,防火墙会让外部计算机 B的 响应 数据包通过,当且仅当 该响应 数据包的目的地址和端口号与防火墙内发起请求的计算机 A的地址和端口号相同 时 ;如果计算机 B发来的数据包仅仅目的地址是防火墙内发起请求的计算机 A的地址,而端口号不是计算机 A发出请求的那个端口号,防火墙也将会丢弃那个外来的数据包。 防火墙总是被配置 为 过滤掉所有不请自到 的 数据包 ,有一个例外是在防火墙内提供 Web Server 供外部访问。在这种情况下,公司会配置防火墙允许目的地址是 Web Server 的 IP地址且目的端口号为 80 的数据包通过,这就使得外部 用户 可以主动向 内部 的 Web Server发起请求 ,以获得其 上的数据 。 1.2.3 NAT简介 NAT主要用于解决互联网 IP 地址缺乏的问题,它是一种允许一个组织的 IP 网络从外部看上去使用很少的全局 IP地址空间而不是它实际使用的地址空间的特性。所谓全局 IP 地址就是在公网中被承认的地址,即公网路由器有路由指向的地址。所谓实际使用的 IP 地址就是设置在路由器接口或内部主机的地址,也叫局部地址。这样,路由器通过将这些局部地址转换为全局可路由的地址,就可以允许一个具有非全局可路由地址的组织连接到 Internet。 NAT 允许企业内部网使用私有地址,并通过设置合法地址集使内部网与 Internet 进行通信,从而可以达到节省合法注册地址的目的。同时,这些私有地址可以被多个公司或组织使用而不会产生冲突。 NAT 隐藏了一个公司或组织的实际 IP 地址,这使得该公司或组织的内部网免于暴露自nts江苏大学本科毕业论文 - 13 - 己真实的 IP 地址于外部互联网空间,减少了被黑客攻击的机会。 NAT 的 缺点是使得网络时延增大、无法实现 IP 的端到端跟踪、可能会使某些要使用内嵌 IP地址的应用不能正常工作。 NAT往往集成在路由器或防火墙中,其典型应用及工作原理如下图所示: N A T T a b l e P r o t o c o l I n s i d e S o u r c e A d d r e s s : P o r t O u t s i d e S o u c e A d d r e s s : P o r t O u t s i d e D e s t A d d r e s s : P o r t T C P 1 0 . 2 . 2 . 1 : 1 0 2 4 1 7 1 . 6 9 . 8 9 . 1 : 1 0 2 4 1 7 1 . 6 9 . 2 . 1 : 2 3 T C P 1 0 . 3 . 3 . 1 : 1 7 2 3 1 7 1 . 6 9 . 8 9 . 1 : 1 7 2 3 1 7 1 . 6 9 . 3 . 1 : 2 3 E x t e r n a l C l i e n t 1 1 7 1 . 6 9 . 2 . 1 R o u t e r I n s i d e O u t s i d e I n t e r n a l C l i e n t 2 10. 2 . 2 .1 I n t e r n a l C l i e n t 1 1 0 . 3 . 3 . 1 I n t e r n e t E x t e r n a l C l i e n t 1 1 7 1 . 6 9 . 3 . 1 内部私有 地址空间 外部公有 地址空间 I n t e r f a c e E 0 1 7 1 . 6 9 . 2 0 . 1 I n t e r f a c e E 1 1 0 . 3 . 3 . 1 N A T P o o l 1 7 1 . 6 9 . 8 9 . 1 NAT典型应用 如上图所示, Internal Client1 要与 External Client1 建立一个 telnet 会话,首先Internal Client1 向 Router 发送一个源地址为 10.3.3.1、目的地址为 172.69.3.1、 TCP源端口号为 1723、 TCP 目的端口 号为 23的 IP数据包。 Router 从 E1 接口收到该数据包,检查 IP 头,根据路由表以及预先设定的 ACL 规则判断该通信需要启用 NAT( 先路由后 NAT),然后该路由器检查 NAT翻译表看是否表中已有相应条目,如果没有,路由器将用 NAT 地址池里的地址 172.69.89.1 替换该数据包的源 IP地址, TCP端口号保持不变,目的地址与目的端口号不作改动,并将该地址翻译条目添加到 NAT翻译表中。路由器将修改后的 IP 包从 E0口发出。 External Client1 收到该数据包后经由上层处理返回一个响应数据包,该响应数据包的 源地址是 172.69.3.1,目的地址是 172.69.89.1,源端口任意,目的端口是 1024。该数据包经由互联网路由最终到达 Router的 E0接口。 Router从 E0 口收到该响应报文后首先检查 IP 头,发现目的地址是 172.69.89.1、目的端口是 1024,该路由器检查 NAT表( 先 NAT后路由 ),发现有该 Socket的 NAT 地址转换条目,于是开始 NAT 地址替换,将 172.69.89.1 替换为 10.2.2.1,最后根据路由表将修改后的报文发到 E1接口。 这样,一次报文交互就完成了。 从上面的报文交互过程可 以看出, NAT仅仅工作在 IP 层,它只完成 IP 报文 IP头的源、目的地址转换功能,而不关心 IP 数据字段的内容。尽管它也使用了类似于 TCP/UDP 中的Socket 端口功能,但该端口功能只是为了用于在 NAT 转换表中建立相应条目,以实现多个内部终端同时使用一个全局地址与外部终端通信的目的。 nts江苏大学本科毕业论文 - 14 - 1.2.4 如何在 H323中穿越防火墙和 NAT 事实上,要彻底解决上述 VoIP所面临的问题,最好的办法就是避免使用防火墙和 NAT。当然这是一种消极的方法, 对大多数 企业或运营商 来说,这 样 太冒险,网络安全没有保证,而且要得到足够多的 可路由的 IP 地址 需要付出非常 昂贵 的代价,甚至不太可能 。 从上文分析的情况来看,一种比较直观的积极的解决方法就是: a) VoIP设备必须知道 NAT的全局地址; b) NAT设备必须配置成使用静态地址转换,即一个全局地址对应一个局部地址; c) VoIP 设备必须将其 H.225.0 信令消息、 H.245 控制通道消息中包含的地址转换成NAT所使用的全局地址; d) 为了实现外部主动与内部建立通话, NAT 或防火墙设备必须设置静态映射,同时要结合 VoIP 设备的 H.323源地址绑定(防止外部网关或 H.323终端随便选取自己任意一个接口的地址)。 上述方法需要 VoIP、 NAT或防火墙同时支持,并且牺牲了一些安全特性。目前比较多的解决方法主要有修改 NAT 或防火墙设备、借助于第三方软件等,单纯修改 VoIP 设备无法解决问题。下面列举了一些方法。 )让 NAT或防火墙设备集成网关功能 这种方法将 VoIP网关功能直接集成在 NAT/防火墙设备上,典型的设备如一个支持 VoIP、NAT、防火墙的路由器。该路由器由 NAT 或防火墙将内部网与外部网隔离,一般的数据通信由 NAT或防火墙功能实现,而语音通信则直接由路由器上所带的语音模块以及支持的网关功能来实现。这样, VoIP 就避免了 NAT 或防火墙的限制。但是该方法只能够支持普通电话或PBX设备与外部通信,而无法实现内部 H.323终端与外部的通信。 )让 NAT或防火墙设备支持高层应用 这种方法也叫应用层网关( ALG)。具有该功能的 NAT或防火墙设备 不再只是 简单地察看IP 包头信息来决定数据包是否可以通过, 它还会分析和处理高层数据字段的内容 。 如前面分析的, H.323和 SIP 协议都在 高层数据字段中 放了重要的控制信息, 如地址和端口号 。通过分析哪一个端口需要打开,防火墙动态地打开那些被应用的端口,而所有别的端口依然安全地保持关闭状态。 而 NAT 则需要修改这些地址或端口号。 )使用 H.323代理 H.323代理用 于 解决 NAT或者同时解决 NAT和防火墙问题,这取决于代理如何配置。代理其实是一种特殊类型的网关,在代理两边使用的是相同的协议。代理使终端到终端的呼叫过程看起来像两个分离的呼叫:一个是从私有网上的终端到代理,另一个是从代理到公众网上的终端,代理通过对这个呼叫进行中转解决了 NAT 问题。 H.323 代理一般结合标准的网守功能和 RTP/RTCP 多媒体流代理功能。这种 方法 典型应用是在防火墙后放一个 H.323 代理,代理需要被分配公有 IP 地址。 防火墙被配置允许代理和外部进行多媒体通讯。有时候沿着网络路径在许多位置都应用了 NAT设备,这时就需要在每一个使用 NAT的地方放置代理 。 )建立 VPN VPN是一种在公网上建立两个机构之间的专用隧道的技术,该两个机构部署自己私有 IP地址空间,互相直接使用对方的私有地址进行通信。这样正好解决了 VoIP 的问题。但是该方法的缺点主要是:一、只能实现 VPN 隧道两端之间的 VoIP 通信, 无法与位于公网的终端用户进行通 信;二、当使用一些加密技术如 IPSEC时, VoIP通信面临挑战。 )客户 /服务器代理方式 一般企业网 用 户 都不想升级或者改动他们的防火墙和 NAT设备的配置,也不想让内外的nts江苏大学本科毕业论文 - 15 - 通信 绕过这些设备, 客户 /服务器代理方式也许是一个很好的选择。目前有 Ridgeway 公司 、亚软公司 eProxy系统均基于该方法。 该方法 由两个组件构成 : Server软件和 Client 软件。 Client放在防火墙内的私有网,它同时具有网守功能和代理功能,私有网内的终端注册到 Client上,它和防火墙外的 Server创建一个信令和控制通道,可以把所有的注册和呼叫控制信令转发到 Server
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。