实现CDN回源请求携带客户端IP的方法及系统技术方案

技术编号:21438440 阅读:60 留言:0更新日期:2019-06-22 13:55
本发明专利技术公开一种实现CDN回源请求携带客户端IP的方法及系统,能够在未部署私匙的CDN节点上向HTTPS网站的源站服务器发送携带客户端IP的回源请求。该方法包括根据CDN节点接收的客户端访问请求,判断CDN节点是否存储有与访问请求对应私钥;发起到源站服务器的TCP连接请求,插入客户端IP和端口到TCP syn数据包中,并将更新后TCP syn数据包发送至源站服务器;提取TCP syn数据包中的客户端IP和端口,接受TCP连接请求;利用CDN节点将客户端访问请求内容通过TCP连接转发至源站服务器,使得源站服务器的业务逻辑反馈请求内容,获得客户端IP和端口。

【技术实现步骤摘要】
实现CDN回源请求携带客户端IP的方法及系统
本专利技术涉及计算机网络
,尤其涉及一种实现CDN回源请求携带客户端IP的方法及系统。
技术介绍
CDN(ContentDistributionNetwork)即是内容分发网络,是构筑在现有互联网上的一种先进的流量分配网络。该网络将源站服务器中的内容存储到分布于各地的CDN节点上,通过智能网络流量分配控制系统,将客户端的访问请求自动指向健康可用且距离本地最近的CDN节点专用服务器上,以提高客户端访问的响应速度和服务的可用性,改善互联网上的服务质量。但是,若客户端要访问的内容未存储在CDN节点上,那么CDN节点将从源站服务器拉取缺失的内容进行访问,以获得客户端所需的内容,此过程称为回源。为了提高客户端的访问体验,网站通常会根据客户端IP分析客户端的客户行为,以自动推荐客户端感兴趣的内容,因此,CDN回源请求中是否携带的客户端IP是能否实现分析客户端的客户行为的关键。对于HTTPS网站而言,现有技术通常将客户端IP和请求内容加密,并通过部署在CDN节点上的私钥对其解密,当解密结果为需将请求内容回源至源站服务器时,此时,源站服务器才可获取客户端IP和请求内容,并将所需内容反馈给客户端。但是,由于部分网站出于安全考虑,通常不会将私匙部署在CDN节点上,这样将导致CDN节点无法解密客户端请求,进而源站服务器也就无法获得客户端的IP,同时也不能基于客户端IP对客户行为进行分析。
技术实现思路
本专利技术的目的在于提供一种实现CDN回源请求携带客户端IP的方法及系统,能够在未部署私匙的CDN节点上,向HTTPS网站的源站服务器发送携带客户端IP的回源请求,使得HTTPS网站的源站服务器能够基于客户端IP对客户行为进行分析。为了实现上述目的,本专利技术的一方面提供一种实现CDN回源请求携带客户端IP的方法,应用于CDN节点与HTTPS源站服务器的回源请求中,所述方法包括:步骤S1:根据CDN节点接收客户端访问请求,判断所述CDN节点是否存储有与所述访问请求对应私钥;若“无”,则执行S3;步骤S3:发起到源站服务器的TCP连接请求,插入客户端IP和端口到TCPsyn数据包中,并将更新后的所述TCPsyn数据包发送至源站服务器;步骤S4:通过源站服务器提取所述TCPsyn数据包中的客户端IP和端口,返回synack数据包给CDN节点,接受所述TCP连接请求;步骤S5:利用所述CDN节点将客户端访问请求内容通过所述TCP连接转发至源站服务器,使得源站服务器的业务逻辑反馈所述请求内容,并获得客户端IP和端口。具体地,所述S3包括:步骤S31:CDN节点向源站服务器发起握手请求,构造TCPsyn数据包;步骤S32:调用第一内核函数将客户端IP和端口插入所述TCPsyn数据包的头部选项(option),以更新所述TCPsyn数据包;步骤S33:将更新后的所述TCPsyn数据包发送至源站服务器。优选地,所述S4具体包括:步骤S41:调用第二内核函数对所述头部选项(option)验证;步骤S42:验证通过后提取所述头部选项(option)中的客户端IP和端口,存储至sock结构体中;步骤S43:通过所述sock结构体管理源站服务器与所述CDN节点的TCP连接关系。较佳地,所述步骤S41中调用第二内核函数对头部选项(option)验证的方法包括:同时判断所述头部选项(option)的kind号是否为TCPOPT_CIP,所述头部选项(option)的长度是否为TCPOLEN_CIP,当两者的判断结果为“是”时,则上述验证结果通过。较佳地,所述S5具体包括:步骤S51:利用accept函数调用源站服务器中的inet_getname_cip函数;步骤S52:inet_getname_cip函数调用内核原生函数inet_getname,利用所述原生函数inet_getname从所述sock结构体中提取客户端IP和端口,并将客户端IP和端口返回至accept函数。优选地,所述第一内核函数为tcp_options_write函数,所述第二内核函数为tcp_v4_syn_recv_sock_cip函数。优选地,所述tcp_v4_syn_recv_sock_cip函数为源站服务器中内核syn_recv_sock上挂载的钩子函数。可选地,在步骤S1与步骤S3之间,还包括:步骤S2:使用所述私钥对所述访问请求解密,并将客户端IP和端口插入到解密后的请求内容中,然后回源至源站服务器,使得源站服务器的业务逻辑能够获得客户端ip和端口,并反馈对应访问请求内容。与现有技术相比,本专利技术提供的实现CDN回源请求携带客户端IP的方法具有以下有益效果:本专利技术提供的实现CDN回源请求携带客户端IP的方法中,利用部署在各地的CDN节点实时接收客户端的访问请求,并依据CDN节点上是否存储有与访问请求相关私钥,对应选择不同的回源模式,具体的,当CDN节点上存储有相关私钥则选择私钥回源模式,当CDN节点上未存储有相关私钥则选择插入客户端IP的回源模式;其中,私钥回源模式是指使用相关私钥对访问请求解密,并将解密得到的客户端IP和请求内容回源至源站服务器,通过此种方法实现在反馈访问请求内容的同时获得客户端IP,但是这种回源模式只适用于安全性要求较低的HTTPS网站,即,只适用于将相关私钥部署在CDN节点上的HTTPS网站。若对于安全性较高的HTTPS网站,即CDN节点上未部署相关私钥的网站,则可采用插入客户端IP的回源模式,通过插入客户端IP和端口构造TCPsyn数据包,并将更新后TCPsyn数据包发送至源站服务器,利用源站服务器提取TCPsyn数据包中的客户端IP和端口,并接受TCP连接请求,建立TCP连接关系,使得源站服务器的业务逻辑不仅能够反馈相应请求,同时能够获得客户端IP和端口,这样可实现在未部署相关私钥的CDN节点上也能获得客户端真实IP,换句话说,此种回源模式不仅保证了网站的安全性,同时还能够基于客户端IP对客户行为进行分析。可见,使用本专利技术提供的实现CDN回源请求携带客户端IP的方法能够在未部署私匙的CDN节点上,向HTTPS网站的源站服务器发送携带客户端IP的回源请求,以使HTTPS网站的源站服务器能够基于客户端IP对客户行为进行分析。本专利技术的另一方面提供一种实现CDN回源请求携带客户端IP的系统,应用于上述技术方案所述的实现CDN回源请求携带客户端IP的方法中,所述系统包括回源请求判断单元、第一回源处理单元、数据包更新单元、信息提取单元和第二回源处理单元;所述回源请求判断单元用于根据CDN节点接收的客户端访问请求,判断所述CDN节点是否存储有与所述访问请求对应私钥;所述第一回源处理单元用于在判断结果为是时使用所述私钥对访问请求解密,并将客户端IP和端口插入到解密得到的请求内容中回源至源站服务器,使得源站服务器的业务逻辑做出响应;所述数据包更新单元用于在判断结果为否时,插入客户端IP和端口到TCPsyn数据包中,并将更新后的所述TCPsyn数据包发送至源站服务器;所述信息提取单元用于提取并存储所述TCPsyn数据包中的客户端IP和端口;所述第二回源处理单元用于接收客户端IP、端口以及请求内容,并反馈对应访问请求内容本文档来自技高网...

