CN118432894A - 一种基于TCP的iOS系统远程服务受信的方法和装置 - Google Patents

一种基于TCP的iOS系统远程服务受信的方法和装置 Download PDF

Info

Publication number
CN118432894A
CN118432894A CN202410561885.6A CN202410561885A CN118432894A CN 118432894 A CN118432894 A CN 118432894A CN 202410561885 A CN202410561885 A CN 202410561885A CN 118432894 A CN118432894 A CN 118432894A
Authority
CN
China
Prior art keywords
tcp
ssl
data
ios
forwarding module
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.)
Pending
Application number
CN202410561885.6A
Other languages
English (en)
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.)
Shenzhen Ruan Niu Technology Group Co ltd
Original Assignee
Shenzhen Ruan Niu Technology Group 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 Shenzhen Ruan Niu Technology Group Co ltd filed Critical Shenzhen Ruan Niu Technology Group Co ltd
Priority to CN202410561885.6A priority Critical patent/CN118432894A/zh
Publication of CN118432894A publication Critical patent/CN118432894A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种基于TCP的iOS系统远程服务受信的方法和装置,其方法包括:与iOS设备的TCP服务器建立TCP连接;配置SSL上下文所需的协议、加密算法和回调函数,并创建SSL通讯对象;向iOS设备发送建立受信隧道的请求;接收并解析从所述iOS设备反馈的数据信息;根据所述数据信息构建TCP代理协议转发模块;根据监听的端口转发受信隧道的TCP消息;连接开发者服务端口,并利用所述TCP代理协议转发模块转发消息数据。该方法通过使用SSL/TLS协议加密数据,可以确保通信的机密性和完整性;同时,通过构建TCP代理协议转发模块,并连接开发者服务端口,利用TCP代理协议转发模块转发消息数据,实现了iOS设备与任意设备之间的安全、可靠、高效的通信。

Description

