CN102347990A - 一种tcp连接建立的方法和设备 - Google Patents

一种tcp连接建立的方法和设备 Download PDF

Info

Publication number
CN102347990A
CN102347990A CN2011103649138A CN201110364913A CN102347990A CN 102347990 A CN102347990 A CN 102347990A CN 2011103649138 A CN2011103649138 A CN 2011103649138A CN 201110364913 A CN201110364913 A CN 201110364913A CN 102347990 A CN102347990 A CN 102347990A
Authority
CN
China
Prior art keywords
target
initiator
situation
address
conversation request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2011103649138A
Other languages
English (en)
Other versions
CN102347990B (zh
Inventor
余剑声
周迪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
New H3C Information Technologies Co Ltd
Original Assignee
Hangzhou H3C Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou H3C Technologies Co Ltd filed Critical Hangzhou H3C Technologies Co Ltd
Priority to CN201110364913.8A priority Critical patent/CN102347990B/zh
Publication of CN102347990A publication Critical patent/CN102347990A/zh
Application granted granted Critical
Publication of CN102347990B publication Critical patent/CN102347990B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明公开了一种TCP连接建立的方法和设备,该方法包括:Target确定Initiator和Target的位置情况;当确定结果为所述Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在NAT设备时,所述Target向所述Initiator发送TCP连接请求报文,以建立所述Target与所述Initiator之间的TCP连接。本发明中,可以保证TCP连接的正常建立,并使得Initiator与Target间可以正常进行报文传输。

Description

一种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,基于互联网的小型计算机系统接口)的应用场景示意图,在Initiator(连接发起设备,即客户端)和Target(连接接收设备,即存储系统)间使用TCP(TransmissionControl 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设备;且由于Initiator为协议交互过程的主动发起者,当Initiator部署在公网,Target部署在私网时,无法实现协议交互过程,即无法正常建立TCP连接,从而使得Initiator与Target间无法进行报文传输。
发明内容
本发明提供一种TCP连接建立的方法和设备,以在Initiator与Target之间部署NAT设备时,实现TCP连接的建立过程。
为了达到上述目的,本发明提供一种传输控制协议TCP连接建立的方法,应用于包括连接发起设备Initiator、连接接收设备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位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备时,所述Target向所述Initiator发送发现会话的响应报文,所述响应报文中携带由所述Target使能反向TCP连接的信息;
由所述Initiator利用所述Target使能反向TCP连接的信息确定TCP连接过程由所述Target发起,并等待所述Target发送的TCP连接请求报文,以建立所述Target与所述Initiator之间的TCP连接。
所述Target确定所述Initiator和所述Target的位置情况,具体包括:
所述Target接收来自所述Initiator的发现会话请求报文,并向所述Initiator发送发现会话的响应报文,所述响应报文中封装有会话响应内容,且所述会话响应内容中携带有所述Target在发送所述响应报文时的源地址和目的地址;
由所述Initiator利用所述响应报文的报文头中的源地址和目的地址以及所述会话响应内容中的源地址和目的地址确定Initiator和Target的位置情况;
当确定结果为所述Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备时,所述Target接收来自所述Initiator的位置情况的通知消息,并利用所述通知消息确定所述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连接建立的方法,应用于包括连接发起设备Initiator、连接接收设备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与所述Initiator之间存在所述NAT设备。
所述Initiator将所述Initiator和所述Target的位置情况的信息通知给所述Target,由所述Target利用该信息确定所述Initiator和所述Target的位置情况,具体包括:
所述Initiator向所述Target发送发现会话请求报文,并接收来自所述Target的发现会话的响应报文,所述响应报文中封装有会话响应内容,且所述会话响应内容中携带有所述Target在发送所述响应报文时的源地址和目的地址;
所述Initiator利用所述响应报文的报文头中的源地址和目的地址以及所述会话响应内容中的源地址和目的地址确定Initiator和Target的位置情况;
当确定结果为所述Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备时,所述Initiator向所述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,应用于包括连接发起设备Initiator、所述Target和网络地址转换NAT设备的基于互联网的小型计算机系统接口iSCSI网络中,所述Target包括:
确定模块,用于确定所述Initiator和所述Target的位置情况;
通信模块,用于当确定结果为所述Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备时,向所述Initiator发送传输控制协议TCP连接请求报文,以建立所述Target与所述Initiator之间的TCP连接。
所述通信模块,还用于接收来自所述Initiator的发现会话请求报文,所述发现会话请求报文中封装有会话请求内容,且所述会话请求内容中携带有所述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连接。
所述通信模块,还用于接收来自所述Initiator的发现会话请求报文,并向所述Initiator发送发现会话的响应报文,所述响应报文中封装有会话响应内容,且所述会话响应内容中携带有所述Target在发送所述响应报文时的源地址和目的地址;
由所述Initiator利用所述响应报文的报文头中的源地址和目的地址以及所述会话响应内容中的源地址和目的地址确定Initiator和Target的位置情况;当所述响应报文的报文头中的源地址与所述会话响应内容中的源地址不同时,确定位置情况为:所述Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备;当所述响应报文的报文头中的目的地址与所述会话响应内容中的目的地址不同时,确定位置情况为:所述Target位于公网,所述Initiator位于私网,且所述Target与所述Initiator之间存在所述NAT设备;当所述响应报文的报文头中的源地址与所述会话响应内容中的源地址相同,且所述响应报文的报文头中的目的地址与所述会话响应内容中的目的地址相同时,确定位置情况为:所述Target与所述Initiator之间没有NAT设备;
当确定结果为所述Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备时,接收来自所述Initiator的位置情况的通知消息;
所述确定模块,具体用于利用所述通知消息确定所述Initiator和所述Target的位置情况。
所述通信模块,具体用于利用IP地址与Target的绑定关系选择出口IP地址,并通过所述出口IP地址向所述Initiator发送TCP连接请求报文。
一种连接发起设备Initiator,应用于包括所述Initiator、连接接收设备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位于私网,所述Initiator位于公网,且所述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是本发明提出的一种连接发起设备Initiator的结构示意图。
具体实施方式
本发明提出一种TCP连接建立的方法,该方法应用于包括Initiator和Target的iSCSI网络中,此外,根据实际网络部署情况,还可以在网络中部署NAT设备,网络中Initiator和Target的位置情况分为以下情况:
(1)Target位于私网,Initiator位于私网,且Target与Initiator之间不存在NAT设备;或,Target位于公网,Initiator位于公网,且Target与Initiator之间不存在NAT设备。上述情况下,由于Target与Initiator之间不存在NAT设备,因此NAT设备不会对Target与Initiator造成隔离,不存在通信障碍,也不存在NAT穿越的问题。
(2)Initiator位于私网,Target位于公网,且Target与Initiator之间存在NAT设备。上述情况下,虽然NAT设备对Target与Initiator造成隔离,但由于Initiator为协议交互过程的主动发起者,Initiator可以通过NAT映射访问到Target,Target与Initiator之间不存在通信障碍,也不存在NAT穿越的问题。
(3)Target位于私网,Initiator位于公网,且Target与Initiator之间存在NAT设备。上述情况下,NAT设备对Target与Initiator造成隔离,且由于Initiator为协议交互过程的主动发起者,因此Target与Initiator之间存在通信障碍,即存在NAT穿越的问题,其原因在于:
A、由于Initiator位于公网,Target位于私网,则Initiator不能直接到达私网内的Target,其只能到达NAT设备。
B、即使Initiator发送的报文可以通过NAT设备映射到Target,但由于协议交互过程包括Discover会话过程(用于发现Target)和Normal会话过程(用于连接Target),在Discover会话过程中,Target将自身的IP地址(私网地址)发送给Initiator;在Normal会话过程中,Initiator会使用该IP地址连接到Target。但是Normal会话过程之前,Target不会使用该IP地址向Initiator发送报文,NAT设备也就不会记录该IP地址所对应的地址映射表项,因此在Initiator使用该IP地址连接Target时,通信过程会失败,无法建立TCP连接。
综上所述,针对上述情况(3),会存在Initiator与Target间无法建立TCP连接,继而无法进行报文传输的问题,针对上述存在的问题,当Target位于私网,Initiator位于公网,且Target与Initiator之间存在NAT设备时,本发明中,需要由Target主动发起TCP连接过程,以保证TCP连接的正常建立。
以图3为本发明应用场景示意图,Target(即Host)位于私网,Initiator(即存储系统)位于公网,且Target与Initiator之间存在NAT设备。实际应用中,可以由Target确定位置情况为:Target位于私网,Initiator位于公网,且Target与Initiator之间存在NAT设备;也可以由Initiator确定位置情况为:Target位于私网,Initiator位于公网,且Target与Initiator之间存在NAT设备。
当Target确定位置情况为:Target位于私网,Initiator位于公网,且Target与Initiator之间存在NAT设备时,如图4所示,该TCP连接建立的方法包括:
步骤401,Initiator向Target发送发现会话请求报文,该发现会话请求报文中封装有会话请求内容,且会话请求内容中携带有Initiator在发送发现会话请求报文时的源地址和目的地址(即报文头的源地址和目的地址)。
在Discover会话过程中,Initiator需要向Target发送发现会话请求报文;本发明中,为了实现Initiator与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设备接收Initiator发送给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,Initiator接收来自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为Target1,通过查询Target-IP绑定关系列表,发现Target1绑定的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-CONN,2个字段都置为1则表示Target在私网,并且使能反向TCP连接。
本发明中,Initiator在接收到TCP连接请求报文后,则Initiator可建立TCP连接并发起iSCSI login请求,以及执行后续相关处理。Initiator与Target建立TCP连接的过程不再详加赘述;当Initiator接收到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发送发现会话请求报文;本发明中,为了实现Initiator与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地址(20.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地址,目的地址为Initiator的IP地址;此外,该响应报文中还会封装有会话响应内容(即具体的数据),且该会话响应内容中同样需要携带源地址和目的地址的信息。
步骤505,Initiator接收来自Target的发现会话的响应报文,该响应报文中封装有会话响应内容,且会话响应内容中携带有Target在发送响应报文时的源地址和目的地址;对于NAT设备的转发过程,在此不再赘述。
步骤506,Initiator利用响应报文的报文头中的源地址和目的地址以及会话响应内容中的源地址和目的地址确定Initiator和Target的位置情况。
情况一、当响应报文的报文头中的源地址与会话响应内容中的源地址不同时,则Initiator确定位置情况为: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接收来自Initiator的位置情况的通知消息,并利用通知消息确定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为Target1,通过查询Target-IP绑定关系列表,发现Target1绑定的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,应用于包括连接发起设备Initiator、所述Target和网络地址转换NAT设备的基于互联网的小型计算机系统接口iSCSI网络中,如图6所示,所述Target包括:
确定模块11,用于确定所述Initiator和所述Target的位置情况;
通信模块12,用于当确定结果为所述Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备时,向所述Initiator发送传输控制协议TCP连接请求报文,以建立所述Target与所述Initiator之间的TCP连接。
所述通信模块12,还用于接收来自所述Initiator的发现会话请求报文,所述发现会话请求报文中封装有会话请求内容,且所述会话请求内容中携带有所述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,还用于接收来自所述Initiator的发现会话请求报文,并向所述Initiator发送发现会话的响应报文,所述响应报文中封装有会话响应内容,且所述会话响应内容中携带有所述Target在发送所述响应报文时的源地址和目的地址;
由所述Initiator利用所述响应报文的报文头中的源地址和目的地址以及所述会话响应内容中的源地址和目的地址确定Initiator和Target的位置情况;当所述响应报文的报文头中的源地址与所述会话响应内容中的源地址不同时,确定位置情况为:所述Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备;当所述响应报文的报文头中的目的地址与所述会话响应内容中的目的地址不同时,确定位置情况为:所述Target位于公网,所述Initiator位于私网,且所述Target与所述Initiator之间存在所述NAT设备;当所述响应报文的报文头中的源地址与所述会话响应内容中的源地址相同,且所述响应报文的报文头中的目的地址与所述会话响应内容中的目的地址相同时,确定位置情况为:所述Target与所述Initiator之间没有NAT设备;
当确定结果为所述Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备时,接收来自所述Initiator的位置情况的通知消息;
所述确定模块11,具体用于利用所述通知消息确定所述Initiator和所述Target的位置情况。
所述通信模块12,具体用于利用IP地址与Target的绑定关系选择出口IP地址,并通过所述出口IP地址向所述Initiator发送TCP连接请求报文。
其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
基于与上述方法同样的发明构思,本发明还提出了一种连接发起设备Initiator,应用于包括所述Initiator、连接接收设备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位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备;
当所述响应报文的报文头中的目的地址与所述会话响应内容中的目的地址不同时,确定位置情况为:所述Target位于公网,所述Initiator位于私网,且所述Target与所述Initiator之间存在所述NAT设备;
当所述响应报文的报文头中的源地址与所述会话响应内容中的源地址相同,且所述响应报文的报文头中的目的地址与所述会话响应内容中的目的地址相同时,确定位置情况为:所述Target与所述Initiator之间没有NAT设备。
所述TCP连接请求报文为所述Target通过出口IP地址向所述Initiator发送的TCP连接请求报文,且所述出口IP地址为所述Target利用IP地址与Target的绑定关系选择的出口IP地址。
其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。

Claims (24)

1.一种传输控制协议TCP连接建立的方法,应用于包括连接发起设备Initiator、连接接收设备Target和网络地址转换NAT设备的基于互联网的小型计算机系统接口iSCSI网络中,其特征在于,该方法包括以下步骤:
所述Target确定所述Initiator和所述Target的位置情况;
当确定结果为所述Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备时,所述Target向所述Initiator发送TCP连接请求报文,以建立所述Target与所述Initiator之间的TCP连接。
2.如权利要求1所述的方法,其特征在于,所述Target确定所述Initiator和所述Target的位置情况,具体包括:
所述Target接收来自所述Initiator的发现会话请求报文,所述发现会话请求报文中封装有会话请求内容,且所述会话请求内容中携带有所述Initiator在发送所述发现会话请求报文时的源地址和目的地址;
当所述发现会话请求报文的报文头中的目的地址与所述会话请求内容中的目的地址不同时,所述Target确定位置情况为:所述Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备;
当所述发现会话请求报文的报文头中的源地址与所述会话请求内容中的源地址不同时,所述Target确定位置情况为:所述Target位于公网,所述Initiator位于私网,且所述Target与所述Initiator之间存在所述NAT设备;
当所述发现会话请求报文的报文头中的源地址与所述会话请求内容中的源地址相同,且所述发现会话请求报文的报文头中的目的地址与所述会话请求内容中的目的地址相同时,所述Target确定位置情况为:所述Target与所述Initiator之间没有NAT设备。
3.如权利要求2所述的方法,其特征在于,在所述Target接收来自所述Initiator的发现会话请求报文与所述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接收来自所述Initiator的位置情况的通知消息,并利用所述通知消息确定所述Initiator和所述Target的位置情况。
5.如权利要求4所述的方法,其特征在于,所述Initiator利用所述响应报文的报文头中的源地址和目的地址以及所述会话响应内容中的源地址和目的地址确定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连接建立的方法,应用于包括连接发起设备Initiator、连接接收设备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的位置情况,具体包括:
所述Initiator向所述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发送发现会话请求报文之后,所述Initiator接收来自所述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的位置情况,具体包括:
所述Initiator向所述Target发送发现会话请求报文,并接收来自所述Target的发现会话的响应报文,所述响应报文中封装有会话响应内容,且所述会话响应内容中携带有所述Target在发送所述响应报文时的源地址和目的地址;
所述Initiator利用所述响应报文的报文头中的源地址和目的地址以及所述会话响应内容中的源地址和目的地址确定Initiator和Target的位置情况;
当确定结果为所述Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备时,所述Initiator向所述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,应用于包括连接发起设备Initiator、所述Target和网络地址转换NAT设备的基于互联网的小型计算机系统接口iSCSI网络中,其特征在于,所述Target包括:
确定模块,用于确定所述Initiator和所述Target的位置情况;
通信模块,用于当确定结果为所述Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备时,向所述Initiator发送传输控制协议TCP连接请求报文,以建立所述Target与所述Initiator之间的TCP连接。
15.如权利要求14所述的Target,其特征在于,
所述通信模块,还用于接收来自所述Initiator的发现会话请求报文,所述发现会话请求报文中封装有会话请求内容,且所述会话请求内容中携带有所述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,其特征在于,
所述通信模块,还用于接收来自所述Initiator的发现会话请求报文,并向所述Initiator发送发现会话的响应报文,所述响应报文中封装有会话响应内容,且所述会话响应内容中携带有所述Target在发送所述响应报文时的源地址和目的地址;
由所述Initiator利用所述响应报文的报文头中的源地址和目的地址以及所述会话响应内容中的源地址和目的地址确定Initiator和Target的位置情况;当所述响应报文的报文头中的源地址与所述会话响应内容中的源地址不同时,确定位置情况为:所述Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备;当所述响应报文的报文头中的目的地址与所述会话响应内容中的目的地址不同时,确定位置情况为:所述Target位于公网,所述Initiator位于私网,且所述Target与所述Initiator之间存在所述NAT设备;当所述响应报文的报文头中的源地址与所述会话响应内容中的源地址相同,且所述响应报文的报文头中的目的地址与所述会话响应内容中的目的地址相同时,确定位置情况为:所述Target与所述Initiator之间没有NAT设备;
当确定结果为所述Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备时,接收来自所述Initiator的位置情况的通知消息;
所述确定模块,具体用于利用所述通知消息确定所述Initiator和所述Target的位置情况。
18.如权利要求14所述的Target,其特征在于,
所述通信模块,具体用于利用IP地址与Target的绑定关系选择出口IP地址,并通过所述出口IP地址向所述Initiator发送TCP连接请求报文。
19.一种连接发起设备Initiator,应用于包括所述Initiator、连接接收设备Target和网络地址转换NAT设备的基于互联网的小型计算机系统接口iSCSI网络中,其特征在于,所述Initiator包括:
通信模块,用于将所述Initiator和所述Target的位置情况的信息通知给所述Target,由所述Target利用所述信息确定所述Initiator和所述Target的位置情况;
处理模块,用于当获知位置情况为所述Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备时,确定传输控制协议TCP连接过程由所述Target发起,并等待所述Target发送的TCP连接请求报文,以建立所述Target与所述Initiator之间的TCP连接。
20.如权利要求19所述的Initiator,其特征在于,
所述通信模块,具体用于向所述Target发送发现会话请求报文,所述发现会话请求报文中封装有会话请求内容,且所述会话请求内容中携带有所述Initiator在发送所述发现会话请求报文时的源地址和目的地址;
由所述Target利用所述发现会话请求报文的报文头中的源地址和目的地址以及所述会话请求内容中的源地址和目的地址确定所述Initiator和所述Target的位置情况;当所述发现会话请求报文的报文头中的目的地址与所述会话请求内容中的目的地址不同时,确定位置情况为:所述Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备;当所述发现会话请求报文的报文头中的源地址与所述会话请求内容中的源地址不同时,确定位置情况为:所述Target位于公网,所述Initiator位于私网,且所述Target与所述Initiator之间存在所述NAT设备;当所述发现会话请求报文的报文头中的源地址与所述会话请求内容中的源地址相同,且所述发现会话请求报文的报文头中的目的地址与所述会话请求内容中的目的地址相同时,确定位置情况为:所述Target与所述Initiator之间没有NAT设备。
21.如权利要求20所述的Initiator,其特征在于,
所述通信模块,还用于在向所述Target发送发现会话请求报文之后,接收来自所述Target的发现会话的响应报文,且在所述Target确定位置情况为:所述Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备时,所述响应报文中携带由所述Target使能反向TCP连接的信息;
所述处理模块,具体用于通过所述由所述Target使能反向TCP连接的信息获知位置情况为所述Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备。
22.如权利要求19所述的Initiator,其特征在于,
所述通信模块,具体用于向所述Target发送发现会话请求报文,并接收来自所述Target的发现会话的响应报文,所述响应报文中封装有会话响应内容,且所述会话响应内容中携带有所述Target在发送所述响应报文时的源地址和目的地址;
当所述Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备时,向所述Target发送位置情况的通知消息,由所述Target利用所述通知消息确定所述Initiator和所述Target的位置情况为:所述Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备;
所述处理模块,还用于利用所述响应报文的报文头中的源地址和目的地址以及所述会话响应内容中的源地址和目的地址确定Initiator和Target的位置情况。
23.如权利要求22所述的Initiator,其特征在于,
所述处理模块,具体用于当所述响应报文的报文头中的源地址与所述会话响应内容中的源地址不同时,确定位置情况为:所述Target位于私网,所述Initiator位于公网,且所述Target与所述Initiator之间存在所述NAT设备;
当所述响应报文的报文头中的目的地址与所述会话响应内容中的目的地址不同时,确定位置情况为:所述Target位于公网,所述Initiator位于私网,且所述Target与所述Initiator之间存在所述NAT设备;
当所述响应报文的报文头中的源地址与所述会话响应内容中的源地址相同,且所述响应报文的报文头中的目的地址与所述会话响应内容中的目的地址相同时,确定位置情况为:所述Target与所述Initiator之间没有NAT设备。
24.如权利要求19所述的Initiator,其特征在于,所述TCP连接请求报文为所述Target通过出口IP地址向所述Initiator发送的TCP连接请求报文,且所述出口IP地址为所述Target利用IP地址与Target的绑定关系选择的出口IP地址。
CN201110364913.8A 2011-11-17 2011-11-17 一种tcp连接建立的方法和设备 Active CN102347990B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110364913.8A CN102347990B (zh) 2011-11-17 2011-11-17 一种tcp连接建立的方法和设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110364913.8A CN102347990B (zh) 2011-11-17 2011-11-17 一种tcp连接建立的方法和设备

Publications (2)

Publication Number Publication Date
CN102347990A true CN102347990A (zh) 2012-02-08
CN102347990B CN102347990B (zh) 2014-06-25

Family

ID=45546270

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110364913.8A Active CN102347990B (zh) 2011-11-17 2011-11-17 一种tcp连接建立的方法和设备

Country Status (1)

Country Link
CN (1) CN102347990B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111107119A (zh) * 2018-10-29 2020-05-05 杭州海康威视系统技术有限公司 基于云存储系统的数据访问方法、装置、系统及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101119374A (zh) * 2007-09-10 2008-02-06 杭州华三通信技术有限公司 iSCSI通信方法以及相应的发起设备和目标设备
CN101136929A (zh) * 2007-10-19 2008-03-05 杭州华三通信技术有限公司 因特网小型计算机系统接口数据传输方法及设备
CN101325553A (zh) * 2008-08-04 2008-12-17 杭州华三通信技术有限公司 Iscsi数据穿越nat的方法和内网存储系统
US7535913B2 (en) * 2002-03-06 2009-05-19 Nvidia Corporation Gigabit ethernet adapter supporting the iSCSI and IPSEC protocols

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7535913B2 (en) * 2002-03-06 2009-05-19 Nvidia Corporation Gigabit ethernet adapter supporting the iSCSI and IPSEC protocols
CN101119374A (zh) * 2007-09-10 2008-02-06 杭州华三通信技术有限公司 iSCSI通信方法以及相应的发起设备和目标设备
CN101136929A (zh) * 2007-10-19 2008-03-05 杭州华三通信技术有限公司 因特网小型计算机系统接口数据传输方法及设备
CN101325553A (zh) * 2008-08-04 2008-12-17 杭州华三通信技术有限公司 Iscsi数据穿越nat的方法和内网存储系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111107119A (zh) * 2018-10-29 2020-05-05 杭州海康威视系统技术有限公司 基于云存储系统的数据访问方法、装置、系统及存储介质
CN111107119B (zh) * 2018-10-29 2022-08-09 杭州海康威视系统技术有限公司 基于云存储系统的数据访问方法、装置、系统及存储介质

Also Published As

Publication number Publication date
CN102347990B (zh) 2014-06-25

Similar Documents

Publication Publication Date Title
WO2021184774A1 (zh) 基于边缘计算的通信方法、装置、存储介质及电子设备
JP5711754B2 (ja) スマートクライアントルーティング
CN110166432A (zh) 对内网目标服务的访问方法、提供内网目标服务的方法
CN102447748B (zh) 在nat穿越中分配外网互联网协议ip地址的方法及设备、系统
CN104125145B (zh) 基于网页浏览器的通信方法、设备和系统
CN101136929B (zh) 因特网小型计算机系统接口数据传输方法及设备
CN108141409B (zh) 通信系统、地址通知装置、通信控制装置、终端、通信方法以及程序
CN104980528A (zh) 实现节点间通信的方法、系统及装置
US20230291706A1 (en) Method for accessing network, media gateway, electronic device and storage medium
US11799827B2 (en) Intelligently routing a response packet along a same connection as a request packet
CN110460641A (zh) 数据传输方法、装置及系统
CN110365759A (zh) 一种数据转发方法、装置、系统、网关设备及存储介质
US11637874B2 (en) Communications apparatus, systems, and methods for preventing and/or minimizing session data clipping
CN103391334A (zh) 一种网络穿越方法、装置及系统
CN113132218B (zh) 一种家庭网关访问方法、装置、系统处理器及存储介质
CN111464879B (zh) 一种数据通信的方法及装置
CN102347990B (zh) 一种tcp连接建立的方法和设备
US20160119166A1 (en) Method and apparatus for providing gateway function
US10375175B2 (en) Method and apparatus for terminal application accessing NAS
CN103227822A (zh) 一种p2p通信连接建立方法和设备
US10021067B2 (en) Internet protocol address distribution for wireless network
EP3176986A1 (en) Method, device and system for remote desktop protocol gateway to conduct routing and switching
US20150350079A1 (en) Method of message routing for a distributed computing system
CN101860544A (zh) 会话启动协议消息的发送系统及方法
CN112055037A (zh) Nat穿透连接方法及系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP03 Change of name, title or address

Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No.

Patentee after: NEW H3C TECHNOLOGIES Co.,Ltd.

Address before: 310053 Hangzhou hi tech Industrial Development Zone, Zhejiang province science and Technology Industrial Park, No. 310 and No. six road, HUAWEI, Hangzhou production base

Patentee before: HANGZHOU H3C TECHNOLOGIES Co.,Ltd.

CP03 Change of name, title or address
TR01 Transfer of patent right

Effective date of registration: 20230627

Address after: 310052 11th Floor, 466 Changhe Road, Binjiang District, Hangzhou City, Zhejiang Province

Patentee after: H3C INFORMATION TECHNOLOGY Co.,Ltd.

Address before: 310052 Changhe Road, Binjiang District, Hangzhou, Zhejiang Province, No. 466

Patentee before: NEW H3C TECHNOLOGIES Co.,Ltd.

TR01 Transfer of patent right