论文部分内容阅读
[摘要]即时通讯系统(Instant Messaging)是目前Intemet上最为流行的通讯方式。为解决即时通讯中的NAT(NetworkAddress Translation)穿越问题本文分析了一些NAT穿透技术,介绍了一种最为实用的方法:打洞技术(Hole Punching),并对NAT基本原理及NAT分类加以阐述,并对心跳技术作了详细说明最后,用UDP协议来穿透NAT进行通信作了简要介绍。
[关键词]UDP信息传输;系统分析与设计
中图分类号:TP311.52 文献标识码:A 文章编号:1009-914X(2015)05-0325-01
随着社会发展及网络普及,网络聊天已成为人们日常沟通的重要载体。市场上已经出现很多网络聊天工具,如腾讯QQ、MSN、阿里旺旺、Skype等等,给人们带来了乐趣和便捷。本文作为整个Hollo即时通讯系统的一部分,重点关注在NAT网络环境下的UDP信息传输,通过研究该课题,可以对UDP信息传输有更进一步的了解,从中接触到关于防火墙、网络地址转换、P2P应用、NAT的几种类型知识,同时实现“心跳”技术,即每隔几分钟即时通讯端往服务器发送UDP信息进行端口保持。
一、系统分析与设计
系统采用C/S(客户机/服务器)模式,本Hollo即时通信协议采用UDP协议。服务器具有中心服务器的功能。客户端要先登陆服务器才能接受各种服务。通信时,由客户端发送连接请求,服务器担任中转者角色,将网络包从发送方转交给接收方。其功能包括:记录客户机各种活动、负责对客户机消息的转发。服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统。
二、基本原理及分类
NAT网络环境介绍
NAT(Network Address Translators),网络地址转换,是一种将一个IP地址域映射到另一个IP地址域技术,从而为终端主机提供透明路由。NAT包括静态网络地址转换、动态网络地址转换、网络地址及端口转换、动态网络地址及端口转换、端口映射等。主要包括基础NAT、锥形NAT、对称NAT等三类。常用于私有地址域与公用地址域的转换以解决IP地址匮乏问题。在防火墙上实现NAT后,可以隐藏受保护网络的内部拓扑结构,在一定程度上提高网络的安全性。如果反向NAT提供动态网络地址及端口转换功能,还可以实现负载均衡等功能。
网络地址转换是在IP地址日益缺乏的情况下产生的,它的主要目的就是为了能够地址重用。NAT分为两大类,基本的NAT和NAPT(Network Address/Port Translator)。
因此,基本的NAT实现的功能很简单,在子网内使用一个保留的IP子网段,这些IP对外是不可见的。子网内只有少数一些IP地址可以对应到真正全球唯一的IP地址。如果这些节点需要访问外部网络,那么基本NAT就负责将这个节点的子网内IP转化为一个全球唯一的IP然后发送出去。(基本的NAT会改变IP包中的原IP地址,但是不会改变IP包中的端口)。
NAT技術的出现从某种意义上解决了IPv4的32位地址不足的问题,它同时也对外隐藏了其内部网络的结构。NAT设备(NAT,一般也被称为中间件)把内部网络跟外部网络隔离开来,并且可以让内部的主机可以使用一个独立的IP地址,并且可以为每个连接动态地翻译这些地址。
网络地址转换器不仅检查,而且修改了跨境流动的数据包的头信息,让后面的NAT的许多主机使用数量较少地址,即共享一个公共IP地址(通常是一个)。
——采用UDP网络传输协议
UDP协议是英文User Datagram Protocol的缩写,即用户数据报协议,主要用来支持那些需要在计算机之间传输数据的网络应用。与TCP不同,UDP协议并不提供数据传送的保证机制,具有“不可靠性”,但它是分发信息的一个理想协议。UDP广泛用在多媒体应用中,例如,Progressive Networks公司开发的RealAudio软件,它是在因特网上把预先录制的或者现场音乐实时传送给客户机的一种软件,该软件使用的RealAudio audio-on-demand protocol协议就是运行在UDP之上的协议,大多数因特网电话软件产品也都运行在UDP之上。
——UDP下的信息传输设计
1、数据传输
UDP协议的主要作用是将网络数据流量压缩成数据报的形式。一个典型的数据报就是一个二进制数据的传输单位。
使用端口号为不同的应用保留其各自的数据传输通道。
2、UDP报头校验值
UDP协议使用报头中的校验值来保证数据的安全。校验值首先在数据发送方通过特殊的算法计算得出,在传递到接收方之后,还需要再重新计算。
3、UDP消息确认机制
对于聊天软件有大量连接的程序来说,消息准确可靠是很重要的,TCP连接虽然可靠,但是在网络不稳定的时候也是不可靠的,主要表现在TCP连接中断之后双方没检测到中断之前的发包对方是收不到的,而KTCP的并发连接数量是有限的,不可能无限制增长,而如果UDP增加了消息确认机制后就没有TCP的这些缺点。
4、消息确认机制的实现
初步分析采用消息处理和消息确认分为两个程序的方式进行,它们采用两个命名管道进行通讯,相当于电话中两条线,一条收一条发.每条管道也都采用消息确认的方式,当收到一条消息的时候再回复一条消息,对方收到回复消息后才发下一条消息,最后再把消息确认程序改成系统服务。
5、UDP穿透
一般情况下,TCP发送消息更安全,更可靠,而UDP传送数据容易丢包,但速度快,能穿越防火墙。目前比较流行的QQ聊天工具底层传输协议用户的就是UDP协议。
6、UDP发送心跳包
所谓的心跳包就是在客户端和服务器端间定时通知对方自己状态的一个自己定义的命令字,按照一定的时间间隔发送,类似于心跳,所以叫做心跳包。
发包方:可以是客户也可以是服务端,看哪边实现方便合理。一般是客户端。服务器也可以定时轮询发心跳下去。
三、总结与展望
即时通信中最基本的功能就是通过计算机之间的文本数据的互换形式,实现思想的交流和沟通,它的优点是方便快捷,为人们的沟通创建了一种新型的、廉价的、快速的、简便的沟通方式。本即时通讯系统采用了C/S模型。服务器在C/S模型中处于一个中心地位。服务器一般同时为多个客户提供服务。这就造成了服务器设计的复杂性。即时通讯服务器是数据中心,它是客户活动的中介,需要同时应对众多客户的请求。保证其可行性和高效性是其设计中必不可少的一个环节。通过对消息的不同处理,保证了服务器的这些功能的健壮。
客户机在与用户打交道过程中,自始至终都会影响着用户对新产品的满意度。因此客户机在界面设计方面也有不可忽视的作用。客户之间的异网通信更是本文的重中之重。这就涉及到了如何穿透NAT,本文分析了穿透情况,并对打洞技术进行详细说明,使读者能更加容易明白打洞过程。从而保证了外网通信的可行性。
[关键词]UDP信息传输;系统分析与设计
中图分类号:TP311.52 文献标识码:A 文章编号:1009-914X(2015)05-0325-01
随着社会发展及网络普及,网络聊天已成为人们日常沟通的重要载体。市场上已经出现很多网络聊天工具,如腾讯QQ、MSN、阿里旺旺、Skype等等,给人们带来了乐趣和便捷。本文作为整个Hollo即时通讯系统的一部分,重点关注在NAT网络环境下的UDP信息传输,通过研究该课题,可以对UDP信息传输有更进一步的了解,从中接触到关于防火墙、网络地址转换、P2P应用、NAT的几种类型知识,同时实现“心跳”技术,即每隔几分钟即时通讯端往服务器发送UDP信息进行端口保持。
一、系统分析与设计
系统采用C/S(客户机/服务器)模式,本Hollo即时通信协议采用UDP协议。服务器具有中心服务器的功能。客户端要先登陆服务器才能接受各种服务。通信时,由客户端发送连接请求,服务器担任中转者角色,将网络包从发送方转交给接收方。其功能包括:记录客户机各种活动、负责对客户机消息的转发。服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统。
二、基本原理及分类
NAT网络环境介绍
NAT(Network Address Translators),网络地址转换,是一种将一个IP地址域映射到另一个IP地址域技术,从而为终端主机提供透明路由。NAT包括静态网络地址转换、动态网络地址转换、网络地址及端口转换、动态网络地址及端口转换、端口映射等。主要包括基础NAT、锥形NAT、对称NAT等三类。常用于私有地址域与公用地址域的转换以解决IP地址匮乏问题。在防火墙上实现NAT后,可以隐藏受保护网络的内部拓扑结构,在一定程度上提高网络的安全性。如果反向NAT提供动态网络地址及端口转换功能,还可以实现负载均衡等功能。
网络地址转换是在IP地址日益缺乏的情况下产生的,它的主要目的就是为了能够地址重用。NAT分为两大类,基本的NAT和NAPT(Network Address/Port Translator)。
因此,基本的NAT实现的功能很简单,在子网内使用一个保留的IP子网段,这些IP对外是不可见的。子网内只有少数一些IP地址可以对应到真正全球唯一的IP地址。如果这些节点需要访问外部网络,那么基本NAT就负责将这个节点的子网内IP转化为一个全球唯一的IP然后发送出去。(基本的NAT会改变IP包中的原IP地址,但是不会改变IP包中的端口)。
NAT技術的出现从某种意义上解决了IPv4的32位地址不足的问题,它同时也对外隐藏了其内部网络的结构。NAT设备(NAT,一般也被称为中间件)把内部网络跟外部网络隔离开来,并且可以让内部的主机可以使用一个独立的IP地址,并且可以为每个连接动态地翻译这些地址。
网络地址转换器不仅检查,而且修改了跨境流动的数据包的头信息,让后面的NAT的许多主机使用数量较少地址,即共享一个公共IP地址(通常是一个)。
——采用UDP网络传输协议
UDP协议是英文User Datagram Protocol的缩写,即用户数据报协议,主要用来支持那些需要在计算机之间传输数据的网络应用。与TCP不同,UDP协议并不提供数据传送的保证机制,具有“不可靠性”,但它是分发信息的一个理想协议。UDP广泛用在多媒体应用中,例如,Progressive Networks公司开发的RealAudio软件,它是在因特网上把预先录制的或者现场音乐实时传送给客户机的一种软件,该软件使用的RealAudio audio-on-demand protocol协议就是运行在UDP之上的协议,大多数因特网电话软件产品也都运行在UDP之上。
——UDP下的信息传输设计
1、数据传输
UDP协议的主要作用是将网络数据流量压缩成数据报的形式。一个典型的数据报就是一个二进制数据的传输单位。
使用端口号为不同的应用保留其各自的数据传输通道。
2、UDP报头校验值
UDP协议使用报头中的校验值来保证数据的安全。校验值首先在数据发送方通过特殊的算法计算得出,在传递到接收方之后,还需要再重新计算。
3、UDP消息确认机制
对于聊天软件有大量连接的程序来说,消息准确可靠是很重要的,TCP连接虽然可靠,但是在网络不稳定的时候也是不可靠的,主要表现在TCP连接中断之后双方没检测到中断之前的发包对方是收不到的,而KTCP的并发连接数量是有限的,不可能无限制增长,而如果UDP增加了消息确认机制后就没有TCP的这些缺点。
4、消息确认机制的实现
初步分析采用消息处理和消息确认分为两个程序的方式进行,它们采用两个命名管道进行通讯,相当于电话中两条线,一条收一条发.每条管道也都采用消息确认的方式,当收到一条消息的时候再回复一条消息,对方收到回复消息后才发下一条消息,最后再把消息确认程序改成系统服务。
5、UDP穿透
一般情况下,TCP发送消息更安全,更可靠,而UDP传送数据容易丢包,但速度快,能穿越防火墙。目前比较流行的QQ聊天工具底层传输协议用户的就是UDP协议。
6、UDP发送心跳包
所谓的心跳包就是在客户端和服务器端间定时通知对方自己状态的一个自己定义的命令字,按照一定的时间间隔发送,类似于心跳,所以叫做心跳包。
发包方:可以是客户也可以是服务端,看哪边实现方便合理。一般是客户端。服务器也可以定时轮询发心跳下去。
三、总结与展望
即时通信中最基本的功能就是通过计算机之间的文本数据的互换形式,实现思想的交流和沟通,它的优点是方便快捷,为人们的沟通创建了一种新型的、廉价的、快速的、简便的沟通方式。本即时通讯系统采用了C/S模型。服务器在C/S模型中处于一个中心地位。服务器一般同时为多个客户提供服务。这就造成了服务器设计的复杂性。即时通讯服务器是数据中心,它是客户活动的中介,需要同时应对众多客户的请求。保证其可行性和高效性是其设计中必不可少的一个环节。通过对消息的不同处理,保证了服务器的这些功能的健壮。
客户机在与用户打交道过程中,自始至终都会影响着用户对新产品的满意度。因此客户机在界面设计方面也有不可忽视的作用。客户之间的异网通信更是本文的重中之重。这就涉及到了如何穿透NAT,本文分析了穿透情况,并对打洞技术进行详细说明,使读者能更加容易明白打洞过程。从而保证了外网通信的可行性。