一种基于TCP的iOS系统远程服务受信的方法和装置
技术领域
本发明涉及计算机网络安全技术领域,尤其涉及一种基于TCP的iOS系统远程服务受信的方法和装置。
背景技术
iOS17作为苹果公司针对iPhone系列推出的最新移动操作系统版本,在开发者模式下对iOS设备与macOS之间的通信机制进行了显著的重构。在iOS16及之前的版本中,设备与macOS的通信主要依赖于TCP(通过USB设备)和TLS(确保连接的安全性)。然而,iOS17引入了一种新的通信协议栈,即IPv6\TCP+RemoteXPC(基于TCP(传输控制协议)的远程服务受信),旨在通过减少通信开销来实现更快、更稳定的连接,尤其是在使用WiFi网络时。
这一新的通信方式相较于之前的QUIC协议(基于UDP,用户数据报协议),具有更高的稳定性和数据传输效率。因为QUIC在通讯过程中可能存在丢包问题,并且其MTU(最大传输单元)的大小限制为1420字节,而IPv6\TCP则能提供高达16000字节的MTU,显著降低了网络开销,提升了传输速度。
由于iOS17的这一变化,开发者在使用iOS设备的开发者模式功能时,必须通过一个基于远程服务受信隧道的方式来进行。在macOS环境下,这一隧道是基于虚拟网卡的。这意味着,如果使用者环境没有权限创建虚拟网卡,或者不想创建虚拟网卡,或者受限于CPU性能,就无法使用iOS17的开发者功能。因此,无论是用户使用或者提供第三方服务时,都有着场景受限和使用效率较低的问题。
发明内容
本发明的目的是提供一种基于TCP的iOS系统远程服务受信的方法和装置,旨在解决现有技术中iOS设备的开发者功能因基于虚拟网卡的远程服务受信隧道无法在任意平台上进行使用的问题。
第一方面,本发明实施例提供一种基于TCP的iOS系统远程服务受信的方法,包括:
与iOS设备的TCP服务器建立TCP连接;
配置SSL上下文所需的协议、加密算法和回调函数,并创建SSL通讯对象;
向iOS设备发送建立受信隧道的请求;
接收并解析从所述iOS设备反馈的数据信息;
根据所述数据信息构建TCP代理协议转发模块;
根据监听的端口转发受信隧道的TCP消息;
连接开发者服务端口,并利用所述TCP代理协议转发模块转发消息数据。
第二方面,本发明实施例还提供一种基于TCP的iOS系统远程服务受信的装置,其包括:
第一连接单元,用于与iOS设备的TCP服务器建立TCP连接;
配置单元,用于配置SSL上下文所需的协议、加密算法和回调函数,并创建SSL通讯对象;
发送单元,用于向iOS设备发送建立受信隧道的请求;
接收单元,用于接收并解析从所述iOS设备反馈的数据信息;
构建单元,用于根据所述数据信息构建TCP代理协议转发模块;
转发单元,用于根据监听的端口转发受信隧道的TCP消息;
第二连接单元,用于连接开发者服务端口,并利用所述TCP代理协议转发模块转发消息数据。
本发明实施例提供一种基于TCP的iOS系统远程服务受信的方法和装置,该方法通过使用SSL/TLS协议加密数据,可以确保通信的机密性和完整性;同时,通过构建TCP代理协议转发模块,并连接开发者服务端口,利用TCP代理协议转发模块转发消息数据,使得iOS设备的开发者功能基于TCP免网卡的远程服务受信隧道可以在任意平台使用,且iOS设备与任意设备之间实现了安全、可靠、高效的通信。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的基于TCP的iOS系统远程服务受信的方法的流程示意图;
图2为本发明实施例提供的基于TCP的iOS系统远程服务受信的方法的子流程示意图;
图3为本发明实施例提供的基于TCP的iOS系统远程服务受信的方法的又一子流程示意图;
图4为本发明实施例提供的基于TCP的iOS系统远程服务受信的方法的又一子流程示意图;
图5为本发明实施例提供的基于TCP的iOS系统远程服务受信的方法的又一子流程示意图;
图6为本发明实施例提供的基于TCP的iOS系统远程服务受信的方法的又一子流程示意图;
图7为本发明实施例提供的基于TCP的iOS系统远程服务受信的装置的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
请参阅图1,图1为本发明实施例提供的一种基于TCP的iOS系统远程服务受信的方法的流程示意图,该方法包括步骤S101~S107:
S101、与iOS设备的TCP服务器建立TCP连接;
在本实施例中,首先需要在iOS操作系统运行的移动设备上建立并运行一个TCP(传输控制协议)服务器程序,以接受来自其他设备或服务的TCP连接请求。TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议,它广泛应用于互联网通信中。
在iOS设备上建立TCP服务器,开发者需要使用iOSSDK(软件开发工具包)提供的网络编程接口来编写相应的服务器程序,这个程序需要监听指定的端口,等待来自其他设备的连接请求,并在接收到请求后建立连接、处理数据传输和通信逻辑。
连接到iOS设备上的TCP服务器通常意味着另一个设备或应用程序通过TCP协议与iOS设备上的服务器进行通信,这可以是同一局域网内的其他设备,也可以是通过互联网远程连接的设备。连接过程包括发起连接请求、建立TCP连接、发送和接收数据,以及在通信完成后关闭连接。
具体的,如图2所示,所述步骤S101包括步骤S201~S203:
S201、利用bonjour服务获取iOS设备的网络接口;
在本实施例中,Bonjour(也称为Zero ConfigurationNetworking或mDNS)是由苹果公司开发的一种基于IP的服务发现协议,它基于多播DNS(mDNS)和DNS服务发现(DNS-SD)技术。这种协议的主要目的是让局域网内的设备和服务能够自动发现彼此,而无需手动配置IP地址、DNS服务器和端口号等网络设置。
在iOS设备上,如果开启了Bonjour服务,那么其他设备就可以通过Bonjour服务来发现该iOS设备的存在,获取iOS设备的网络接口,这样,其他设备就可以与该iOS设备进行通信或共享资源。
S202、结合所述网络接口和本地网络接口组成IPV6套接字地址;
IPv6是互联网协议的第6个版本,用于替代IPv4。IPv6地址是一个128位的地址,用于在互联网上唯一地标识一个设备或网络接口。局域网IPV6地址则是特定于局域网范围内的IPV6地址,用于在局域网内部进行设备间的通信。
其次,本地网络接口是指计算机与网络连接的物理或虚拟接口,例如以太网接口、Wi-Fi接口等。每个网络接口都有一个或多个与之关联的IP地址,用于在网络中进行通信。
将局域网内的网络接口(IPV6地址)与本地网络接口相结合,形成一个完整的IPV6套接字地址。IPV6套接字地址,它标识了网络通信的一个端点,即一个可以进行数据发送和接收的位置,这样,应用程序就可以使用这个套接字地址来建立网络连接、发送和接收数据。
S203、将所述IPV6套接字地址和所述iOS设备的受信端口连接,获取Socket。
在本实施例中,使用之前创建的IPv6套接字地址来建立与iOS设备的连接,连接时通常涉及到创建一个套接字(Socket),然后使用套接字编程接口来发起连接请求。
受信端口在网络通信中,端口是一个逻辑概念,用于标识运行在同一台设备上的不同服务或应用程序。受信端口通常指的是被系统或应用程序信任,并允许进行通信的端口,这些端口可能是预定义的,也可能是根据应用需求动态分配的。在计算机网络中,将IPV6套接字地址和iOS设备的受信端口连接是指两个设备之间建立起的通信通道,通常涉及到两个端点(即两个套接字),它们通过底层网络协议(如TCP或UDP)进行数据交换。
而在编程中,Socket是一个抽象层,也是底层的网络套接字,它允许应用程序与网络进行通信。通过Socket,应用程序可以发送和接收数据,而无需关心底层网络协议的细节,获取Socket通常意味着创建一个新的套接字对象,该对象将用于后续的通信操作。
S102、配置SSL上下文所需的协议、加密算法和回调函数,并创建SSL通讯对象;
本实施例中,配置SSL上下文所需的协议、加密算法和回调,以及创建SSL通信对象,是为了确保网络通信的安全性和可靠性。
具体的,SSL协议用于保护网络通信的安全。通过配置SSL上下文所需的协议,可以确保客户端和服务器之间使用安全的通信协议进行数据传输。配置SSL上下文所需的协议、加密算法、回调,创建SSL通讯对象”是在使用SSL(Secure Sockets Layer,安全套接层)进行安全通信时的一系列重要步骤。这些步骤确保了两个通信实体(例如客户端和服务器)之间的数据传输是加密的、安全的,并且能够验证彼此的身份。
SSL使用加密算法对数据进行加密,以保护数据在传输过程中不被窃取或篡改,加密算法的选择决定了加密的强度和安全性,通过配置合适的加密算法,可以确保数据的机密性和完整性,防止未经授权的第三方获取或篡改数据。
SSL上下文可以配置各种回调函数,用于处理特定的SSL事件。例如,可以配置回调函数来处理证书验证、私钥解密、密码协商等。这些回调函数允许开发者在SSL通信过程中插入自定义的逻辑,以满足特定的安全需求。回调函数在SSL握手期间用于验证对端证书的合法性。通过配置回调函数,可以实现对接收到的证书链进行验证,包括证书的有效性、信任链是否完整等。这有助于确保连接到的服务器是可信的,防止中间人攻击和其他安全威胁。
创建SSL通信对象是将SSL协议集成到应用程序中的关键步骤。SSL通讯对象提供了在底层套接字上执行安全通信的接口。通过创建SSL通讯对象,可以将SSL协议应用于现有的网络通信,从而实现安全的数据传输。
SSL协议有多个版本,如SSLv2、SSLv3、TLSv1.0、TLSv1.1、TLSv1.2和TLSv1.3等。这些版本在安全性、性能和兼容性上有所不同。通常,为了安全起见,推荐使用最新版本的TLS协议,因为它提供了更好的安全性。
SSL支持多种加密算法,如对称加密算法(如AES)和非对称加密算法(如RSA、ECC)。这些算法用于在通信双方之间加密和解密数据。在选择加密算法时,需要考虑算法的强度、性能和兼容性。通常,推荐使用经过广泛验证且被认为安全的算法。
一旦SSL上下文配置完成,就可以为每个新的连接创建一个SSL通讯对象。这个对象将管理与该连接的SSL通信,包括加密数据的发送和接收、证书的验证、密钥的协商等。
在实际应用中,这些步骤通常使用SSL库(如OpenSSL)的API函数来完成。例如,使用OpenSSL库时,可以使用SSL_CTX_new函数创建SSL上下文,使用SSL_CTX_set_cipher_list函数配置加密算法,使用SSL_CTX_set_cert_store和SSL_CTX_set_cert_verify_callback等函数配置证书验证回调,最后使用SSL_new函数创建SSL通讯对象。
完成这些步骤后,就可以使用创建的SSL通讯对象进行安全的通信了。在通信过程中,SSL库将自动处理加密、解密、证书验证等任务,确保数据的机密性和完整性。
具体的,如图3所示,所述步骤S102包括步骤S301~S304:
S301、通过SSL_CTX_new创建SSL上下文,设置TLSv1_2协议;
如前所述,SSL_CTX_new是OpenSSL库中的一个函数,其主要目的是创建一个SSL上下文。SSL上下文是一个非常重要的组件,它包含了SSL/TLS协议的配置信息,这些信息用于建立安全的通信连接。这些配置信息可能包括加密算法、证书验证方式、会话缓存等。
当SSL_CTX_new函数被调用时,它会返回一个指向新创建的SSL_CTX对象的指针。这个指针随后可以用于进一步的SSL/TLS通信配置和连接建立操作。
TLSv1.2是一种传输层安全协议,TLSv1.2通过加密和身份验证确保通信的机密性和完整性,使数据在传输过程中保持机密、经过认证且未被修改。
在创建SSL上下文之后,需要配置该上下文以使用特定的TLS版本。在这种情况下,配置是设置为使用TLSv1.2,这通常涉及在调用SSL_CTX_new之后,使用OpenSSL库中的其他函数或方法来设置协议版本。
S302、通过SSL_CTX_set_psk_client_callback对SSL上下文设置回调函数,在所述回调函数中输入预共享密钥数据与密钥长度;
安全套接字层(SSL)及其继任者传输层安全(TLS)是用于在两个通信系统之间提供隐私和数据完整性的协议。它们通过加密数据来防止窃听、篡改和消息伪造。
预共享密钥(PSK)是一种对称密钥加密算法,使用相同的密钥进行加密和解密。在SSL/TLS通信中,PSK通常用于建立安全的连接,其中双方事先共享一个密钥。在编程中,回调是一个通过函数指针调用的函数。它允许将一个函数作为参数传递给另一个函数,并在需要时由后者调用。
SSL_CTX_set_psk_client_callback是OpenSSL库中的一个函数,用于为SSL上下文设置一个PSK客户端回调。这个回调将在SSL握手期间被调用,以便从客户端获取PSK。
回调函数的目的是提供一种机制,以便在SSL握手过程中动态地获取PSK。这允许应用程序根据特定的逻辑或条件来确定应该使用哪个PSK。
当SSL握手过程中需要PSK时,之前设置的回调函数将被调用。在这个回调函数中,你需要提供PSK的实际值和其长度。PSK是一个密钥,用于加密和解密通信数据。密钥长度是指密钥中的比特数,它决定了加密算法的安全性和复杂性。在回调中提供正确的PSK和密钥长度对于建立安全的SSL连接至关重要。如果提供的PSK不正确或密钥长度不符合要求,SSL握手将失败,导致连接无法建立。
S303、通过SSL_CTX_set_cipher_list设置加密算法列表;
在SSL/TLS通信中,加密算法的选择是确保通信安全性的关键步骤之一。通过SSL_CTX_set_cipher_list函数,可以为SSL上下文设置一组加密算法,这些算法将在SSL握手阶段由客户端和服务器协商使用。
然而,在OpenSSL的上下文中,PSK并不是一种加密算法,而是一种密钥交换机制。预共享密钥(PSK)是一种用于TLS连接的对称密钥,双方事先共享这个密钥,并在连接建立时使用它。
因此,不能直接将“PSK”作为加密算法列表设置给SSL_CTX_set_cipher_list。相反,需要选择支持PSK的加密算法套件,这些套件将包括密钥交换算法(例如PSK),以及对称加密算法(如AES)和摘要算法(如SHA)。
若想在SSL/TLS连接中使用PSK,需要确保OpenSSL版本支持PSK,并在SSL上下文中正确配置PSK相关的回调函数和参数。通常涉及到使用SSL_CTX_set_psk_client_callback和SSL_CTX_set_psk_server_callback等函数来设置PSK的获取逻辑。
需要注意的是,不能直接将“PSK”作为加密算法列表设置给SSL_CTX_set_cipher_list,而是需要选择支持PSK的加密算法套件,并在SSL上下文中正确配置PSK相关的回调和参数,这样才能确保SSL/TLS连接能够使用预共享密钥进行安全的通信。
S304、通过所述SSL上下文创建SSL通讯对象,并将所述SSL通讯对象与所述Socket进行关联。
在本实施例中,在SSL/TLS通信中,底层的网络套接字(Socket)负责实际的数据传输。但是,为了使这些数据传输变得安全(即加密和解密),需要将Socket与SSL通讯对象关联起来。
这个关联过程通常涉及调用一个特定的函数(如SSL_set_fd对于基于文件描述符的Socket,或SSL_set_bio对于基于BIO的Socket)。这个函数将SSL通讯对象与指定的Socket相关联,从而允许OpenSSL库在发送和接收数据时自动应用SSL/TLS协议。通过将Socket与创建的SSL通讯对象关联起来,为Socket添加了SSL/TLS安全性。
综上所述,这一步骤是将SSL/TLS安全层与底层的网络套接字相结合的关键一步,通过创建SSL通讯对象并将其与Socket关联,可以确保通过该Socket传输的所有数据都将被自动加密和解密,从而提供安全的网络通信。
S103、向iOS设备发送建立受信隧道的请求;
本实施例中,使用配置好的SSL通讯对象,向iOS设备发送一个请求,以建立受信任的隧道连接,这个请求通常包含身份验证信息,以确保只有授权的服务或设备能够建立连接。
在一实施例中,所述步骤S103,包括步骤S401~S402:
S401、构建连接握手请求的数据信息;
在本实施例中,该数据信息包括魔数标志为CDTunnel和包含有类型是连接握手请求和MTU(最大传输单元)为16000的json序列化数据;
首先,需要确定“CDTunnel”这个魔数标志的确切表示形式,它通常是一个固定字节序列,用于标识数据包或消息的类型。在构建请求数据时,需要将这个魔数标志作为数据的一部分。
S402、通过所述SSL通讯对象向所述iOS设备发送所述数据信息,建立受信隧道的请求。
在本实施例中,在发送握手请求之前,需要建立了一个SSL连接,这通常涉及到使用SSL_CTX_new、SSL_new、SSL_set_fd(或类似的函数,具体取决于使用的SSL库和编程语言)来初始化SSL上下文、创建SSL通讯对象,并将SSL通讯对象与Socket关联起来。然后,需要执行SSL握手过程(通常通过调用SSL_connect或SSL_accept),以在客户端和服务器之间建立加密的通信通道。
一旦SSL连接建立并成功完成握手过程,便可以使用SSL库提供的函数(如SSL_write)来发送之前构建的连接握手请求数据。需注意的是,由于SSL连接是加密的,因此发送的数据将在传输过程中被加密,以确保安全性。
发送握手请求后,需要等待设备的响应。可以使用SSL库提供的函数(如SSL_read)来接收响应数据,并解析它以确定是否成功建立了受信任隧道。根据设备的响应,再执行进一步的操作(如发送其他请求或关闭连接)。
S104、接收并解析从所述iOS设备反馈的数据信息;
在本实施例中,一旦受信任隧道连接建立成功,接收并解析从iOS设备发送过来的数据信息,也可以称为隧道参数,这些参数可能包括用于进一步通信的配置信息、端口号、加密密钥等。
而在这一步骤中,通常包括接收并读取Remote服务隧道参数,Remote服务隧道指的是一个远程服务之间建立的加密通信通道,用于安全地传输数据。
具体来说,接收并读取Remote服务隧道参数,意味着iOS设备或系统正在从远程服务接收隧道建立所需的参数信息,并解析这些参数以便正确配置和建立隧道连接。通过接收和读取这些参数,设备或系统可以了解如何与远程服务进行通信,以及如何对数据进行加密和解密,从而确保数据在传输过程中的机密性和完整性。
这个过程通常发生在两个设备或服务之间建立安全连接时,特别是在需要远程访问或数据传输的场景中。它允许设备或服务之间建立一个受信任的通信通道,以便在不受信任的网络环境中安全地交换数据。
具体的,如图4所示,所述步骤S104包括步骤S501~S502:
S501、接收从所述iOS设备反馈JSON格式的数据信息;
一旦iOS设备发送了连接握手请求,其他设备端的SSL连接就会收到这个请求。使用SSL库提供的函数(如SSL_read)从SSL连接中读取返回的数据流消息,这些消息可能是一个或多个数据包,具体取决于使用的协议和数据大小。
在本实施例中,需要创建一个包含必要信息的JSON对象,这个JSON对象包含类型字段(指明这是一个连接握手请求)、MTU(最大传输单元)字段(设置为指定的16000)以及其他可能需要的字段。将JSON对象序列化为一个字节序列(例如,使用UTF-8编码),以便在网络中传输。最后,将魔数标志和序列化后的JSON数据组合成一个完整的数据包,这个数据包的格式可能因具体协议而异,但通常应该包括一个头部(包含魔数标志和其他元数据)和一个有效载荷(即序列化后的JSON数据)。
在接收到S501步骤的数据消息后,需要将其解析为JSON格式的数据,可以通过使用JSON解析库(如json-c、RapidJSON、nlohmann/json等)来完成。解析JSON数据后,需要提取其中的字段,包括客户端参数、服务端地址、服务端远程服务设备端口和类型,这些字段将用于后续的验证和处理。
S502、验证所述JSON格式的数据信息中的类型字段是否为服务端握手响应,若不是,则说明请求不正确;若是,则说明请求正确。
如前所述,首先,需要验证JSON数据中的类型字段是否为“服务端握手响应”,如果不是,则说明请求不正确,可能需要返回错误消息或采取其他适当的操作。如果类型字段正确,需要进一步检查其他设备或者客户端参数字段,参数应该包含客户端地址、MTU(最大传输单元)和网络掩码,需要验证这些参数的有效性和正确性。如果请求和参数都验证通过,可以根据需要进行后续处理,这可能包括建立隧道连接、更新服务端状态、记录日志等操作。
最后,再向其他设备发送一个响应消息,以确认受信隧道已成功建立,这个响应消息也应该是JSON格式的,并且包含适当的字段和值。
S105、根据所述数据信息构建TCP代理协议转发模块;
在本实施例中,根据读取到的数据信息,构建一个TCP代理协议转发模块。这个模块负责在其他设备和iOS设备之间转发TCP消息,确保数据能够正确地在两者之间传输。
构建TCP代理协议转发模块是一个涉及网络编程和通信的任务,具体指的是创建一个模块或组件,该模块能够处理TCP(传输控制协议)数据包的转发,并作为代理在客户端和服务器之间建立连接。
具体的,如图5所示,所述步骤S105包括步骤S601~S604:
S601、构建TCP代理协议转发模块;
在本实施例中,构建TCP代理协议转发模块,该功能模块是免网卡进行远程服务受信隧道的关键步骤,将所有的TCP请求通过TCP代理协议转发模块代理转发的方式,直接通过IPv6\TCP进行发送和接收,达到免网卡的效果。
通过所述TCP代理协议转发模块构建数据包
S602、通过所述TCP代理协议转发模块构建数据包;
在本实施例中,数据包由IPv6头、TCP头和负载数据构成。IPv6头包含IP版本(对于IPv6为6)、总长度(包括IPv6头和TCP头以及负载数据的总长度)、下一个头(对于TCP为6)、源地址(远程服务设备端口)和目标地址(客户端地址)。TCP头包括会话长度(TCP数据长度)、源端口、目标端口、序列号、标志(如SYN、ACK等)、数据偏移等。
S603、通过所述TCP代理协议转发模块按照IPv6/TCP的格式对所述数据包进行解析,封装为IPv6/TCP格式的数据帧;
接收到的数据包也需要按照IPv6/TCP的格式进行解析。具体的,先解析IPv6头以获取目标地址和TCP头的位置,然后解析TCP头以获取会话信息,最后处理负载数据。
S604、通过所述TCP代理协议转发模块将所述数据包通过所述IPv6\TCP格式的数据帧的方式发送到所述受信隧道,构建免网卡的受信隧道。
将构建好的数据包封装成IPv6/TCP格式的数据帧,通过受信隧道将数据帧发送到目标地址(客户端地址),构建免网卡的受信隧道。
在本实施例中,明确TCP代理协议转发模块的功能和目标,即构建一个能够将所有TCP请求通过IPv6/TCP格式的数据帧的方式进行代理转发的模块。免网卡的受信隧道能够在没有物理网卡的情况下进行网络通信,可能是通过某种形式的虚拟网络或隧道技术。
进一步的,所述步骤S105还包括步骤S701~S702:
S701、通过所述TCP代理协议转发模块通过所述免网卡的受信隧道接收并进行解析得到数据信息;
从受信隧道中接收IPv6/TCP数据帧,按照IPv6/TCP的格式解析数据帧,提取出数据信息。
S702、通过所述TCP代理协议转发模块进行端口连接。
在本实施例中,根据步骤S401构建的连接握手请求,在建立连接时,需要遵循TCP的三次握手过程。在发送第一次握手包(SYN包)时,需要配置好TCP的序列号(Seq)、确认号(ACK)、MTU等参数。MTU最大可设置成16000,但具体值可能需要根据网络环境和隧道支持进行调整。每次发送和接收数据时,都需要构建和解析相应的IPv6/TCP数据包,并通过受信隧道进行数据帧交互。
需要注意的,在网络通信中,错误处理是非常重要的。为了提高代理转发的性能,可以使用多线程、异步I/O、缓冲区池等技术来优化数据的发送和接收过程。
S106、根据监听的端口转发受信隧道的TCP消息;
在网络通信中,iOS设备通过监听的端口来接收来自其他设备或其他系统的TCP连接请求,并在建立连接后,将这些连接上的TCP消息(即数据)转发到另一个设备或系统。在这个过程中,消息通过一个受信隧道(也称为安全隧道或加密隧道)进行传输,以确保数据的安全性和完整性。具体的,iOS设备在网络端口上监听TCP连接请求,这个端口是预定义的,用于接收来自客户端或其他系统的连接请求。
当客户端或其他系统尝试连接到这个端口时,iOS设备会接受连接请求,并建立一个TCP连接。这个TCP连接可能是一个受信隧道,意味着数据在传输过程中会被加密或采用其他安全措施,以防止未经授权的访问或篡改。一旦连接建立,系统或iOS设备就可以开始接收来自客户端或其他系统的TCP消息,这些消息可能是数据请求、响应或其他类型的信息,系统或iOS设备会根据预设的规则或策略,将这些消息转发到另一个设备或系统。
具体的,如图6所示,所述步骤S106包括步骤S801~S803:
S801、创建TCP套接字监听的端口;
使用网络编程库(如Python的socket模块,C的socketAPI等)创建一个TCP套接字,将套接字绑定到选定的监听端口上。调用listen方法使套接字开始监听传入的连接请求。通常,这意味着将套接字对象保存在某个地方(如全局变量、类属性等),以便后续功能(如连接处理函数)可以使用它。
S802、根据所述监听的端口接收TCP数据,并转发给受信隧道;
当客户端连接到监听端口时,调用accept方法接受连接并返回一个新的套接字,用于与iOS设备的通信。
S803、将所述受信隧道接收的消息转发给连接到监听端口的套接字连接中。
套接字(Socket)是网络编程中的一个基本概念,它代表了网络中不同主机之间或同一主机上不同进程之间的通信端点。在这个场景中,套接字连接指的是已经建立好的、用于在客户端和服务器之间传输数据的通道。
从受信隧道接收消息,是通过与受信隧道的连接来完成的,可能涉及到轮询、事件驱动或异步I/O等技术。若需要解析数据时,解析接收到的消息以提取出有效负载,将解析后的数据(或整个消息,若不需要解析时)通过之前接收的iOS设备套接字连接发送回去。
S107、连接开发者服务端口,并利用所述TCP代理协议转发模块转发消息数据;
在本实施例中,通过步骤S603创建的免网卡受信隧道,并结合监听的端口,使得开发者服务和消息都由TCP代理协议转发模块处理。
开发者服务,也称为“开发者即服务”(Developer-as-a-Service,简称DaaS),是指一种服务模式,其中开发者或开发团队为其他开发者或组织提供所需的技术支持、工具、资源或专业知识。这种模式允许开发者专注于自己的核心业务或产品,而不需要投入大量时间和精力去维护或开发非核心的技术组件。
连接开发者服务和转发消息数据是指在软件或系统的架构中,设置一个中间层或组件,该层或组件负责建立与开发者服务的连接,并将接收到的消息数据转发给这些服务。这个过程通常涉及到网络通信、协议处理和数据路由等技术。
具体的,中间层或组件需要首先与开发者服务端口建立通信连接,这通常通过TCP/IP网络通信协议完成,并且可能需要验证和授权过程来确保连接的安全性。一旦连接建立,中间层或组件就会开始接收来自其他设备的消息数据,在转发之前,中间层或组件可能会对接收到的消息数据进行一些处理,包括解析数据、验证数据格式等。处理完成后,中间层或组件再将消息数据转发给开发者服务端口,再将数据发送到监听的端口,并遵循服务所期望的协议和数据格式。
通过连接开发者服务和转发消息数据,可以实现多种技术效果和业务目标,例如:将客户端与开发者服务分离开来,使得客户端不需要直接了解或关心服务的位置、实现细节等,这提高了系统的灵活性和可维护性。
具体的,所述步骤S107包括步骤S901~S902:
S901、通过Remote XPC连接获取所述iOS设备对应功能的开发者服务端口,将所述开发者服务端口与所述TCP代理协议转发模块连接;
通过Remote XPC连接动态获取对应功能的开发者服务端口,实现了对开发者服务的动态管理和配置。自动将获取到的端口信息传递给TCP代理协议转发模块,减少了手动配置的步骤,提高了工作效率。将Remote XPC连接和TCP代理协议转发模块相结合,实现了开发者服务的无缝集成和高效连接。
S902、向所述TCP代理协议转发模块发送对应的TCP请求,并利用所述TCP代理协议转发模块转发消息数据。
通过发送TCP请求,实现了对iOS设备开发者功能的远程控制和操作。由于采用了TCP协议作为通信基础,可以方便地扩展和添加新的功能请求。TCP协议保证了通信的实时性,使得开发者能够实时获取和处理iOS设备的状态和数据。利用TCP代理协议转发模块,可以对通过受信隧道传输的开发者服务和消息数据进行统一的处理和转发,提高了通信效率。同时,TCP代理协议转发模块可以灵活配置,适应不同的开发者服务和消息转发需求。
通过创建受信任隧道、利用TCP代理协议转发模块、结合Remote XPC连接等方式,实现了iOS设备开发者服务的安全、高效、动态管理和功能操作。
图7所示,本发明实施例还提供一种基于TCP的iOS系统远程服务受信的装置1000,包括:第一连接单元1001、配置单元1002、发送单元1003、接收单元1004、构建单元1005、转发单元1006、第二连接单元1007。
第一连接单元1001,用于与iOS设备的TCP服务器建立TCP连接;
配置单元1002,用于配置SSL上下文所需的协议、加密算法和回调函数,并创建SSL通讯对象;
发送单元1003,用于向iOS设备发送建立受信隧道的请求;
接收单元1004,用于接收并解析从所述iOS设备反馈的数据信息;
构建单元1005,用于根据所述数据信息构建TCP代理协议转发模块。
转发单元1006,用于根据监听的端口转发受信隧道的TCP消息
第二连接单元1007,用于连接开发者服务端口,并利用所述TCP代理协议转发模块转发消息数据。
该装置通过使用SSL/TLS协议加密数据,可以确保通信的机密性和完整性;同时,通过创建TCP代理协议转发模块,并连接开发者服务端口,利用TCP代理协议转发模块转发消息数据,使得iOS设备的开发者功能基于TCP免网卡的远程服务受信隧道可以在任意平台使用,且iOS设备与任意设备之间实现了安全、可靠、高效的通信。
需要说明的是,所属领域的技术人员可以清楚地了解到,上述装置和各单元的具体实现过程,可以参考前述方法实施例中的相应描述,为了描述的方便和简洁,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的设备、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (10)