【技术保护点】
1.一种实现CDN回源请求携带客户端IP的方法,其特征在于,包括:步骤S1:根据CDN节点接收客户端访问请求,判断所述CDN节点是否存储有与所述访问请求对应私钥;若“无”,则执行S3;步骤S3:发起到源站服务器的TCP连接请求,插入客户端IP和端口到TCP syn数据包中,并将更新后的所述TCP syn数据包发送至源站服务器;步骤S4:通过源站服务器提取所述TCP syn数据包中的客户端IP和端口,返回syn ack数据包给CDN节点,接受所述TCP连接请求;步骤S5:利用所述CDN节点将客户端访问请求内容通过所述TCP连接转发至源站服务器,使得源站服务器的业务逻辑反馈所述请求内容,并获得客户端IP和端口。

【技术特征摘要】
1.一种实现CDN回源请求携带客户端IP的方法,其特征在于,包括:步骤S1:根据CDN节点接收客户端访问请求,判断所述CDN节点是否存储有与所述访问请求对应私钥;若“无”,则执行S3;步骤S3:发起到源站服务器的TCP连接请求,插入客户端IP和端口到TCPsyn数据包中,并将更新后的所述TCPsyn数据包发送至源站服务器;步骤S4:通过源站服务器提取所述TCPsyn数据包中的客户端IP和端口,返回synack数据包给CDN节点,接受所述TCP连接请求;步骤S5:利用所述CDN节点将客户端访问请求内容通过所述TCP连接转发至源站服务器,使得源站服务器的业务逻辑反馈所述请求内容,并获得客户端IP和端口。2.根据权利要求1所述的方法,其特征在于,所述S3具体包括:步骤S31:所述CDN节点向源站服务器发起握手请求,构造TCPsyn数据包;步骤S32:调用第一内核函数将客户端IP和端口插入所述TCPsyn数据包的头部选项option,以更新所述TCPsyn数据包;步骤S33:将更新后的所述TCPsyn数据包发送至源站服务器。3.根据权利要求2所述的方法,其特征在于,所述S4具体包括:步骤S41:调用第二内核函数对所述头部选项option验证;步骤S42:验证通过后提取所述头部选项option中的客户端IP和端口,存储至sock结构体中;步骤S43:通过所述sock结构体管理源站服务器与所述CDN节点的TCP连接关系。4.根据权利要求3所述的方法,其特征在于,所述S5具体包括:步骤S51:利用accept函数调用源站服务器中的inet_getname_cip函数;步骤S52:inet_getname_cip函数调用内核原生函数inet_getname,利用所述原生函数inet_getname从所述sock结构体中提取客户端IP和端口,并将客户端IP和端口返回至accept函数。5.根据权利要求3所述的方法,其特征在于,所述第一内核函数为tcp_options_write函数,所述第二内核函数为tcp_v4_syn_recv_sock_cip函数。6.根据权利要求3所述的方法,其特征在于,所述tcp_v4_syn_recv_sock_cip函数为源站服务器中内核syn_recv_sock上挂载的钩子函数。7.根据权利要求1所...

【专利技术属性】
技术研发人员:姚平李强乙朱恒朱健荣
申请(专利权)人:苏宁云商集团股份有限公司
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1