专利名称:一种tcp连接建立的方法和设备的制作方法
技术领域:
本发明涉及通信技术领域,特别是涉及一种TCP连接建立的方法和设备。
背景技术:
如图1所示,为NAT (Network Address Translation,网络地址转换)转换示意图, Host (主机)A具有私网地址192. 168. 1. 3 ;当Host A需要访问外部网络时,由NAT设备分配公网地址(如20. 1. 1. 1),并生成192. 168. 1.3:1537和20. 1. 1. 1 2001地址转换表项,之后Host A发送到外部网络的报文的源地址均被NAT转换为20. 1. 1. 1:2001 ;外部网络发送到20. 1. 1. 1:2001的报文的目的地址均被NAT转换为192. 168. 1. 3:1537。需要注意的是, 当Host A不主动连接外部网络时,NAT设备上不会有到Host A的地址转换表项,外部网络的主机无法连接到局域网内的Host A。如图 2 所示,为 iSCSI (Internet Small Computer System Interface,基于互联网的小型计算机系统接口)的应用场景示意图,在化1^站01·(连接发起设备,即客户端) 和Target (连接接收设备,即存储系统)间使用TCP (Transmission Control Protocol, 传输控制协议)/IP封装并可靠传输SCSI命令,并由Initiator主动发起以下协议交互过程(1) Discover (发现)会话过程,目的为发现目标Target (如Name、IP地址等),该过程 Target需要回应自身IP地址等信息。(2) Normal (正常)会话过程,Initiator使用Target 回应的IP地址建立TCP连接,并利用建立的TCP连接进行Login (注册),成功后进行数据读写操作。现有技术中,如果在Initiator和Target之间部署有NAT设备,则Initiator 和Target无法感知到NAT设备;且由于hitiator为协议交互过程的主动发起者,当 Initiator部署在公网,Target部署在私网时,无法实现协议交互过程,即无法正常建立 TCP连接,从而使得Initiator与Target间无法进行报文传输。
发明内容
本发明提供一种TCP连接建立的方法和设备,以在Initiator与Target之间部署 NAT设备时,实现TCP连接的建立过程。为了达到上述目的,本发明提供一种传输控制协议TCP连接建立的方法,应用于包括连接发起设备hitiator、连接接收设备Target和网络地址转换NAT设备的基于互联网的小型计算机系统接口 iSCSI网络中,该方法包括以下步骤所述Target确定所述Initiator和所述Target的位置情况;当确定结果为所述Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备时,所述Target向所述Initiator发送TCP连接请求报文,以建立所述Target与所述Initiator之间的TCP连接。所述Target确定所述Initiator和所述Target的位置情况,具体包括所述Target接收来自所述Initiator的发现会话请求报文,所述发现会话请求报文中封装有会话请求内容,且所述会话请求内容中携带有所述Initiator在发送所述发现会话请求报文时的源地址和目的地址;当所述发现会话请求报文的报文头中的目的地址与所述会话请求内容中的目的地址不同时,所述Target确定位置情况为所述Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备;当所述发现会话请求报文的报文头中的源地址与所述会话请求内容中的源地址不同时,所述Target确定位置情况为所述Target位于公网,所述Initiator位于私网,且所述Target与所述Initiator之间存在所述NAT设备;当所述发现会话请求报文的报文头中的源地址与所述会话请求内容中的源地址相同,且所述发现会话请求报文的报文头中的目的地址与所述会话请求内容中的目的地址相同时,所述Target确定位置情况为所述Target与所述Initiator之间没有NAT设备。在所述Target接收来自所述Initiator的发现会话请求报文与所述Target向所述Initiator发送TCP连接请求报文之间,所述方法还包括当所述Target位于私网,所述hitiator位于公网,且所述Target与所述 Initiator之间存在所述NAT设备时,所述Target向所述Initiator发送发现会话的响应报文,所述响应报文中携带由所述Target使能反向TCP连接的信息;由所述Initiator利用所述Target使能反向TCP连接的信息确定TCP连接过程由所述Target发起,并等待所述Target发送的TCP连接请求报文,以建立所述Target与所述Initiator之间的TCP连接。所述Target确定所述Initiator和所述Target的位置情况,具体包括所述Target接收来自所述hitiator的发现会话请求报文,并向所述Initiator 发送发现会话的响应报文,所述响应报文中封装有会话响应内容,且所述会话响应内容中携带有所述Target在发送所述响应报文时的源地址和目的地址;由所述Initiator利用所述响应报文的报文头中的源地址和目的地址以及所述会话响应内容中的源地址和目的地址确定Initiator和Target的位置情况;当确定结果为所述Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备时,所述Target接收来自所述hitiator的位置情况的通知消息,并利用所述通知消息确定所述Initiator和所述Target的位置情况。所述Initiator利用所述响应报文的报文头中的源地址和目的地址以及所述会话响应内容中的源地址和目的地址确定Initiator和Target的位置情况,具体包括当所述响应报文的报文头中的源地址与所述会话响应内容中的源地址不同时,所述Initiator确定位置情况为所述Target位于私网,所述Initiator位于公网,且所述 Target与所述Initiator之间存在所述NAT设备;当所述响应报文的报文头中的目的地址与所述会话响应内容中的目的地址不同时,所述Initiator确定位置情况为所述Target位于公网,所述Initiator位于私网,且所述Target与所述Initiator之间存在所述NAT设备;当所述响应报文的报文头中的源地址与所述会话响应内容中的源地址相同,且所述响应报文的报文头中的目的地址与所述会话响应内容中的目的地址相同时,所述 Initiator确定位置情况为所述Target与所述Initiator之间没有NAT设备。
所述Target向所述Initiator发送TCP连接请求报文,具体包括所述Target利用IP地址与Target的绑定关系选择出口 IP地址,并通过所述出口 IP地址向所述Initiator发送TCP连接请求报文。—种传输控制协议TCP连接建立的方法,应用于包括连接发起设备hitiator、连接接收设备Target和网络地址转换NAT设备的基于互联网的小型计算机系统接口 iSCSI 网络中,该方法包括以下步骤所述Initiator将所述Initiator和所述Target的位置情况的信息通知给所述 Target,由所述Target利用该信息确定所述Initiator和所述Target的位置情况;当所述Initiator获知位置情况为所述Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备时,所述Initiator确定TCP 连接过程由所述Target发起,并等待所述Target发送的TCP连接请求报文,以建立所述 Target与所述Initiator之间的TCP连接。所述Initiator将所述Initiator和所述Target的位置情况的信息通知给所述 Target,由所述Target利用该信息确定所述Initiator和所述Target的位置情况,具体包括所述Initiator向所述Target发送发现会话请求报文,所述发现会话请求报文中封装有会话请求内容,且所述会话请求内容中携带有所述Initiator在发送所述发现会话请求报文时的源地址和目的地址;由所述Target利用所述发现会话请求报文的报文头中的源地址和目的地址以及所述会话请求内容中的源地址和目的地址确定所述Initiator和所述Target的位置情况。所述Target利用所述发现会话请求报文的报文头中的源地址和目的地址以及所述会话请求内容中的源地址和目的地址确定所述Initiator和所述Target的位置情况,具体包括当所述发现会话请求报文的报文头中的目的地址与所述会话请求内容中的目的地址不同时,所述Target确定位置情况为所述Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备;当所述发现会话请求报文的报文头中的源地址与所述会话请求内容中的源地址不同时,所述Target确定位置情况为所述Target位于公网,所述Initiator位于私网,且所述Target与所述Initiator之间存在所述NAT设备;当所述发现会话请求报文的报文头中的源地址与所述会话请求内容中的源地址相同,且所述发现会话请求报文的报文头中的目的地址与所述会话请求内容中的目的地址相同时,所述Target确定位置情况为所述Target与所述Initiator之间没有NAT设备。所述Initiator获知位置情况为所述Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备,包括在向所述Target发送发现会话请求报文之后,所述Initiator接收来自所述 Target的发现会话的响应报文,且在所述Target确定位置情况为所述Target位于私网, 所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备时,所述响应报文中携带由所述Target使能反向TCP连接的信息;所述Initiator通过所述由所述Target使能反向TCP连接的信息获知位置情况为所述Target位于私网,所述Initiator位于公网,且所述Target与所述hitiator之间存在所述NAT设备。所述Initiator将所述Initiator和所述Target的位置情况的信息通知给所述 Target,由所述Target利用该信息确定所述Initiator和所述Target的位置情况,具体包括所述hitiator向所述Target发送发现会话请求报文,并接收来自所述Target 的发现会话的响应报文,所述响应报文中封装有会话响应内容,且所述会话响应内容中携带有所述Target在发送所述响应报文时的源地址和目的地址;所述Initiator利用所述响应报文的报文头中的源地址和目的地址以及所述会话响应内容中的源地址和目的地址确定Initiator和Target的位置情况;当确定结果为所述Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备时,所述hitiator向所述Target发送位置情况的通知消息,由所述Target利用所述通知消息确定所述Initiator和所述Target的位置情况为所述Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator 之间存在所述NAT设备。所述Initiator利用所述响应报文的报文头中的源地址和目的地址以及所述会话响应内容中的源地址和目的地址确定Initiator和Target的位置情况,具体包括当所述响应报文的报文头中的源地址与所述会话响应内容中的源地址不同时,所述Initiator确定位置情况为所述Target位于私网,所述Initiator位于公网,且所述 Target与所述Initiator之间存在所述NAT设备;当所述响应报文的报文头中的目的地址与所述会话响应内容中的目的地址不同时,所述Initiator确定位置情况为所述Target位于公网,所述Initiator位于私网,且所述Target与所述Initiator之间存在所述NAT设备;当所述响应报文的报文头中的源地址与所述会话响应内容中的源地址相同,且所述响应报文的报文头中的目的地址与所述会话响应内容中的目的地址相同时,所述 Initiator确定位置情况为所述Target与所述Initiator之间没有NAT设备。所述Initiator等待所述Target发送的TCP连接请求报文,具体包括所述Initiator等待所述Target通过出口 IP地址向所述Initiator发送的TCP 连接请求报文,且所述出口 IP地址为所述Target利用IP地址与Target的绑定关系选择的出口 IP地址。一种连接接收设备Target,应用于包括连接发起设备hitiator、所述Target和网络地址转换NAT设备的基于互联网的小型计算机系统接口 iSCSI网络中,所述Target包括确定模块,用于确定所述Initiator和所述Target的位置情况;通信模块,用于当确定结果为所述Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备时,向所述Initiator发送传输控制协议TCP连接请求报文,以建立所述Target与所述Initiator之间的TCP连接。所述通信模块,还用于接收来自所述hitiator的发现会话请求报文,所述发现会话请求报文中封装有会话请求内容,且所述会话请求内容中携带有所述Initiator在发送所述发现会话请求报文时的源地址和目的地址;所述确定模块,具体用于当所述发现会话请求报文的报文头中的目的地址与所述会话请求内容中的目的地址不同时,确定位置情况为所述Target位于私网,所述 Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备;当所述发现会话请求报文的报文头中的源地址与所述会话请求内容中的源地址不同时,确定位置情况为所述Target位于公网,所述Initiator位于私网,且所述Target 与所述Initiator之间存在所述NAT设备;当所述发现会话请求报文的报文头中的源地址与所述会话请求内容中的源地址相同,且所述发现会话请求报文的报文头中的目的地址与所述会话请求内容中的目的地址相同时,确定位置情况为所述Target与所述Initiator之间没有NAT设备。所述通信模块,还用于当所述Target位于私网,所述Initiator位于公网,且所述 Target与所述Initiator之间存在所述NAT设备时,向所述Initiator发送发现会话的响应报文,所述响应报文中携带由所述Target使能反向TCP连接的信息;由所述Initiator利用所述Target使能反向TCP连接的信息确定TCP连接过程由所述Target发起,并等待所述Target发送的TCP连接请求报文,以建立所述Target与所述Initiator之间的TCP连接。所述通信模块,还用于接收来自所述hitiator的发现会话请求报文,并向所述 Initiator发送发现会话的响应报文,所述响应报文中封装有会话响应内容,且所述会话响应内容中携带有所述Target在发送所述响应报文时的源地址和目的地址;由所述Initiator利用所述响应报文的报文头中的源地址和目的地址以及所述会话响应内容中的源地址和目的地址确定Initiator和Target的位置情况;当所述响应报文的报文头中的源地址与所述会话响应内容中的源地址不同时,确定位置情况为所述 Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备;当所述响应报文的报文头中的目的地址与所述会话响应内容中的目的地址不同时,确定位置情况为所述Target位于公网,所述Initiator位于私网,且所述Target与所述Initiator之间存在所述NAT设备;当所述响应报文的报文头中的源地址与所述会话响应内容中的源地址相同,且所述响应报文的报文头中的目的地址与所述会话响应内容中的目的地址相同时,确定位置情况为所述Target与所述Initiator之间没有NAT设备;当确定结果为所述Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备时,接收来自所述hitiator的位置情况的通知消息;所述确定模块,具体用于利用所述通知消息确定所述hitiator和所述Target的位置情况。所述通信模块,具体用于利用IP地址与Target的绑定关系选择出口 IP地址,并通过所述出口 IP地址向所述Initiator发送TCP连接请求报文。一种连接发起设备hitiator,应用于包括所述hitiator、连接接收设备Target 和网络地址转换NAT设备的基于互联网的小型计算机系统接口 iSCSI网络中,所述 Initiator 包括通信模块,用于将所述Initiator和所述Target的位置情况的信息通知给所述Target,由所述Target利用所述信息确定所述Initiator和所述Target的位置情况;处理模块,用于当获知位置情况为所述Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备时,确定传输控制协议TCP连接过程由所述Target发起,并等待所述Target发送的TCP连接请求报文,以建立所述Target 与所述Initiator之间的TCP连接。所述通信模块,具体用于向所述Target发送发现会话请求报文,所述发现会话请求报文中封装有会话请求内容,且所述会话请求内容中携带有所述Initiator在发送所述发现会话请求报文时的源地址和目的地址;由所述Target利用所述发现会话请求报文的报文头中的源地址和目的地址以及所述会话请求内容中的源地址和目的地址确定所述Initiator和所述Target的位置情况;当所述发现会话请求报文的报文头中的目的地址与所述会话请求内容中的目的地址不同时,确定位置情况为所述Target位于私网,所述Initiator位于公网,且所述Target 与所述Initiator之间存在所述NAT设备;当所述发现会话请求报文的报文头中的源地址与所述会话请求内容中的源地址不同时,确定位置情况为所述Target位于公网,所述 Initiator位于私网,且所述Target与所述Initiator之间存在所述NAT设备;当所述发现会话请求报文的报文头中的源地址与所述会话请求内容中的源地址相同,且所述发现会话请求报文的报文头中的目的地址与所述会话请求内容中的目的地址相同时,确定位置情况为所述Target与所述Initiator之间没有NAT设备。所述通信模块,还用于在向所述Target发送发现会话请求报文之后,接收来自所述Target的发现会话的响应报文,且在所述Target确定位置情况为所述Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备时, 所述响应报文中携带由所述Target使能反向TCP连接的信息;所述处理模块,具体用于通过所述由所述Target使能反向TCP连接的信息获知位置情况为所述Target位于私网,所述Initiator位于公网,且所述Target与所述 Initiator之间存在所述NAT设备。所述通信模块,具体用于向所述Target发送发现会话请求报文,并接收来自所述 Target的发现会话的响应报文,所述响应报文中封装有会话响应内容,且所述会话响应内容中携带有所述Target在发送所述响应报文时的源地址和目的地址;当所述Target位于私网,所述hitiator位于公网,且所述Target与所述 Initiator之间存在所述NAT设备时,向所述Target发送位置情况的通知消息,由所述 Target利用所述通知消息确定所述Initiator和所述Target的位置情况为所述Target 位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT 设备;所述处理模块,还用于利用所述响应报文的报文头中的源地址和目的地址以及所述会话响应内容中的源地址和目的地址确定Initiator和Target的位置情况。所述处理模块,具体用于当所述响应报文的报文头中的源地址与所述会话响应内容中的源地址不同时,确定位置情况为所述Target位于私网,所述Initiator位于公网, 且所述Target与所述Initiator之间存在所述NAT设备;当所述响应报文的报文头中的目的地址与所述会话响应内容中的目的地址不同时,确定位置情况为所述Target位于公网,所述Initiator位于私网,且所述Target与所述Initiator之间存在所述NAT设备;当所述响应报文的报文头中的源地址与所述会话响应内容中的源地址相同,且所述响应报文的报文头中的目的地址与所述会话响应内容中的目的地址相同时,确定位置情况为所述Target与所述Initiator之间没有NAT设备。所述TCP连接请求报文为所述Target通过出口 IP地址向所述Initiator发送的 TCP连接请求报文,且所述出口 IP地址为所述Target利用IP地址与Target的绑定关系选择的出口 IP地址。与现有技术相比,本发明至少具有以下优点在确定Target位于私网,Initiator 位于公网,且Target与Initiator之间存在NAT设备时,由Target主动发起TCP连接过程,从而可以保证TCP连接的正常建立,并使得Initiator与Target间可以正常进行报文传输。
图1是现有技术中NAT转换示意图;图2是现有技术中iSCSI的应用场景示意图;图3是本发明应用场景示意图;图4是本发明中当Target确定位置情况为=Target位于私网,Initiator位于公网,且Target与Initiator之间存在NAT设备时,所提供的一种TCP连接建立的方法流程图;图5是本发明中当Initiator确定位置情况为=Target位于私网,Initiator位于公网,且Target与Initiator之间存在NAT设备时,所提供的一种TCP连接建立的方法流程图;图6是本发明提出的一种连接接收设备Target的结构示意图;图7是本发明提出的一种连接发起设备hitiator的结构示意图。
具体实施例方式本发明提出一种TCP连接建立的方法,该方法应用于包括Initiator和Target 的iSCSI网络中,此外,根据实际网络部署情况,还可以在网络中部署NAT设备,网络中 Initiator和Target的位置情况分为以下情况(I)Target位于私网,Initiator位于私网,且Target与Initiator之间不存在 NAT设备;或,Target位于公网,Initiator位于公网,且Target与Initiator之间不存在 NAT设备。上述情况下,由于Target与Initiator之间不存在NAT设备,因此NAT设备不会对Target与Initiator造成隔离,不存在通信障碍,也不存在NAT穿越的问题。O) Initiator 位于私网,Target 位于公网,且 Target 与 Initiator 之间存在 NAT 设备。上述情况下,虽然NAT设备对Target与Initiator造成隔离,但由于hitiator 为协议交互过程的主动发起者,Initiator可以通过NAT映射访问到Target,Target与 Initiator之间不存在通信障碍,也不存在NAT穿越的问题。(3) Target 位于私网,Initiator 位于公网,且 Target 与 Initiator 之间存在 NAT设备。上述情况下,NAT设备对Target与Initiator造成隔离,且由于hitiator为协议交互过程的主动发起者,因此Target与Initiator之间存在通信障碍,即存在NAT穿越的问题,其原因在于A、由于Initiator位于公网,Target位于私网,则Initiator不能直接到达私网内的Target,其只能到达NAT设备。B、即使Initiator发送的报文可以通过NAT设备映射到Target,但由于协议交互过程包括Discover会话过程(用于发现Target)和Normal会话过程(用于连接Target), 在Discover会话过程中,Target将自身的IP地址(私网地址)发送给hitiator ;在 Normal会话过程中,Initiator会使用该IP地址连接到Target。但是Normal会话过程之前,Target不会使用该IP地址向Initiator发送报文,NAT设备也就不会记录该IP地址所对应的地址映射表项,因此在Initiator使用该IP地址连接Target时,通信过程会失败, 无法建立TCP连接。综上所述,针对上述情况( ,会存在Initiator与Target间无法建立TCP连接, 继而无法进行报文传输的问题,针对上述存在的问题,当Target位于私网,Initiator位于公网,且Target与Initiator之间存在NAT设备时,本发明中,需要由Target主动发起TCP 连接过程,以保证TCP连接的正常建立。以图3为本发明应用场景示意图,Target (即Host)位于私网,Initiator (即存储系统)位于公网,且Target与hitiator之间存在NAT设备。实际应用中,可以由Target 确定位置情况为Target位于私网,Initiator位于公网,且Target与化行13切1·之间存在 NAT设备;也可以由Initiator确定位置情况为=Target位于私网,Initiator位于公网,且 Target与Initiator之间存在NAT设备。当Target确定位置情况为Target位于私网,Initiator位于公网,且Target与 Initiator之间存在NAT设备时,如图4所示,该TCP连接建立的方法包括步骤401,hitiator向Target发送发现会话请求报文,该发现会话请求报文中封装有会话请求内容,且会话请求内容中携带有Initiator在发送发现会话请求报文时的源地址和目的地址(即报文头的源地址和目的地址)。在Discover会话过程中,Initiator需要向Target发送发现会话请求报文;本发明中,为了实现hitiator与Target的通信,可以将NAT设备的公网IP地址配置给所有 Initiator,各Initiator在需要发起Discover会话过程时,均会向配置的公网IP地址发送发现会话请求报文。以图3的应用场景为例,可将NAT设备的公网IP地址20. 1. 1. 1配置给各 Initiator,而Initiator在发送发现会话请求报文时,发现会话请求报文的报文头中,源地址为自身的IP地址1. 1. 1. 1,目的地址为公网IP地址20. 1. 1. 1。此外,发现会话请求报文中还封装有会话请求内容(即具体的数据),该会话请求内容中同样携带源地址为 1. 1. 1. 1,目的地址为20. 1. 1. 1的信息;实际应用中可将源地址和目的地址的信息封装在发现会话请求报文的Datasegment字段。步骤402,NAT设备接收化^化切!·发送给Target的发现会话请求报文,对报文头的目的地址进行转换,并将转换后的发现会话请求报文发送给Target。需要说明的是,内部服务器功能是NAT设备上使外网设备主动访问内网服务器的功能,用于完成地址映射。在具体实现时,首先配置IP地址A、PORTA、协议iSCSI、IP地址 B,PORTB的五元组,当通过IP地址A和PORTA接收到报文,且报文的协议为iSCSI时,则NAT 设备需要建立地址映射,将报文从IP地址B和PORTB转发出去。为了方便描述,后续对端口不再赘述。本发明中,需要在NAT设备上使能内部服务器功能,并将IP地址A配置给 Initiator ;以图3的应用场景为例,则NAT设备上可以配置20. 1. 1. 1为地址A,且 Initiator的发现会话请求报文的目的地址为20. 1. 1. 1 ;当NAT设备接收到发现会话请求报文后,查询五元组对应关系,将发现会话请求报文发送至IP地址B (IP地址B设置为 Target对应的某个接口地址,图3中IP地址B为192. 168. 1. 1),从而使得NAT设备可以通过IP地址B (192. 168. 1. 1)将发现会话请求报文发送给Target。需要说明的是,由于发现会话请求报文的目的地址为NAT设备的公网IP地址 (20. 1. 1. 1),因此NAT设备还需要将发现会话请求报文的目的地址转换为Target的私网IP 地址(192. 168. 1.4),并将转换后的发现会话请求报文发送给Target ;通过上述处理,可以将发现会话请求报文传输到Target上。步骤403,Target接收来自Initiator的发现会话请求报文,该发现会话请求报文中封装有会话请求内容,且会话请求内容中携带有Initiator在发送发现会话请求报文时的源地址和目的地址。步骤404,Target根据发现会话请求报文的报文头中的目的地址和源地址以及会话请求内容中的目的地址和源地址确定Initiator和Target的位置情况。情况一、当发现会话请求报文的报文头中的目的地址与会话请求内容中的目的地址不同时,则Target确定位置情况为Target位于私网,Initiator位于公网,且Target 与Initiator之间存在NAT设备。以图3的应用场景为例,在接收到发现会话请求报文后, 报文头中的目的地址为192. 168. 1.4,源地址为1. 1. 1. 1 ;而会话请求内容中的目的地址为 20. 1. 1. 1,源地址为1. 1. 1. 1 ;通过对比发现二者的目的地址不同,因此可以确定位置情况为Target位于私网,Initiator位于公网,且Target与Initiator之间存在NAT设备。情况二、当发现会话请求报文的报文头中的源地址与会话请求内容中的源地址不同时,则Target确定位置情况为Target位于公网,Initiator位于私网,且Target与 Initiator之间存在NAT设备。情况三、当发现会话请求报文的报文头中的源地址与会话请求内容中的源地址相同,且发现会话请求报文的报文头中的目的地址与会话请求内容中的目的地址相同时, 则Target确定位置情况为=Target与Initiator之间没有NAT设备,可以为Target与 Initiator均位于私网或者均位于公网。步骤405,Target向Initiator发送发现会话的响应报文。针对上述情况一、当Target位于私网,Initiator位于公网,且Target与 Initiator之间存在NAT设备时,对于Target向Initiator发送的发现会话的响应报文, 该响应报文中需要携带由Target使能反向TCP连接的信息(该信息表示需要由Target主动发起TCP连接过程);之后,由Initiator利用Target使能反向TCP连接的信息确定TCP 连接过程由Target发起,并等待Target发送的TCP连接请求报文。一种优选的实施方式中,在发送发现会话的响应报文时,在该响应报文中增加字段REVERSE-CONN,当REVERSE-CONN置为1时表示由Target使能反向TCP连接,否则,不通过Target使能反向TCP连接。此外,还可以在响应报文中增加字段IN-NAT,当IN-NAT置为 1时表示Target位于私网,否则,表示Target不位于私网。针对上述情况二和情况三,不需要由Target主动发起TCP连接过程,仍是由 Initiator主动发起TCP连接过程,因此不会造成Initiator访问Target时出现困难;对于Target向Initiator发送的发现会话的响应报文,按照现有方式进行处理即可,本发明中不再赘述。步骤406 Jnitiator接收来自Target的发现会话的响应报文;对于NAT设备的转发过程,在此不再赘述。本发明中,当发现会话的响应报文中携带由Target使能反向TCP连接的信息时, 则Initiator可以利用Target使能反向TCP连接的信息确定TCP连接过程由Target发起, 并等待Target发送的TCP连接请求报文。具体的,在Normal会话过程中,Initiator将不再主动发起TCP连接过程,而是等待Target主动发起TCP连接过程,从而建立Initiator 与Target之间的TCP连接。此外,当发现会话的响应报文中没有携带由Target使能反向TCP连接的信息时, 该响应报文中会携带Target返回的IP地址,且Initiator可通过响应报文得知Target并不在私网,或者Target与Initiator均在私网中,该情况下不需要等待Target主动发起 TCP连接过程,而是由Initiator主动发起TCP连接过程,并进行后续的Login请求等过程。本发明中,当确定结果为Target位于私网,Initiator位于公网,且Target与 Initiator之间存在NAT设备时,在Normal会话过程中,将由Target主动发起TCP连接过程,该过程进一步包括以下步骤步骤407,Target向Initiator发送TCP连接请求报文,以建立Target与 Initiator之间的TCP连接。本发明中,Target向Initiator发送TCP连接请求报文具体包括=Target利用IP 地址与Target的绑定关系选择出口 IP地址(即反向连接的出口 IP地址),并通过出口 IP 地址向Initiator发送TCP连接请求报文。具体的,由于存储系统(如IPSAN等设备)有很多网卡和很多出接口 IP地址,分配给每个Target的IP地址为多个出接口 IP地址中的一个;因此,Target需要利用IP地址与Target的绑定关系选择出口 IP地址。例如,Initiator需要连接的Target为Targetl, 通过查询Target-IP绑定关系列表,发现Targetl绑定的IP地址为10. 10. 10. 1 ;因此选择的出口 IP地址为10. 10. 10. 1。Target主动发起TCP连接的过程为=Target使用10. 10. 10. 1向Initiator的公网地址1. 1. 1. 1发送TCP连接请求报文(源地址为10. 10. 10. 1,目的地址为1. 1. 1. 1)。此外,还可增加1个iSCSI协议的内容(如增加iSCSI login message报文),在TCP连接建立完成后,Target发送该报文,且该报文的内容用于通知Target在私网中,且报文中也可包含2个字段IN-NAT和REVERSE-C0NN,2个字段都置为1则表示Target在私网,并且使能反向TCP连接。本发明中,Initiator在接收到TCP连接请求报文后,则Initiator可建立TCP连接并发起iSCSI login请求,以及执行后续相关处理。Initiator与Target建立TCP连接的过程不再详加赘述;当hitiator接收到iSCSI login message报文后,即可得知在私网 (即NAT内部)的Target的反向TCP连接已经建立完成。需要注意的是,假设Target发起的反向TCP连接的源/目的IP地址和端口为10. 10. 10. 1:3260/1. 1. 1. 1:15151,在经过NAT设备转换后,变为 20. 1. 1. 1:25000/1. 1. 1. 1 15151,源地址和端口发生变化;之后,Initiator会采用变化后的源地址20. 1. 1. 1 25000作为Target的目的地址进行Login请求,且由于NAT设备地址映射关系已建立,则该Login请求会到达Target的10. 10. 10. 1的IP地址和接口上,Target 正常响应即可,相应处理本发明中不再赘述。当Initiator确定位置情况为Target位于私网,Initiator位于公网,且Target 与Initiator之间存在NAT设备时,如图5所示,该TCP连接建立的方法包括步骤501,Initiator向Target发送发现会话请求报文。该发现会话请求报文中封装有会话请求内容,且该场景下,会话请求内容中可以不携带Initiator在发送发现会话请求报文时的源地址和目的地址。在Discover会话过程中,Initiator需要向Target发送发现会话请求报文;本发明中,为了实现hitiator与Target的通信,可以将NAT设备的公网IP地址配置给所有 Initiator,各Initiator在需要发起Discover会话过程时,均会向配置的公网IP地址发送发现会话请求报文。以图3的应用场景为例,可将NAT设备的公网IP地址20. 1. 1. 1配置给各 Initiator,而Initiator在发送发现会话请求报文时,发现会话请求报文的报文头中,源地址为自身的IP地址1. 1. 1. 1,目的地址为公网IP地址20. 1. 1. 1。步骤502,NAT设备接收Initiator发送给Target的发现会话请求报文,对报文头的目的地址进行转换,并将转换后的发现会话请求报文发送给Target。由于发现会话请求报文的目的地址为NAT设备的公网IP地址1. 1. 1), 因此NAT设备需要将发现会话请求报文的目的地址转换为Target的私网IP地址 (192. 168. 1. 4),并将转换后的发现会话请求报文发送给Target ;本步骤与上述步骤402的处理相同,在此不再重复赘述。步骤503,Target接收来自Initiator的发现会话请求报文,该发现会话请求报文中封装有会话请求内容。步骤504,Target向Initiator发送发现会话的响应报文,该响应报文中封装有会话响应内容,且会话响应内容中携带有Target在发送响应报文时的源地址和目的地址;由 Initiator利用响应报文的报文头中的源地址和目的地址以及会话响应内容中的源地址和目的地址确定Initiator和Target的位置情况。在Discover会话过程中,当接收到来自Initiator的发现会话请求报文后, Target需要向Initiator发送发现会话的响应报文,在响应报文的报文头中,源地址为自身的IP地址,目的地址为hitiator的IP地址;此外,该响应报文中还会封装有会话响应内容(即具体的数据),且该会话响应内容中同样需要携带源地址和目的地址的信息。步骤505 Jnitiator接收来自Target的发现会话的响应报文,该响应报文中封装有会话响应内容,且会话响应内容中携带有Target在发送响应报文时的源地址和目的地址;对于NAT设备的转发过程,在此不再赘述。
步骤506,Initiator利用响应报文的报文头中的源地址和目的地址以及会话响应内容中的源地址和目的地址确定Initiator和Target的位置情况。情况一、当响应报文的报文头中的源地址与会话响应内容中的源地址不同时, 则hitiator确定位置情况为Target位于私网,Initiator位于公网,且Target与 Initiator之间存在NAT设备。情况二、当响应报文的报文头中的目的地址与会话响应内容中的目的地址不同时,Initiator确定位置情况为则Target位于公网,Initiator位于私网,且Target与 Initiator之间存在NAT设备。情况三、当响应报文的报文头中的源地址与会话响应内容中的源地址相同,且响应报文的报文头中的目的地址与会话响应内容中的目的地址相同时,则Initiator确定位置情况为=Target与Initiator之间没有NAT设备,可以为Target与Initiator均位于私网或者均位于公网。针对上述情况二和情况三,不需要由Target主动发起TCP连接过程,仍是由 Initiator主动发起TCP连接过程,因此不会造成Initiator访问Target时出现困难,按照现有方式进行处理即可,本发明中不再赘述。针对上述情况一、当Target位于私网,Initiator位于公网,且Target与 Initiator之间存在NAT设备时,该方法还包括以下步骤步骤507,Initiator向Target发送位置情况的通知消息(用于通知Initiator和 Target的位置情况的信息),即通知Target当前位置情况为Target位于私网,Initiator 位于公网,且Target与Initiator之间存在NAT设备,且通知Target使能反向TCP连接。当Initiator获知位置情况为Target位于私网,Initiator位于公网,且Target 与Initiator之间存在NAT设备时,则Initiator确定TCP连接过程需要由Target发起,向 Target发送位置情况的通知消息,并等待Target发送的TCP连接请求报文,以建立Target 与Initiator之间的TCP连接。具体的,在Normal会话过程中,Initiator将不再主动发起TCP连接过程,而是等待Target主动发起TCP连接过程,从而建立Initiator与Target 之间的TCP连接。步骤508,Target接收来自hitiator的位置情况的通知消息,并利用通知消息确定Initiator和Target的位置情况,即确定Target位于私网,Initiator位于公网,且 Target与Initiator之间存在NAT设备。步骤509,Target向Initiator发送TCP连接请求报文,以建立Target与 Initiator之间的TCP连接。需要说明的是,Initiator在Target返回响应报文的基础上,需要向Target发送 Login message消息(该消息的内容包含reverse-conn字段,1为使能);在Target接收到该Login message消息后,Target采用Target所绑定的IP地址向Initiator发起反向 TCP连接,并由Initiator经过反向TCP连接向Target发起Normal login会话等后续过程。本发明中,Target向Initiator发送TCP连接请求报文具体包括=Target利用IP 地址与Target的绑定关系选择出口 IP地址(即反向连接的出口 IP地址),并通过出口 IP 地址向Initiator发送TCP连接请求报文。
具体的,由于存储系统(如IPSAN等设备)有很多网卡和很多出接口 IP地址,分配给每个Target的IP地址为多个出接口 IP地址中的一个;因此,Target需要利用IP地址与Target的绑定关系选择出口 IP地址。例如,Initiator需要连接的Target为Targetl, 通过查询Target-IP绑定关系列表,发现Targetl绑定的IP地址为10. 10. 10. 1 ;因此选择的出口 IP地址为10. 10. 10. 1。Target主动发起TCP连接的过程为=Target使用10. 10. 10. 1向Initiator的公网地址1. 1. 1. 1发送TCP连接请求报文(源地址为10. 10. 10. 1,目的地址为1. 1. 1. 1)。本发明中,Initiator在接收到TCP连接请求报文后,则Initiator可建立TCP连接并发起 iSCSI login请求,以及执行后续相关处理。Initiator与Target建立TCP连接的过程不再详加赘述。需要注意的是,假设Target发起的反向TCP连接的源/目的IP地址和端口为10. 10. 10. 1:3260/1. 1. 1. 1:15151,在经过NAT设备转换后,变为 20. 1. 1. 1:25000/1. 1. 1. 1 15151,源地址和端口发生变化;之后,Initiator会采用变化后的源地址20. 1. 1. 1 25000作为Target的目的地址进行Login请求,且由于NAT设备地址映射关系已建立,则该Login请求会到达Target的10. 10. 10. 1的IP地址和接口上,Target 正常响应即可,相应处理本发明中不再赘述。基于与上述方法同样的发明构思,本发明还提出了一种连接接收设备Target,应用于包括连接发起设备hitiator、所述Target和网络地址转换NAT设备的基于互联网的小型计算机系统接口 iSCSI网络中,如图6所示,所述Target包括确定模块11,用于确定所述Initiator和所述Target的位置情况;通信模块12,用于当确定结果为所述Target位于私网,所述Initiator位于公网, 且所述Target与所述Initiator之间存在所述NAT设备时,向所述Initiator发送传输控制协议TCP连接请求报文,以建立所述Target与所述Initiator之间的TCP连接。所述通信模块12,还用于接收来自所述hitiator的发现会话请求报文,所述发现会话请求报文中封装有会话请求内容,且所述会话请求内容中携带有所述Initiator在发送所述发现会话请求报文时的源地址和目的地址;所述确定模块11,具体用于当所述发现会话请求报文的报文头中的目的地址与所述会话请求内容中的目的地址不同时,确定位置情况为所述Target位于私网,所述 Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备;当所述发现会话请求报文的报文头中的源地址与所述会话请求内容中的源地址不同时,确定位置情况为所述Target位于公网,所述Initiator位于私网,且所述Target 与所述Initiator之间存在所述NAT设备;当所述发现会话请求报文的报文头中的源地址与所述会话请求内容中的源地址相同,且所述发现会话请求报文的报文头中的目的地址与所述会话请求内容中的目的地址相同时,确定位置情况为所述Target与所述Initiator之间没有NAT设备。所述通信模块12,还用于当所述Target位于私网,所述Initiator位于公网, 且所述Target与所述Initiator之间存在所述NAT设备时,向所述Initiator发送发现会话的响应报文,所述响应报文中携带由所述Target使能反向TCP连接的信息;由所述 Initiator利用所述Target使能反向TCP连接的信息确定TCP连接过程由所述Target发起,并等待所述Target发送的TCP连接请求报文,以建立所述Target与所述Initiator之间的TCP连接。所述通信模块12,还用于接收来自所述hitiator的发现会话请求报文,并向所述^iitiator发送发现会话的响应报文,所述响应报文中封装有会话响应内容,且所述会话响应内容中携带有所述Target在发送所述响应报文时的源地址和目的地址;由所述Initiator利用所述响应报文的报文头中的源地址和目的地址以及所述会话响应内容中的源地址和目的地址确定Initiator和Target的位置情况;当所述响应报文的报文头中的源地址与所述会话响应内容中的源地址不同时,确定位置情况为所述 Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备;当所述响应报文的报文头中的目的地址与所述会话响应内容中的目的地址不同时,确定位置情况为所述Target位于公网,所述Initiator位于私网,且所述Target与所述Initiator之间存在所述NAT设备;当所述响应报文的报文头中的源地址与所述会话响应内容中的源地址相同,且所述响应报文的报文头中的目的地址与所述会话响应内容中的目的地址相同时,确定位置情况为所述Target与所述Initiator之间没有NAT设备;当确定结果为所述Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备时,接收来自所述hitiator的位置情况的通知消息;所述确定模块11,具体用于利用所述通知消息确定所述Initiator和所述Target 的位置情况。所述通信模块12,具体用于利用IP地址与Target的绑定关系选择出口 IP地址, 并通过所述出口 IP地址向所述Initiator发送TCP连接请求报文。其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。基于与上述方法同样的发明构思,本发明还提出了一种连接发起设备hitiator, 应用于包括所述hitiator、连接接收设备Target和网络地址转换NAT设备的基于互联网的小型计算机系统接口 iSCSI网络中,如图7所示,所述Initiator包括通信模块21,用于将所述Initiator和所述Target的位置情况的信息通知给所述 Target,由所述Target利用所述信息确定所述Initiator和所述Target的位置情况;处理模块22,用于当获知位置情况为所述Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备时,确定传输控制协议TCP 连接过程由所述Target发起,并等待所述Target发送的TCP连接请求报文,以建立所述 Target与所述Initiator之间的TCP连接。所述通信模块21,具体用于向所述Target发送发现会话请求报文,所述发现会话请求报文中封装有会话请求内容,且所述会话请求内容中携带有所述Initiator在发送所述发现会话请求报文时的源地址和目的地址;由所述Target利用所述发现会话请求报文的报文头中的源地址和目的地址以及所述会话请求内容中的源地址和目的地址确定所述Initiator和所述Target的位置情况;当所述发现会话请求报文的报文头中的目的地址与所述会话请求内容中的目的地址不同时,确定位置情况为所述Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备;当所述发现会话请求报文的报文头中的源地址与所述会话请求内容中的源地址不同时,确定位置情况为所述Target位于公网,所述 Initiator位于私网,且所述Target与所述Initiator之间存在所述NAT设备;当所述发现会话请求报文的报文头中的源地址与所述会话请求内容中的源地址相同,且所述发现会话请求报文的报文头中的目的地址与所述会话请求内容中的目的地址相同时,确定位置情况为所述Target与所述Initiator之间没有NAT设备。所述通信模块21,还用于在向所述Target发送发现会话请求报文之后,接收来自所述Target的发现会话的响应报文,且在所述Target确定位置情况为所述Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备时,所述响应报文中携带由所述Target使能反向TCP连接的信息;所述处理模块22,具体用于通过所述由所述Target使能反向TCP连接的信息获知位置情况为所述Target位于私网,所述Initiator位于公网,且所述Target与所述 Initiator之间存在所述NAT设备。所述通信模块21,具体用于向所述Target发送发现会话请求报文,并接收来自所述Target的发现会话的响应报文,所述响应报文中封装有会话响应内容,且所述会话响应内容中携带有所述Target在发送所述响应报文时的源地址和目的地址;当所述Target位于私网,所述Initiator位于公网,且所述Target与所述 Initiator之间存在所述NAT设备时,向所述Target发送位置情况的通知消息,由所述 Target利用所述通知消息确定所述Initiator和所述Target的位置情况为所述Target 位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT 设备;所述处理模块22,还用于利用所述响应报文的报文头中的源地址和目的地址以及所述会话响应内容中的源地址和目的地址确定Initiator和Target的位置情况。所述处理模块22,具体用于当所述响应报文的报文头中的源地址与所述会话响应内容中的源地址不同时,确定位置情况为所述Target位于私网,所述hitiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备;当所述响应报文的报文头中的目的地址与所述会话响应内容中的目的地址不同时,确定位置情况为所述Target位于公网,所述Initiator位于私网,且所述Target与所述Initiator之间存在所述NAT设备;当所述响应报文的报文头中的源地址与所述会话响应内容中的源地址相同,且所述响应报文的报文头中的目的地址与所述会话响应内容中的目的地址相同时,确定位置情况为所述Target与所述Initiator之间没有NAT设备。所述TCP连接请求报文为所述Target通过出口 IP地址向所述Initiator发送的 TCP连接请求报文,且所述出口 IP地址为所述Target利用IP地址与Target的绑定关系选择的出口 IP地址。其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是⑶-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。上述本发明序号仅仅为了描述,不代表实施例的优劣。以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。
权利要求
1.一种传输控制协议TCP连接建立的方法,应用于包括连接发起设备hitiator、连接接收设备Target和网络地址转换NAT设备的基于互联网的小型计算机系统接口 iSCSI网络中,其特征在于,该方法包括以下步骤所述Target确定所述Initiator和所述Target的位置情况; 当确定结果为所述Target位于私网,所述Initiator位于公网,且所述Target与所述 Initiator之间存在所述NAT设备时,所述Target向所述Initiator发送TCP连接请求报文,以建立所述Target与所述Initiator之间的TCP连接。
2.如权利要求1所述的方法,其特征在于,所述Target确定所述Initiator和所述 Target的位置情况,具体包括所述Target接收来自所述^itiator的发现会话请求报文,所述发现会话请求报文中封装有会话请求内容,且所述会话请求内容中携带有所述Initiator在发送所述发现会话请求报文时的源地址和目的地址;当所述发现会话请求报文的报文头中的目的地址与所述会话请求内容中的目的地址不同时,所述Target确定位置情况为所述Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备;当所述发现会话请求报文的报文头中的源地址与所述会话请求内容中的源地址不同时,所述Target确定位置情况为所述Target位于公网,所述Initiator位于私网,且所述 Target与所述Initiator之间存在所述NAT设备;当所述发现会话请求报文的报文头中的源地址与所述会话请求内容中的源地址相同, 且所述发现会话请求报文的报文头中的目的地址与所述会话请求内容中的目的地址相同时,所述Target确定位置情况为所述Target与所述Initiator之间没有NAT设备。
3.如权利要求2所述的方法,其特征在于,在所述Target接收来自所述hitiator的发现会话请求报文与所述Target向所述Initiator发送TCP连接请求报文之间,所述方法还包括当所述Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator 之间存在所述NAT设备时,所述Target向所述Initiator发送发现会话的响应报文,所述响应报文中携带由所述Target使能反向TCP连接的信息;由所述Initiator利用所述Target使能反向TCP连接的信息确定TCP连接过程由所述Target发起,并等待所述Target发送的TCP连接请求报文,以建立所述Target与所述 Initiator之间的TCP连接。
4.如权利要求1所述的方法,其特征在于,所述Target确定所述Initiator和所述 Target的位置情况,具体包括所述Target接收来自所述Initiator的发现会话请求报文,并向所述Initiator发送发现会话的响应报文,所述响应报文中封装有会话响应内容,且所述会话响应内容中携带有所述Target在发送所述响应报文时的源地址和目的地址;由所述Initiator利用所述响应报文的报文头中的源地址和目的地址以及所述会话响应内容中的源地址和目的地址确定Initiator和Target的位置情况;当确定结果为所述Target位于私网,所述Initiator位于公网,且所述Target与所述 Initiator之间存在所述NAT设备时,所述Target接收来自所述hitiator的位置情况的通知消息,并利用所述通知消息确定所述Initiator和所述Target的位置情况。
5.如权利要求4所述的方法,其特征在于,所述^itiator利用所述响应报文的报文头中的源地址和目的地址以及所述会话响应内容中的源地址和目的地址确定Initiator和 Target的位置情况,具体包括当所述响应报文的报文头中的源地址与所述会话响应内容中的源地址不同时,所述 Initiator确定位置情况为所述Target位于私网,所述Initiator位于公网,且所述 Target与所述Initiator之间存在所述NAT设备;当所述响应报文的报文头中的目的地址与所述会话响应内容中的目的地址不同时,所述Initiator确定位置情况为所述Target位于公网,所述Initiator位于私网,且所述 Target与所述Initiator之间存在所述NAT设备;当所述响应报文的报文头中的源地址与所述会话响应内容中的源地址相同,且所述响应报文的报文头中的目的地址与所述会话响应内容中的目的地址相同时,所述Initiator 确定位置情况为所述Target与所述Initiator之间没有NAT设备。
6.如权利要求1所述的方法,其特征在于,所述Target向所述Initiator发送TCP连接请求报文,具体包括所述Target利用IP地址与Target的绑定关系选择出口 IP地址,并通过所述出口 IP 地址向所述Initiator发送TCP连接请求报文。
7.一种传输控制协议TCP连接建立的方法,应用于包括连接发起设备hitiator、连接接收设备Target和网络地址转换NAT设备的基于互联网的小型计算机系统接口 iSCSI网络中,其特征在于,该方法包括以下步骤所述Initiator将所述Initiator和所述Target的位置情况的信息通知给所述 Target,由所述Target利用该信息确定所述Initiator和所述Target的位置情况;当所述Initiator获知位置情况为所述Target位于私网,所述Initiator位于公网, 且所述Target与所述Initiator之间存在所述NAT设备时,所述Initiator确定TCP连接过程由所述Target发起,并等待所述Target发送的TCP连接请求报文,以建立所述Target 与所述Initiator之间的TCP连接。
8.如权利要求7所述的方法,其特征在于,所述Initiator将所述Initiator和所述Target的位置情况的信息通知给所述Target,由所述Target利用该信息确定所述 Initiator和所述Target的位置情况,具体包括所述^itiator向所述Target发送发现会话请求报文,所述发现会话请求报文中封装有会话请求内容,且所述会话请求内容中携带有所述Initiator在发送所述发现会话请求报文时的源地址和目的地址;由所述Target利用所述发现会话请求报文的报文头中的源地址和目的地址以及所述会话请求内容中的源地址和目的地址确定所述Initiator和所述Target的位置情况。
9.如权利要求8所述的方法,其特征在于,所述Target利用所述发现会话请求报文的报文头中的源地址和目的地址以及所述会话请求内容中的源地址和目的地址确定所述 Initiator和所述Target的位置情况,具体包括当所述发现会话请求报文的报文头中的目的地址与所述会话请求内容中的目的地址不同时,所述Target确定位置情况为所述Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备;当所述发现会话请求报文的报文头中的源地址与所述会话请求内容中的源地址不同时,所述Target确定位置情况为所述Target位于公网,所述Initiator位于私网,且所述 Target与所述Initiator之间存在所述NAT设备;当所述发现会话请求报文的报文头中的源地址与所述会话请求内容中的源地址相同, 且所述发现会话请求报文的报文头中的目的地址与所述会话请求内容中的目的地址相同时,所述Target确定位置情况为所述Target与所述Initiator之间没有NAT设备。
10.如权利要求8或9所述的方法,其特征在于,所述Initiator获知位置情况为所述 Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备,包括在向所述Target发送发现会话请求报文之后,所述hitiator接收来自所述Target 的发现会话的响应报文,且在所述Target确定位置情况为所述Target位于私网,所述 Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备时,所述响应报文中携带由所述Target使能反向TCP连接的信息;所述Initiator通过所述由所述Target使能反向TCP连接的信息获知位置情况为所述Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备。
11.如权利要求7所述的方法,其特征在于,所述Initiator将所述Initiator和所述Target的位置情况的信息通知给所述Target,由所述Target利用该信息确定所述 Initiator和所述Target的位置情况,具体包括所述hitiator向所述Target发送发现会话请求报文,并接收来自所述Target的发现会话的响应报文,所述响应报文中封装有会话响应内容,且所述会话响应内容中携带有所述Target在发送所述响应报文时的源地址和目的地址;所述Initiator利用所述响应报文的报文头中的源地址和目的地址以及所述会话响应内容中的源地址和目的地址确定Initiator和Target的位置情况;当确定结果为所述Target位于私网,所述Initiator位于公网,且所述Target与所述 Initiator之间存在所述NAT设备时,所述hitiator向所述Target发送位置情况的通知消息,由所述Target利用所述通知消息确定所述Initiator和所述Target的位置情况为 所述Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备。
12.如权利要求11所述的方法,其特征在于,所述Initiator利用所述响应报文的报文头中的源地址和目的地址以及所述会话响应内容中的源地址和目的地址确定Initiator 和Target的位置情况,具体包括当所述响应报文的报文头中的源地址与所述会话响应内容中的源地址不同时,所述 Initiator确定位置情况为所述Target位于私网,所述Initiator位于公网,且所述 Target与所述Initiator之间存在所述NAT设备;当所述响应报文的报文头中的目的地址与所述会话响应内容中的目的地址不同时,所述Initiator确定位置情况为所述Target位于公网,所述Initiator位于私网,且所述 Target与所述Initiator之间存在所述NAT设备;当所述响应报文的报文头中的源地址与所述会话响应内容中的源地址相同,且所述响应报文的报文头中的目的地址与所述会话响应内容中的目的地址相同时,所述Initiator 确定位置情况为所述Target与所述Initiator之间没有NAT设备。
13.如权利要求7所述的方法,其特征在于,所述Initiator等待所述Target发送的 TCP连接请求报文,具体包括所述Initiator等待所述Target通过出口 IP地址向所述Initiator发送的TCP连接请求报文,且所述出口 IP地址为所述Target利用IP地址与Target的绑定关系选择的出口 IP地址。
14.一种连接接收设备Target,应用于包括连接发起设备hitiator、所述Target和网络地址转换NAT设备的基于互联网的小型计算机系统接口 iSCSI网络中,其特征在于,所述 Target 包括确定模块,用于确定所述Initiator和所述Target的位置情况;通信模块,用于当确定结果为所述Target位于私网,所述Initiator位于公网,且所述 Target与所述Initiator之间存在所述NAT设备时,向所述Initiator发送传输控制协议 TCP连接请求报文,以建立所述Target与所述Initiator之间的TCP连接。
15.如权利要求14所述的Target,其特征在于,所述通信模块,还用于接收来自所述^itiator的发现会话请求报文,所述发现会话请求报文中封装有会话请求内容,且所述会话请求内容中携带有所述Initiator在发送所述发现会话请求报文时的源地址和目的地址;所述确定模块,具体用于当所述发现会话请求报文的报文头中的目的地址与所述会话请求内容中的目的地址不同时,确定位置情况为所述Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备;当所述发现会话请求报文的报文头中的源地址与所述会话请求内容中的源地址不同时,确定位置情况为所述Target位于公网,所述Initiator位于私网,且所述Target与所述Initiator之间存在所述NAT设备;当所述发现会话请求报文的报文头中的源地址与所述会话请求内容中的源地址相同, 且所述发现会话请求报文的报文头中的目的地址与所述会话请求内容中的目的地址相同时,确定位置情况为所述Target与所述Initiator之间没有NAT设备。
16.如权利要求15所述的Target,其特征在于,所述通信模块,还用于当所述Target位于私网,所述Initiator位于公网,且所述 Target与所述Initiator之间存在所述NAT设备时,向所述Initiator发送发现会话的响应报文,所述响应报文中携带由所述Target使能反向TCP连接的信息;由所述Initiator利用所述Target使能反向TCP连接的信息确定TCP连接过程由所述Target发起,并等待所述Target发送的TCP连接请求报文,以建立所述Target与所述 Initiator之间的TCP连接。
17.如权利要求14所述的Target,其特征在于,所述通信模块,还用于接收来自所述^itiator的发现会话请求报文,并向所述 Initiator发送发现会话的响应报文,所述响应报文中封装有会话响应内容,且所述会话响应内容中携带有所述Target在发送所述响应报文时的源地址和目的地址;由所述Initiator利用所述响应报文的报文头中的源地址和目的地址以及所述会话响应内容中的源地址和目的地址确定Initiator和Target的位置情况;当所述响应报文的报文头中的源地址与所述会话响应内容中的源地址不同时,确定位置情况为所述Target 位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT 设备;当所述响应报文的报文头中的目的地址与所述会话响应内容中的目的地址不同时, 确定位置情况为所述Target位于公网,所述Initiator位于私网,且所述Target与所述 Initiator之间存在所述NAT设备;当所述响应报文的报文头中的源地址与所述会话响应内容中的源地址相同,且所述响应报文的报文头中的目的地址与所述会话响应内容中的目的地址相同时,确定位置情况为所述Target与所述Initiator之间没有NAT设备;当确定结果为所述Target位于私网,所述Initiator位于公网,且所述Target与所述 Initiator之间存在所述NAT设备时,接收来自所述hitiator的位置情况的通知消息;所述确定模块,具体用于利用所述通知消息确定所述Initiator和所述Target的位置情况。
18.如权利要求14所述的Target,其特征在于,所述通信模块,具体用于利用IP地址与Target的绑定关系选择出口 IP地址,并通过所述出口 IP地址向所述Initiator发送TCP连接请求报文。
19.一种连接发起设备hitiator,应用于包括所述hitiator、连接接收设备Target 和网络地址转换NAT设备的基于互联网的小型计算机系统接口 iSCSI网络中,其特征在于, 所述Initiator包括通信模块,用于将所述Initiator和所述Target的位置情况的信息通知给所述 Target,由所述Target利用所述信息确定所述Initiator和所述Target的位置情况;处理模块,用于当获知位置情况为所述Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备时,确定传输控制协议TCP连接过程由所述Target发起,并等待所述Target发送的TCP连接请求报文,以建立所述Target与所述Initiator之间的TCP连接。
20.如权利要求19所述的hitiator,其特征在于,所述通信模块,具体用于向所述Target发送发现会话请求报文,所述发现会话请求报文中封装有会话请求内容,且所述会话请求内容中携带有所述Initiator在发送所述发现会话请求报文时的源地址和目的地址;由所述Target利用所述发现会话请求报文的报文头中的源地址和目的地址以及所述会话请求内容中的源地址和目的地址确定所述Initiator和所述Target的位置情况;当所述发现会话请求报文的报文头中的目的地址与所述会话请求内容中的目的地址不同时, 确定位置情况为所述Target位于私网,所述Initiator位于公网,且所述Target与所述 Initiator之间存在所述NAT设备;当所述发现会话请求报文的报文头中的源地址与所述会话请求内容中的源地址不同时,确定位置情况为所述Target位于公网,所述Initiator 位于私网,且所述Target与所述Initiator之间存在所述NAT设备;当所述发现会话请求报文的报文头中的源地址与所述会话请求内容中的源地址相同,且所述发现会话请求报文的报文头中的目的地址与所述会话请求内容中的目的地址相同时,确定位置情况为所述 Target与所述Initiator之间没有NAT设备。
21.如权利要求20所述的hitiator,其特征在于,所述通信模块,还用于在向所述Target发送发现会话请求报文之后,接收来自所述 Target的发现会话的响应报文,且在所述Target确定位置情况为所述Target位于私网, 所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备时,所述响应报文中携带由所述Target使能反向TCP连接的信息;所述处理模块,具体用于通过所述由所述Target使能反向TCP连接的信息获知位置情况为所述Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备。
22.如权利要求19所述的hitiator,其特征在于,所述通信模块,具体用于向所述Target发送发现会话请求报文,并接收来自所述 Target的发现会话的响应报文,所述响应报文中封装有会话响应内容,且所述会话响应内容中携带有所述Target在发送所述响应报文时的源地址和目的地址;当所述Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator 之间存在所述NAT设备时,向所述Target发送位置情况的通知消息,由所述Target利用所述通知消息确定所述Initiator和所述Target的位置情况为所述Target位于私网,所述 Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备;所述处理模块,还用于利用所述响应报文的报文头中的源地址和目的地址以及所述会话响应内容中的源地址和目的地址确定Initiator和Target的位置情况。
23.如权利要求22所述的hitiator,其特征在于,所述处理模块,具体用于当所述响应报文的报文头中的源地址与所述会话响应内容中的源地址不同时,确定位置情况为所述Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备;当所述响应报文的报文头中的目的地址与所述会话响应内容中的目的地址不同时,确定位置情况为所述Target位于公网,所述Initiator位于私网,且所述Target与所述 Initiator之间存在所述NAT设备;当所述响应报文的报文头中的源地址与所述会话响应内容中的源地址相同,且所述响应报文的报文头中的目的地址与所述会话响应内容中的目的地址相同时,确定位置情况为所述Target与所述Initiator之间没有NAT设备。
24.如权利要求19所述的hitiator,其特征在于,所述TCP连接请求报文为所述 Target通过出口 IP地址向所述Initiator发送的TCP连接请求报文,且所述出口 IP地址为所述Target利用IP地址与Target的绑定关系选择的出口 IP地址。
全文摘要
本发明公开了一种TCP连接建立的方法和设备,该方法包括Target确定Initiator和Target的位置情况;当确定结果为所述Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在NAT设备时,所述Target向所述Initiator发送TCP连接请求报文,以建立所述Target与所述Initiator之间的TCP连接。本发明中,可以保证TCP连接的正常建立,并使得Initiator与Target间可以正常进行报文传输。
文档编号H04L29/08GK102347990SQ20111036491
公开日2012年2月8日 申请日期2011年11月17日 优先权日2011年11月17日
发明者余剑声, 周迪 申请人:杭州华三通信技术有限公司