1.一种基于TCP的iOS系统远程服务受信的方法,其特征在于,包括:
与iOS设备的TCP服务器建立TCP连接;
配置SSL上下文所需的协议、加密算法和回调函数,并创建SSL通讯对象;
向iOS设备发送建立受信隧道的请求;
接收并解析从所述iOS设备反馈的数据信息;
根据所述数据信息构建TCP代理协议转发模块;
根据监听的端口转发受信隧道的TCP消息;
连接开发者服务端口,并利用所述TCP代理协议转发模块转发消息数据。
2.根据权利要求1所述的基于TCP的iOS系统远程服务受信的方法,其特征在于,所述与iOS设备的TCP服务器建立TCP连接,包括:
利用bonjour服务获取iOS设备的网络接口;
结合所述网络接口和本地网络接口组成IPV6套接字地址;
将所述IPV6套接字地址和所述iOS设备的受信端口连接,获取Socket。
3.根据权利要求2所述的基于TCP的iOS系统远程服务受信的方法,其特征在于,所述配置SSL上下文所需的协议、加密算法和回调函数,并创建SSL通讯对象,包括:
通过SSL_CTX_new创建SSL上下文,设置TLSv1_2协议;
通过SSL_CTX_set_psk_client_callback对所述SSL上下文设置回调函数,在所述回调函数中输入预共享密钥数据与密钥长度;
通过SSL_CTX_set_cipher_list设置加密算法列表;
通过所述SSL上下文创建SSL通讯对象,并将所述SSL通讯对象与所述Socket进行关联。
4.根据权利要求1所述的基于TCP的iOS系统远程服务受信的方法,其特征在于,所述向iOS设备发送建立受信隧道的请求,还包括:
构建连接握手请求的数据信息;
通过所述SSL通讯对象向所述iOS设备发送所述数据信息,建立受信隧道的请求。
5.根据权利要求4所述的基于TCP的iOS系统远程服务受信的方法,其特征在于,所述接收并解析从所述iOS设备反馈的数据信息,包括:
接收从所述iOS设备反馈JSON格式的数据信息;
验证所述JSON格式的数据信息中的类型字段是否为服务端握手响应,若不是,则说明请求不正确;若是,则说明请求正确。
6.根据权利要求1所述的基于TCP的iOS系统远程服务受信的方法,其特征在于,所述根据所述数据信息构建TCP代理协议转发模块,包括:
构建TCP代理协议转发模块;
通过所述TCP代理协议转发模块构建数据包;
通过所述TCP代理协议转发模块按照IPv6/TCP的格式对所述数据包进行解析,封装为IPv6/TCP格式的数据帧;
通过所述TCP代理协议转发模块将所述数据包通过所述IPv6\TCP格式的数据帧的方式发送到所述受信隧道,构建免网卡的受信隧道。
7.根据权利要求6所述的基于TCP的iOS系统远程服务受信的方法,其特征在于,所述根据所述数据信息构建TCP代理协议转发模块,还包括:
通过所述TCP代理协议转发模块通过所述免网卡的受信隧道接收并进行解析得到数据信息;
通过所述TCP代理协议转发模块进行端口连接。
8.根据权利要求6所述的基于TCP的iOS系统远程服务受信的方法,其特征在于,所述根据监听的端口转发受信隧道的TCP消息,包括:
创建TCP套接字监听的端口;
根据所述监听的端口接收TCP数据,并转发给受信隧道;
将所述受信隧道接收的消息转发给连接到监听端口的套接字连接中。
9.根据权利要求8所述的基于TCP的iOS系统远程服务受信的方法,其特征在于,所述连接开发者服务端口,并利用所述TCP代理协议转发模块转发消息数据,包括:
通过Remote XPC连接获取所述iOS设备对应功能的开发者服务端口,将所述开发者服务端口与所述TCP代理协议转发模块连接;
向所述TCP代理协议转发模块发送对应的TCP请求,并利用所述TCP代理协议转发模块转发消息数据。
10.一种基于TCP的iOS系统远程服务受信的装置,其特征在于,包括:
第一连接单元,用于与iOS设备的TCP服务器建立TCP连接;
配置单元,用于配置SSL上下文所需的协议、加密算法和回调函数,并创建SSL通讯对象;
发送单元,用于向iOS设备发送建立受信隧道的请求;
接收单元,用于接收并解析从所述iOS设备反馈的数据信息;
构建单元,用于根据所述数据信息构建TCP代理协议转发模块;
转发单元,用于根据监听的端口转发受信隧道的TCP消息;
第二连接单元,用于连接开发者服务端口,并利用所述TCP代理协议转发模块转发消息数据。
CN202410561885.6A 2024-05-08 2024-05-08 一种基于TCP的iOS系统远程服务受信的方法和装置 Pending CN118432894A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410561885.6A CN118432894A (zh) 2024-05-08 2024-05-08 一种基于TCP的iOS系统远程服务受信的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410561885.6A CN118432894A (zh) 2024-05-08 2024-05-08 一种基于TCP的iOS系统远程服务受信的方法和装置

Publications (1)

Publication Number Publication Date
CN118432894A true CN118432894A (zh) 2024-08-02

Family

ID=92310367

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410561885.6A Pending CN118432894A (zh) 2024-05-08 2024-05-08 一种基于TCP的iOS系统远程服务受信的方法和装置

Country Status (1)

Country Link
CN (1) CN118432894A (zh)

Similar Documents

Publication Publication Date Title
US11792169B2 (en) Cloud storage using encryption gateway with certificate authority identification
US11848961B2 (en) HTTPS request enrichment
US8788805B2 (en) Application-level service access to encrypted data streams
US8984268B2 (en) Encrypted record transmission
JP5640226B2 (ja) 第1ドメインのクライアントと第2ドメインのサーバとの間でセキュアな通信チャネルを確立するための装置、方法およびプログラム
JP2004295891A (ja) パケットペイロードを認証する方法
US20050160269A1 (en) Common security key generation apparatus
US11924248B2 (en) Secure communications using secure sessions
WO2018231519A1 (en) Cloud storage using encryption gateway with certificate authority identification
CN113950802B (zh) 用于执行站点到站点通信的网关设备和方法
US8046820B2 (en) Transporting keys between security protocols
KR101971995B1 (ko) 보안을 위한 보안 소켓 계층 복호화 방법
CN114707158A (zh) 基于tee的网络通信认证方法以及网络通信认证系统
CN118432894A (zh) 一种基于TCP的iOS系统远程服务受信的方法和装置
Alhumrani et al. Cryptographic protocols for secure cloud computing
Khandkar et al. Masking host identity on internet: Encrypted TLS/SSL handshake
KR102086489B1 (ko) 기설정된 운영체제에서 송신되는 패킷의 보안을 위해서 보안 소켓 계층을 복호화하는 방법
EP4346255A1 (en) Encrypted satellite communications
Petersson Analysis of Methods for Chained Connections with Mutual Authentication Using TLS
AlHokail Secure Data Exchange System: Minimizing Security Attack Risks while Preserving Bandwidth

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination