KR102308269B1 - 프록시 기반 네트워크 통신들에서의 제어 데이터의 전송 - Google Patents

프록시 기반 네트워크 통신들에서의 제어 데이터의 전송 Download PDF

Info

Publication number
KR102308269B1
KR102308269B1 KR1020207004400A KR20207004400A KR102308269B1 KR 102308269 B1 KR102308269 B1 KR 102308269B1 KR 1020207004400 A KR1020207004400 A KR 1020207004400A KR 20207004400 A KR20207004400 A KR 20207004400A KR 102308269 B1 KR102308269 B1 KR 102308269B1
Authority
KR
South Korea
Prior art keywords
control data
request
web
app
server
Prior art date
Application number
KR1020207004400A
Other languages
English (en)
Other versions
KR20200023485A (ko
Inventor
조슈아 리안 라우어
갈 마올
에란 이작 힐쉬
Original Assignee
페이스북, 인크.
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 페이스북, 인크. filed Critical 페이스북, 인크.
Publication of KR20200023485A publication Critical patent/KR20200023485A/ko
Application granted granted Critical
Publication of KR102308269B1 publication Critical patent/KR102308269B1/ko

Links

Images

Classifications

    • H04L67/28
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • H04L67/125Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks involving control of end-device applications over a network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/564Enhancement of application control based on intercepted application data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/163In-band adaptation of TCP data exchange; In-band control procedures

Abstract

본 발명은 클라이언트 디바이스를 제어하기 위한 기술들에 관한 것이다. 기술들은 클라이언트 디바이스로부터 웹 리소스에 대한 요청을 수신하는 것; 클라이언트 디바이스의 하나 이상의 기능들과 연관된 제어 데이터를 생성하는 것; 및 클라이언트 디바이스의 하나 이상의 기능들을 제어하기 위해 웹 리소스 및 제어 데이터를 포함하는 응답을 클라이언트 디바이스로 송신하는 것을 포함할 수 있다.

Description

프록시 기반 네트워크 통신들에서의 제어 데이터의 전송
본 발명은 프록시 기반 네트워크 통신들에서의 제어 데이터의 전송에 관한 것이다.
컴퓨팅 디바이스의 원격 제어는 전형적으로, 제어 데이터를 운반하기 위한 새롭거나 부가적인 통신 능력들의 사용을 요구한다. 예를 들면, 컴퓨팅 디바이스(예로서, 컴퓨터, 스마트 폰, 등)는 기능들의 세트를 제공하도록 구성될 수 있다. 기능들은 컴퓨팅 디바이스상에서 동작하는 소프트웨어 애플리케이션들에 의해, 및/또는 컴퓨팅 디바이스의 하드웨어 구성요소들에 의해 제공될 수 있다. 구성은 구성의 주제와 연관된 제어 데이터에 기초하여 수행될 수 있다. 제어 데이터는 예를 들면, 소프트웨어 패치, 소프트웨어 애플리케이션에 제공될 파라미터들의 세트, 하드웨어 레지스터에 저장될 값들의 세트, 등일 수 있다.
데이터 네트워크에서, 컴퓨팅 디바이스는 원격 구성 프로세스에서 또 다른 디바이스(예로서, 서버)로부터 제어 데이터를 수신할 수 있다. 구성 프로세스를 개시하기 위해, 컴퓨팅 디바이스는 업데이트 또는 부가될 타겟 기능, 및 타겟 기능에 대한 제어 데이터를 결정한다. 컴퓨팅 디바이스는 그 다음, (예로서, 전송 제어 프로토콜(TCP)에 기초하여) 서버와의 클라이언트 서버 통신 채널을 확립하고, 그 다음 통신 채널을 통해 제어 데이터에 대한 요청을 서버로 송신할 수 있다. 서버는 요청을 프로세싱하고, 요청된 제어 데이터를 포함하는 응답을 통신 채널을 통해 컴퓨팅 디바이스로 송신할 수 있다. 컴퓨팅 디바이스는 그 다음, 응답이 요청된 제어 데이터를 포함하는지를 검증하고, 그 다음 제어 데이터에 기초하여 타겟 기능을 업데이트한다.
이 구성에는 다수의 단점들이 존재한다. 예를 들면, 통신 채널의 관리 뿐만 아니라, 제어 데이터를 얻기 위한 요청들 및 응답들은 구성 프로세스의 복잡성을 증가시키고 더 많은 컴퓨팅 리소스들을 요구한다. 게다가, 이들 요청들 및 응답들의 송신은 또한, 상당한 양의 네트워크 대역폭을 소비하고, 네트워크 인프라스트럭쳐에 부가적인 부담을 생성할 수 있다.
본 발명은 클라이언트 디바이스를 제어하기 위한 기술들에 관한 것이다. 더 구체적으로, 본 발명의 특정 양태들에서, 컴퓨터 구현 제어 방법이 제공된다. 방법은 클라이언트 디바이스로부터 웹 리소스에 대한 제 1 요청을 수신하는 단계; 제 1 요청에 기초하여 제 2 요청을 생성하는 단계; 웹 리소스에 대한 제 2 요청을 웹 서버로 송신하는 단계; 클라이언트 디바이스의 하나 이상의 기능들과 연관된 제어 데이터를 생성하는 단계; 웹 서버로부터 웹 리소스를 포함하는 제 1 응답을 수신하는 단계; 제어 데이터 및 웹 리소스를 포함하는 제 2 응답을 생성하는 단계; 및 클라이언트 디바이스의 하나 이상의 기능들을 제어하기 위해 제 2 응답을 클라이언트 디바이스로 송신하는 단계를 포함할 수 있다.
컴퓨터 구현 방법의 특정 실시예들은 서버 프록시에 의해 수행될 수 있다. 일부 실시예들에서, 클라이언트 디바이스는 앱 및 로컬 프록시를 포함할 수 있고; 제 1 요청은 앱에 의해 수신된 웹 액세스 요청에 기초하여 로컬 프록시에 의해 생성될 수 있다.
본 발명의 특정 실시예들에 따르면, 제 1 및 제 2 요청들은 HTTP 요청들일 수 있고; 제 1 및 제 2 응답들은 HTTP 응답들일 수 있으며; 제어 데이터는 제 2 응답의 하나 이상의 헤더들에 포함될 수 있다.
본 발명의 특정 실시예들에 따르면, 하나 이상의 기능들은 앱과 연관될 수 있다. 일부 실시예들에서, 제어 데이터는: 앱에 웹 페이지를 디스플레이하기 위한 구성, 앱으로 검색을 수행하기 위한 구성, 또는 앱의 사용자 인터페이스 구성 중 적어도 하나를 포함하는 정보를 포함할 수 있다.
본 발명의 특정 실시예들에 따르면, 하나 이상의 기능들은 로컬 프록시와 연관될 수 있다. 일부 실시예들에서, 제 1 요청은 로컬 프록시와 서버 프록시 사이에 확립된 제 1 TCP 연결을 통해 로컬 프록시로부터 수신될 수 있고; 제어 데이터는 웹 서버와의 제 2 TCP 연결을 확립하기 위해, 그리고 제 2 TCP 연결을 통해 제 3 요청을 웹 서버로 송신하기 위해 로컬 프록시를 제어할 수 있다. 일부 실시예들에서, 제어 데이터는 활성화가능한 인터페이스 요소를 제공하기 위해 앱을 제어할 수 있고; 제어 데이터는 활성화가능한 인터페이스 요소가 활성화된다는 검출에 기초하여 제 2 TCP 연결을 확립하기 위해 그리고 제 3 요청을 송신하기 위해 로컬 프록시를 제어할 수 있다.
특정 실시예들에 따르면, 제어 데이터는 제 1 요청에 기초하여 생성될 수 있다. 일부 실시예들에서, 제어 데이터는 서명으로 암호화될 수 있다.
본 발명의 특정 실시예들에 따르면, 시스템이 제공된다. 시스템은 하나 이상의 프로세서들; 및 하나 이상의 프로세서들에 의해 실행될 때, 하나 이상의 프로세서들이 동작들을 수행하게 하는 명령들을 저장하는 비일시적 컴퓨터 판독가능한 매체를 포함할 수 있고, 상기 동작들은: 클라이언트 디바이스로부터 웹 리소스에 대한 제 1 요청을 수신하는 것; 제 1 요청에 기초하여 제 2 요청을 생성하는 것; 웹 리소스에 대한 제 2 요청을 웹 서버로 송신하는 것; 클라이언트 디바이스의 하나 이상의 기능들과 연관된 제어 데이터를 생성하는 것; 웹 서버로부터 웹 리소스를 포함하는 제 1 응답을 수신하는 것; 제어 데이터 및 웹 리소스를 포함하는 제 2 응답을 생성하는 것; 및 클라이언트 디바이스의 하나 이상의 기능들을 제어하기 위해 제 2 응답을 클라이언트 디바이스로 송신하는 것을 포함할 수 있다.
본 발명의 특정 실시예들에 따르면, 시스템은 서버 프록시의 일부일 수 있다. 클라이언트 디바이스는 앱 및 로컬 프록시를 포함할 수 있고; 제 1 요청은 앱에 의해 수신된 웹 액세스 요청에 기초하여 로컬 프록시에 의해 생성될 수 있다.
본 발명의 특정 실시예들에 따르면, 제 1 및 제 2 요청들은 HTTP 요청들일 수 있고; 제 1 및 제 2 응답들은 HTTP 응답들일 수 있으며; 제어 데이터는 제 2 응답의 하나 이상의 헤더들에 포함될 수 있다.
본 발명의 특정 실시예들에 따르면, 하나 이상의 기능들은 앱과 연관될 수 있다. 일부 실시예들에서, 제어 데이터는: 앱에 웹 페이지를 디스플레이하기 위한 구성, 앱으로 검색을 수행하기 위한 구성, 또는 앱의 사용자 인터페이스 구성 중 적어도 하나를 포함하는 정보를 포함할 수 있다.
본 발명의 특정 실시예들에 따르면, 하나 이상의 기능들은 로컬 프록시와 연관될 수 있다. 일부 실시예들에서, 제 1 요청은 로컬 프록시와 서버 프록시 사이에 확립된 제 1 TCP 연결을 통해 로컬 프록시로부터 수신될 수 있고; 제어 데이터는 웹 서버와의 제 2 TCP 연결을 확립하기 위해, 그리고 제 3 요청을 제 2 TCP 연결을 통해 웹 서버로 송신하기 위해 로컬 프록시를 제어할 수 있다. 일부 실시예들에서, 제어 데이터는 활성화가능한 인터페이스 요소를 제공하기 위해 앱을 제어할 수 있고; 제어 데이터는 활성화가능한 인터페이스 요소가 활성화된다는 검출에 기초하여 제 2 TCP 연결을 확립하기 위해 그리고 제 3 요청을 송신하기 위해 로컬 프록시를 제어할 수 있다.
본 발명의 특정 실시예들에 따르면, 제어 데이터는 제 1 요청에 기초하여 생성될 수 있다.
본 발명의 특정 실시예들에서, 비일시적 컴퓨터 판독가능한 저장 매체가 제공된다. 비일시적 컴퓨터 판독가능한 저장 매체는 하나 이상의 프로세서들에 의해 실행가능한 복수의 명령들을 저장할 수 있다. 복수의 명령들은 하나 이상의 프로세서들에 의해 실행될 때, 하나 이상의 프로세서들이 클라이언트 디바이스로부터 웹 리소스에 대한 제 1 요청을 수신하고; 제 1 요청에 기초하여 제 2 요청을 생성하고; 웹 리소스에 대한 제 2 요청을 웹 서버로 송신하고; 클라이언트 디바이스의 하나 이상의 기능들과 연관된 제어 데이터를 생성하고; 웹 서버로부터 웹 리소스를 포함하는 제 1 응답을 수신하고; 제어 데이터 및 웹 리소스를 포함하는 제 2 응답을 생성하며; 클라이언트 디바이스의 하나 이상의 기능들을 제어하기 위해 제 2 응답을 클라이언트 디바이스로 송신하게 할 수 있다.
본 발명의 특정 양태들에서, 컴퓨터 구현 제어 방법이 제공된다. 컴퓨터 구현 제어 방법은: 클라이언트 디바이스로부터, 웹 리소스에 대한 제 1 요청을 수신하는 단계; 제 1 요청에 기초하여 제 2 요청을 생성하는 단계; 웹 리소스에 대한 제 2 요청을 웹 서버로 송신하는 단계; 클라이언트 디바이스의 하나 이상의 기능들과 연관된 제어 데이터를 생성하는 단계; 웹 서버로부터 웹 리소스를 포함하는 제 1 응답을 수신하는 단계; 제어 데이터 및 웹 리소스를 포함하는 제 2 응답을 생성하는 단계; 및 클라이언트 디바이스의 하나 이상의 기능들을 제어하기 위해 제 2 응답을 클라이언트 디바이스로 송신하는 단계를 포함할 수 있다.
컴퓨터 구현 방법의 특정 실시예들은 서버 프록시에 의해 수행될 수 있다. 일부 실시예들에서, 클라이언트 디바이스는 앱 및 로컬 프록시를 포함할 수 있고; 제 1 요청은 앱에 의해 수신된 웹 액세스 요청에 기초하여 로컬 프록시에 의해 생성될 수 있다. 일부 실시예들에서, 하나 이상의 기능들은 앱과 연관될 수 있다. 일부 실시예들에서, 하나 이상의 기능들은 로컬 프록시와 연관될 수 있다.
본 발명의 특정 실시예들에 따르면, 제 1 및 제 2 요청들은 HTTP 요청들일 수 있고; 제 2 및 제 2 응답들은 HTTP 응답들일 수 있으며; 제어 데이터는 제 2 응답의 하나 이상의 헤더들에 포함될 수 있다.
본 발명의 특정 실시예들에 따르면, 하나 이상의 기능들은 앱과 연관될 수 있다. 선택적으로, 제어 데이터는: 앱에 웹 페이지를 디스플레이하기 위한 구성, 앱으로 검색을 수행하기 위한 구성, 또는 앱의 사용자 인터페이스 구성 중 적어도 하나를 포함하는 정보를 포함한다.
본 발명의 특정 실시예들에 따르면, 하나 이상의 기능들은 로컬 프록시와 연관될 수 있다. 선택적으로, 제 1 요청은 로컬 프록시와 서버 프록시 사이에 확립된 제 1 TCP 연결을 통해 로컬 프록시로부터 수신되고, 제어 데이터는 웹 서버와의 제 2 TCP 연결을 확립하기 위해, 그리고 제 2 TCP 연결을 통해 제 3 요청을 웹 서버로 송신하기 위해 로컬 프록시를 제어할 수 있다. 선택적으로, 제어 데이터는 활성화가능한 인터페이스 요소를 제공하기 위해 앱을 제어할 수 있고, 제어 데이터는 활성화가능한 인터페이스 요소가 활성화된다는 검출에 기초하여 제 2 TCP 연결을 확립하기 위해 그리고 제 3 요청을 송신하기 위해 로컬 프록시를 제어할 수 있다.
본 발명의 특정 실시예들에 따르면, 제어 데이터는 제 1 요청에 기초하여 생성될 수 있다. 일부 실시예들에서, 제어 데이터는 서명으로 암호화될 수 있다.
본 발명의 특정 실시예들에 따르면, 시스템이 제공된다. 시스템은 하나 이상의 프로세서들; 및 하나 이상의 프로세서들에 의해 실행될 때, 하나 이상의 프로세서들이 동작들을 수행하게 하는 명령들을 저장하는 비일시적 컴퓨터 판독가능한 매체를 포함할 수 있고, 상기 동작들은: 클라이언트 디바이스로부터 웹 리소스에 대한 제 1 요청을 수신하는 것; 제 1 요청에 기초하여 제 2 요청을 생성하는 것; 웹 리소스에 대한 제 2 요청을 웹 서버로 송신하는 것; 클라이언트 디바이스의 하나 이상의 기능들과 연관된 제어 데이터를 생성하는 것; 웹 서버로부터 웹 리소스를 포함하는 제 1 응답을 수신하는 것; 제어 데이터 및 웹 리소스를 포함하는 제 2 응답을 생성하는 것; 및 클라이언트 디바이스의 하나 이상의 기능들을 제어하기 위해 제 2 응답을 클라이언트 디바이스로 송신하는 것을 포함한다.
본 발명의 특정 실시예들에 따르면, 시스템은 서버 프록시의 일부일 수 있다. 클라이언트 디바이스는 앱 및 로컬 프록시를 포함할 수 있고; 제 1 요청은 앱에 의해 수신된 웹 액세스 요청에 기초하여 로컬 프록시에 의해 생성될 수 있다.
본 발명의 특정 실시예들에 따르면, 제 1 및 제 2 요청들은 HTTP 요청들일 수 있고; 제 1 및 제 2 응답들은 HTTP 응답들일 수 있으며; 제어 데이터는 제 2 응답의 하나 이상의 헤더들에 포함될 수 있다.
본 발명의 특정 실시예들에 따르면, 하나 이상의 기능들은 앱과 연관될 수 있다. 선택적으로, 제어 데이터는: 앱에 웹 페이지를 디스플레이하기 위한 구성, 앱으로 검색을 수행하기 위한 구성, 또는 앱의 사용자 인터페이스 구성 중 적어도 하나를 포함하는 정보를 포함할 수 있다.
본 발명의 특정 실시예들에 따르면, 하나 이상의 기능들은 로컬 프록시와 연관될 수 있다. 선택적으로, 제 1 요청은 로컬 프록시와 서버 프록시 사이에 확립된 제 1 TCP 연결을 통해 로컬 프록시로부터 수신될 수 있고; 제어 데이터는 웹 서버와의 제 2 TCP 연결을 확립하기 위해, 그리고 제 2 TCP 연결을 통해 제 3 요청을 웹 서버로 송신하기 위해 로컬 프록시를 제어할 수 있다. 선택적으로, 제어 데이터는 활성화가능한 인터페이스 요소를 제공하기 위해 앱을 제어할 수 있고; 제어 데이터는 활성화가능한 인터페이스 요소가 활성화된다는 검출에 기초하여 제 2 TCP 연결을 확립하기 위해 그리고 제 3 요청을 송신하기 위해 로컬 프록시를 제어할 수 있다.
본 발명의 특정 실시예들에 따르면, 제어 데이터는 제 1 요청에 기초하여 생성될 수 있다.
특정 실시예들에 따르면, 하나 이상의 컴퓨터 판독가능한 비일시적 저장 매체들은 개시된 실시예들에 따른 방법을 수행하도록 실행될 때 동작가능한 소프트웨어를 구현할 수 있다.
특정 실시예들에 따르면, 시스템은: 하나 이상의 프로세서들; 및 프로세서들에 결합되고 프로세서들에 의해 실행가능한 명령들을 포함하는 적어도 하나의 메모리를 포함할 수 있고, 프로세서들은 명령들을 실행할 때 개시된 실시예들에 따른 방법을 수행하도록 동작가능하다.
특정 실시예들에 따르면, 바람직하게 컴퓨터 판독가능한 비일시적 저장 매체들을 포함하는 컴퓨터 프로그램 제품은 데이터 프로세싱 시스템에서 실행될 때 개시된 실시예들에 따른 방법을 수행하도록 동작가능할 수 있다.
예시적인 실시예들이 다음의 도면들을 참조하여 하기에 상세하게 설명된다.
도 1은 컴퓨팅 디바이스에 설치된 소프트웨어 애플리케이션을 구성하는 일례를 도시한 도면.
도 2는 본 발명의 특정 양태들에 따른, 데이터 네트워크 시스템의 단순화된 블록도.
도 3은 본 발명의 특정 양태들에 따른, 제어 데이터를 포함하는 HTTP 응답의 일례의 단순화된 블록도.
도 4는 본 발명의 특정 양태들에 따른, 구성들을 상이한 제어 데이터 값들에 매핑하는 일 예시적인 매핑 테이블의 단순화된 블록도.
도 5는 본 발명의 특정 양태들에 따른, 제어 데이터의 송신을 위한 서버 프록시의 일례의 단순화된 블록도.
도 6은 본 발명의 특정 양태들에 따른, 제어 데이터를 클라이언트 디바이스에 제공하기 위한 일 예시적인 방법을 도시하는 간략화된 흐름도.
도 7은 본 명세서에 개시된 예들 중 일부를 구현하기 위한 일 예시적인 컴퓨팅 시스템의 단순화된 블록도.
I. 컴퓨팅 디바이스의 원격 구성
컴퓨팅 디바이스(예로서, 컴퓨터, 스마트 폰, 등)는 기능들의 세트를 제공하도록 구성될 수 있다. 기능들은 컴퓨팅 디바이스에 설치된 소프트웨어 애플리케이션들에 의해, 및/또는 컴퓨팅 디바이스의 하드웨어 구성요소들에 의해 제공될 수 있다.
도 1은 컴퓨팅 디바이스에서 동작하는 소프트웨어 애플리케이션을 구성하는 일례를 도시한다. 도 1에 도시된 바와 같이, 컴퓨팅 디바이스(100)는 "MY_APP"로 라벨링된 소프트웨어 애플리케이션("앱")을 동작시킨다. 앱은 입력을 수신하고 정보를 출력하기 위한 인터페이스(102)를 제공한다. 도 1에 도시된 예에서, 앱은 웹 브라우징 기능들을 제공할 수 있고, 그를 위해 인터페이스(102)는 웹 주소를 입력하기 위한 텍스트 박스(104), 텍스트 박스(104)에서 웹 주소로 지향된 웹 액세스 요청의 송신을 트리거링(triggering)하기 위한 활성화가능한 요소(106), 및 웹 주소와 연관된 콘텐트를 디스플레이하기 위한 출력 인터페이스(108)를 포함한다. 콘텐트는 또한, 웹 액세스 요청들의 송신을 트리거링하기 위한 하나 이상의 활성화가능한 요소들(예로서, 범용 리소스 링크들(URL)(110 및 111))을 포함할 수 있다. 인터페이스(102)는 또한, 예를 들면, 버전 정보(112)를 포함하는 다른 정보를 디스플레이할 수 있다.
컴퓨팅 디바이스(100)는 앱의 다양한 양태들을 업데이트하기 위해 구성 프로세스를 통해 제어 데이터를 수신할 수 있다. 예를 들면, 도 1에 도시된 바와 같이, 앱의 버전은 검색 기능을 포함하도록 업데이트될 수 있고, 그를 위해 활성화가능한 검색 요소(114)가 제공된다. 앱의 웹 브라우징 기능들이 또한 업데이트될 수 있다. 예를 들면, 업데이트의 결과로서 내비게이션 요소(116)가 제공될 수 있다. 게다가, 앱(또는 컴퓨팅 디바이스(100)의 다른 양태들)은 또한, 상이한 웹 브라우징 기능을 제공하고, 상이한 콘텐트를 디스플레이하고, 등을 하도록 업데이트될 수 있다. 예를 들면, 도 1에 도시된 바와 같이, 앱은 가변 액세스 정책을 구현하도록 구성될 수 있다. 정책의 일부로서, 앱은 제로-레이티드(zero-rated) 웹 서비스에 대한 액세스를 제공할 수 있다. 이러한 제로-레이티드 웹 서비스는 사용자가 앱을 통해, 특정 제한을 갖고 인터넷에 액세스하는 것을 허용할 수 있다. 예를 들면, 액세스는 액세스들의 횟수가 한도에 도달할 때까지 이용가능할 수 있고, 이는 구성 프로세스를 트리거링할 수 있다. 구성 프로세스 이후에, 앱은 제로-레이티드 웹 서비스에 대한 액세스를 제공하는 것을 중단하고, 무료 액세스가 종료되었음을 나타내는 페이지를 디스플레이할 수 있다.
컴퓨팅 디바이스(100)는 서버로부터 제어 데이터를 수신할 수 있다. 현재, 컴퓨팅 디바이스는 예를 들면, 서버와의 TCP 패킷 기반 통신 채널(예로서, TCP에 기초함)을 확립함으로써 제어 데이터의 송신을 개시할 수 있다. 컴퓨팅 디바이스는 그 다음, 제어 데이터에 대한 요청을 포함하는 TCP 패킷들을 통신 채널을 통해 서버로 송신한다. 서버는 요청을 프로세싱하고, 요청된 제어 데이터를 포함하는 TCP 패킷들을 통신 채널을 통해 컴퓨팅 디바이스로 송신할 수 있다. 컴퓨팅 디바이스가 이러한 배열을 통해 요청된 제어 데이터를 수신할 수 있을지라도, 통신 채널의 관리 뿐만 아니라, 제어 데이터를 얻기 위한 요청들 및 응답들은 구성 프로세스의 복잡성을 증가시키고 더 많은 컴퓨팅 리소스들을 요구한다. 게다가, 이들 요청들 및 응답들의 송신은 또한, 상당한 양의 네트워크 대역폭을 소비하고, 네트워크 인프라스트럭쳐에 부가적인 부담을 생성할 수 있다.
제어 데이터를 컴퓨팅 디바이스에 제공하기 위해 컴퓨팅 디바이스와 서버 사이의 기존 통신을 최대한 활용하는 컴퓨팅 디바이스의 원격 구성을 위한 기술들이 본 명세서에 개시된다. 서버는 컴퓨팅 디바이스와 특정 웹 리소스들의 호스트(예로서, 문서 파일들, 미디어 파일들, 등을 포함할 수 있는 웹 콘텐트들) 사이의 매개체로서 동작하는 서버 프록시를 포함할 수 있다. 컴퓨팅 디바이스는 서버와의 TCP 통신 채널을 확립할 수 있다. 컴퓨팅 디바이스는 TCP 통신 채널을 통해 웹 액세스 요청(예로서, 하이퍼텍스트 전송 프로토콜(HTTP) 요청)을 웹 리소스를 요청하기 위한 서버로 송신할 수 있다. 웹 액세스 요청에 기초하여, 서버는, 또한 TCP 통신 채널을 통해, 요청된 웹 리소스를 포함하는 웹 액세스 응답(예로서, HTTP 응답)을 컴퓨팅 디바이스로 다시 송신할 수 있다. 서버는 또한, 제어 데이터를 웹 액세스 응답의 일부로서 컴퓨팅 디바이스로 송신한다.
서버는 다양한 상황들에서 제어 데이터를 컴퓨팅 디바이스로 송신하도록 구성될 수 있다. 예를 들면, 도 1을 다시 참조하면, 서버는 "MY_APP" 앱을 상이한 버전으로 업데이트하기 위해 하나 이상의 외부 이벤트들에 의해 트리거링될 수 있다. 외부 이벤트들은 예를 들면, 타이머의 만료(예로서, 서버가 특정 시점에 앱으로 업데이트되도록 구성됨), 또 다른 서버로부터의 앱에 대한 업데이트 패치들의 수신, 등을 포함할 수 있다. 외부 이벤트에 의해 트리거링된 후에, 서버 프록시는 업데이트될 앱에 의해 송신된 웹 액세스 요청을 모니터링할 수 있다. 이러한 웹 액세스 요청이 예를 들면, TCP 통신 채널을 통해 컴퓨팅 디바이스(100)로부터 수신될 때, 서버는 웹 액세스 응답에, 요청된 웹 리소스들(예로서, 웹 콘텐트) 뿐만 아니라, 제어 데이터를 포함할 수 있다. 서버는 그 다음, 웹 액세스 요청을 송신하는 동일한 TCP 통신 채널을 통해, 제어 데이터를 포함하는 웹 액세스 응답을 컴퓨팅 디바이스(100)로 송신할 수 있다.
서버는 또한 예를 들면, 웹 액세스 요청에 의해 요청된 웹 리소스를 포함하는 다른 정보에 기초하여 송신될 제어 데이터를 결정할 수 있다. 예를 들면, 도 1을 참조하여 상기 논의된 바와 같이, 컴퓨팅 디바이스(100)는 가변 액세스 정책을 구현하기 위해 서버와 통신할 수 있다. 컴퓨팅 디바이스(100)는 제로-레이티드 웹 서비스(예로서, 뉴스 콘텐트에 대한 무료 액세스)에 대한 액세스를 제공하고, 그 다음 특정 조건들이 충족될 때 웹 서비스에 대한 액세스를 변경할 수 있다. 예를 들면, 웹 사이트 "XYZnews.com"에 호스팅된 콘텐트로 지향된 미리 결정된 수의 웹 액세스 요청들에 도달될 때, 뉴스 콘텐트에 대한 무료 액세스가 중단될 수 있다. 서버는 컴퓨팅 디바이스(100)로부터 수신된 다수의 이러한 웹 액세스 요청들을 추적하고, 그 수에 도달될 때 콘텐트에 대한 액세스를 거부하기 위해 제어 데이터를 컴퓨팅 디바이스(100)로 송신할 수 있다. 도 1의 예를 참조하면, 사용자는 "미국 뉴스"와 연관된 콘텐트에 액세스하기 위해 URL(110)(또는 다른 활성화가능한 요소들)을 활성화할 수 있다. URL(110)의 선택은 컴퓨팅 디바이스가 HTTP 요청을 서버로 송신하게 할 수 있다. HTTP 요청을 수신한 이후에, 서버는 컴퓨팅 디바이스(100)로부터 수신된 이러한 요청의 수가 한도에 도달했다고 결정할 수 있다. 서버는 컴퓨팅 디바이스(100)로 송신될 HTTP 응답에 요청된 콘텐트(또는 다른 콘텐트)를 포함할 수 있다. 그러나, 서버는 요청된 콘텐트 대한 사용자 액세스를 거부하기 위해 인터페이스(102)의 요소들 중 일부를 변경하는 HTTP 응답에 제어 데이터를 포함할 수 있다. 예를 들면, 도 1에 도시된 바와 같이, 제어 데이터는 요청된 콘텐트를 렌더링할 때 출력 인터페이스(108)가 불투명한 층을 디스플레이하게 할 수 있다. 제어 데이터는 또한, 출력 인터페이스(108)로 하여금 액세스가 거부됨을 나타내기 위해 메시지(118)를 디스플레이하게 하고, 사용자가 요금 기반 웹 서비스에 가입할 수 있는 가입 페이지에 링크(120)를 제공하게 할 수 있다.
개시된 기술들로, 제어 데이터를 수신하기 위해 별개의 통신 채널을 확립하는 대신에, 컴퓨팅 디바이스(예로서, 컴퓨팅 디바이스(100))는 제어 데이터 및 요청된 웹 리소스들 둘 모두를 수신하기 위해 동일한 통신 채널을 이용할 수 있다. 게다가, 요청된 리소스들을 또한 포함하는 웹 액세스 응답의 일부로서 제어 데이터를 포함함으로써, 컴퓨팅 디바이스는 제어 데이터를 수신하기 위해 웹 액세스 응답과는 별개의 부가적인 응답을 취급할 필요가 없다. 이들 모든 것은 컴퓨팅 디바이스 및 서버의 동작들을 단순화하고, 제어 데이터 송신에 의해 야기된 네트워크 트래픽을 감소시킬 수 있어서, 컴퓨팅 및 네트워킹 리소스들의 더 효율적인 이용을 야기한다.
게다가, 개시된 기술들은 또한, 컴퓨팅 디바이스들이 규칙적인 웹 액세스 요청들 이외의 제어 데이터에 대한 특정 요청들을 송신하도록 요구하지 않고, 서버가 제어 데이터를 컴퓨팅 디바이스들에 일방적으로 푸시하는 것을 가능하게 한다. 결과적으로, 앱의 업데이트는, 특히 웹 액세스 요청들을 지속적으로 송신하고 웹 액세스 응답들을 수신하는 내장 웹 브라우징 기능들(예로서, 웹뷰)을 갖는 앱들에 대해 다수의 컴퓨팅 디바이스들 중에서 더 균일하고 동기화된 방식으로 수행될 수 있다.
II. 데이터 네트워크 시스템
도 2는 본 발명의 특정 양태들에 따른, 데이터 네트워크 시스템(200)의 단순화된 블록도이다. 데이터 네트워크 시스템(200)은 통신 네트워크(206)를 통해 클라이언트 디바이스(204)에 연결된 웹 서버(202)를 포함할 수 있고, 상기 통신 네트워크는 이더넷, IEEE 802.11, WiMAX(worldwide interoperability for microwave access), 3G, 4G, 5G, 코드 분할 다중화 액세스(CDMA), 디지털 가입자 라인(DSL), 등과 같은 기술들을 이용하는 통신 링크들을 포함할 수 있다. 웹 서버(들)는 웹 리소스들의 세트를 제공할 수 있다. 예를 들면, 웹 서버(202)는 웹 페이지들, 뿐만 아니라 자바®, 플래시®, XML, 등과 같은 다른 콘텐트를 제공할 수 있다. 사용자는 웹 서버(202)에 호스팅된 정보(예로서, 웹 콘텐트, 이미지들, 비디오들, 게시물들, 등)를 업로드 및/또는 검색하기 위해 요청을 웹 서버(202)로 전송할 수 있다. 웹 서버(202)는 또한 예를 들면, 수신 및 라우팅 메시지들을 포함하는 다른 웹 리소스들을 제공할 수 있다. 메시지들은 예를 들면, 인스턴트 메시지들, 대기(queued) 메시지들(예로서, 이메일), 문자 메시지들, 단문 메시지 서비스(SMS) 메시지들, 또는 임의의 다른 적합한 메시징 기술을 이용하여 전송된 메시지들을 포함할 수 있다.
클라이언트 디바이스(204)는 사용자에 대응할 수 있고 프로세서, 메모리(휘발성 메모리 및/또는 비휘발성 저장 드라이브들을 갖는), 입력 및 출력 인터페이스들, 또는 당업계에서 알려진 다른 하드웨어 또는 소프트웨어를 포함할 수 있다. 클라이언트 디바이스(204)는 앱(208)을 포함할 수 있다. 앱(208)은 도 1에서 설명된 앱과 유사한 요소들을 포함할 수 있다. 예를 들면, 앱(208)은 웹 브라우징 능력들을 제공할 수 있고, 웹 주소를 입력하기 위한 입력 인터페이스(예로서, 도 1의 텍스트 박스(104)) 및 웹 콘텐트를 출력하기 위한 출력 인터페이스(예로서, 도 1의 출력 인터페이스(108))를 포함할 수 있다. 웹 브라우징 능력들을 제공하기 위해, 앱(208)은 또한, 입력 인터페이스에서 수신된 웹 주소에 기초하여 웹 액세스 요청을 생성하고, 특정 웹 리소스들(예로서, 웹 콘텐트)을 요청하기 위해 웹 액세스 요청을 웹 서버(202)로 송신할 수 있다. 앱(208)은 또한, 요청된 웹 리소스들을 포함하는 웹 액세스 응답을 프로세싱하고, 웹 액세스 응답으로부터 웹 리소스들을 추출하며, 웹 리소스들을 출력 인터페이스에 제공할 수 있다. 게다가, 앱(208)은 또한, 웹 액세스 응답에 포함된 제어 데이터를 추출하고, 상기 논의된 바와 같이 제어 데이터에 기초하여 앱의 하나 이상의 요소들을 업데이트할 수 있다.
클라이언트 디바이스(204)는 소프트웨어 애플리케이션일 수 있는 로컬 프록시(210)를 더 포함할 수 있다. 로컬 프록시(210)는 앱(208)에 의해 생성된 웹 액세스 요청을 라우팅할 위치를 결정할 수 있다. 제 1 동작 모드에서, 로컬 프록시(210)는 웹 액세스 요청을 웹 서버(202)로 송신할 수 있다. 로컬 프록시(210)는 웹 서버(202)와의 통신 채널(220)을 확립할 수 있다. 로컬 프록시(210)는 통신 채널(220)을 통해 앱(208)에 의해 생성된 웹 액세스 요청(221)을 웹 서버(202)로 송신할 수 있다. 로컬 프록시(210)는 또한, 통신 채널(220)을 통해 웹 서버(202)로부터 웹 액세스 응답(222)을 수신할 수 있다. 로컬 프록시(210)는 응답에 포함된 웹 리소스들(예로서, 웹 콘텐트들)을 추출할 수 있는, 웹 액세스 응답(222)을 앱(208)에 제공하고, 웹 리소스들을 출력 인터페이스에 제공할 수 있다. 일부 실시예들에서, 통신 채널(220)은 TCP 통신 채널일 수 있는 반면에, 웹 액세스 요청(221)은 HTTP 요청일 수 있고 웹 액세스 응답(222)은 HTTP 응답일 수 있다.
제 2 동작 모드에서, 로컬 프록시(210)는 또한, 웹 액세스 요청을 서버 프록시(212)로 송신할 수 있다. 서버 프록시(212)는 프로세서 및 메모리를 갖는 컴퓨팅 디바이스일 수 있다. 서버 프록시(212)는 도 2에 도시된 바와 같이, 통신 네트워크(206)의 일부, 또는 웹 서버(202)의 일부일 수 있다. 서버 프록시(212)는 앱(208) 대신 웹 서버(202)에 웹 리소스들을 요청할 수 있다. 이 경우에, 로컬 프록시(210)는 서버 프록시(212)와의 통신 채널(224)을 확립할 수 있고, 이는 또한 웹 서버(202)와의 통신 채널(226)을 확립한다. 로컬 프록시(210)는 통신 채널(224)을 통해 앱(208)에 의해 생성된 웹 액세스 요청(230)을 서버 프록시(212)로 송신할 수 있다. 서버 프록시(212)는 웹 액세스 요청(230)에 기초하여 웹 액세스 요청(232)을 생성하고(예로서, 웹 액세스 요청(230)에 의해 요청된 것과 동일한 웹 리소스들을 요청하기 위해), 통신 채널(226)을 통해 웹 액세스 요청(232)을 웹 서버(202)로 송신할 수 있다. 서버 프록시(212)는 또한, 통신 채널(226)을 통해 웹 서버로부터 요청된 웹 리소스들을 포함하는 웹 액세스 응답(234)을 수신할 수 있다. 서버 프록시(212)는 웹 액세스 응답(234)에 기초하여 웹 액세스 응답(236)을 생성하고(예로서, 웹 액세스 응답(234)에 포함된 웹 리소스들을 포함함으로써), 웹 액세스 응답(236)을 로컬 프록시(210)로 송신할 수 있다. 로컬 프록시(210)는 또한, 응답에 포함된 웹 리소스들(예로서, 웹 콘텐트들)을 추출할 수 있는, 앱(208)에 웹 액세스 응답(236)을 제공하고, 웹 리소스들을 출력 인터페이스에 제공할 수 있다. 일부 실시예들에서, 통신 채널들(224 및 226)은 TCP 통신 채널들일 수 있다. 웹 액세스 요청들(230 및 232)은 HTTP 요청들일 수 있는 반면에, 웹 액세스 응답들(234 및 236)은 HTTP 응답들일 수 있다.
서버 프록시(212)는 웹 서버(202)와 클라이언트 디바이스(204) 사이의 매개체로서 작용할 수 있다. 서버 프록시(212)는, 로컬 프록시(210)에게 제어 데이터에 기초하여 제 1 또는 제 2 동작 모드들을 수행하도록 지시하기 위해 제어 데이터를 로컬 프록시(210)로 전송함으로써 웹 서버(202)에 의해 호스팅된 웹 리소스들에 대한 클라이언트 디바이스(204)의 액세스를 제어할 수 있다. 예를 들면, 도 1의 예를 참조하면, 사용자는 웹 액세스 요청(230)을 생성하는 앱(208)을 통해 제로 기반 웹 서비스에 액세스하려고 시도할 수 있다. 제로 기반 웹 서비스에 대한 액세스 요청에 기초하여, 로컬 프록시(210)는 제 2 모드 하에서 동작하고, 웹 액세스 요청(230)을 서버 프록시(212)로 전송할 수 있으며, 상기 서버 프록시는 앱(208)으로부터 제로 기반 웹 서비스와 연관된 다수의 웹 액세스 요청들을 추적할 수 있다. 웹 액세스 요청들의 수가 임계치를 초과하지 않으면, 서버 프록시(212)는 앱(208) 대신에 웹 리소스들을 요청할 수 있다(예로서, 웹 액세스 요청(232)을 송신함으로써). 서버 프록시(212)가 웹 서버(202)로부터 요청된 웹 리소스들을 수신한 후에, 서버 프록시(212)는 요청된 웹 리소스들을 포함하는 웹 액세스 응답(예로서, 웹 액세스 응답(236))을 로컬 프록시(210)로 송신할 수 있다. 반면에, 제로 기반 웹 서비스와 연관된 웹 액세스 요청들의 수가 임계치에 도달했으면, 서버 프록시(212)는 웹 액세스 응답(236)의 일부로서, 제어 데이터를 로컬 프록시(210)로 송신할 수 있고, 상기 로컬 프록시는 그 다음, 제어 데이터(및 웹 액세스 응답(236))를 앱(208)에 전달할 수 있다. 제어 데이터는 사용자가 앱(208)을 통해 요청된 웹 리소스들에 액세스하는 것을 방지하기 위해 앱(208)의 인터페이스들을 업데이트(예로서, 웹 페이지의 렌더링, 메시지 디스플레이, 등)할 수 있다.
게다가, 사용자가 요금 기반 웹 서비스에 가입한 경우, 서버 프록시(212)는 또한, 로컬 프록시(210)에게 제 1 모드(즉, 웹 서버(202)와 직접적으로 통신함) 하에서 동작하도록 지시하기 위해 제어 데이터를 전송함으로써 클라이언트 디바이스(204)에게 웹 서버(202)에 호스팅된 웹 리소스들에 대한 상이한 정도의 액세스(예로서, 무제한 액세스)를 승인할 수 있다. 서버 프록시(212)는 사용자가 요금 기반 웹 서비스에 가입했다고 결정하기 위해 (예로서, 가입 링크(120)의 선택에 의해 야기된 웹 액세스 요청들을 검출함으로써) 가입 활동들을 검출할 수 있다. 이 결정에 기초하여, 서버 프록시(212)는 로컬 프록시(210)로 하여금 웹 서버(202)와의 통신 채널(220)을 확립하게 하기 위해 제어 데이터를 상기 로컬 프록시로 송신할 수 있다. 로컬 프록시(210)는 그 다음, 사용자 동작 앱(208)에게 웹 서버(202)에서 호스팅된 웹 리소스들에 대한 무제한 액세스를 승인하기 위해 서버 프록시(212)를 거치지 않고 후속 웹 액세스 요청들을 웹 서버(202)로 송신할 수 있다.
III. 제어 데이터
도 3은 본 발명의 특정 양태들에 따른, 제어 데이터를 포함하는 HTTP 응답(300)의 일례의 단순화된 블록도이다. HTTP 응답(300)은 예를 들면, 도 2의 서버 프록시(212)에 의해 생성될 수 있다. 서버 프록시(212)는 예를 들면, 앱(208) 및/또는 로컬 프록시(210)의 일부 양태들을 제어하기 위해 HTTP 응답(300)을 클라이언트 디바이스(204)로 송신할 수 있다. HTTP가 예시적인 목적들을 위해 본 명세서에서 설명될지라도, 다른 프로토콜들 및 통신 기술이 대안적인 실시예들에서 이용될 수 있다. 도 3으로 되돌아가면, HTTP 응답(300)은 예를 들면, 도 2의 웹 액세스 응답(236)일 수 있다. 도 3에 도시된 바와 같이, HTTP 응답(300)은 시작 라인들(310), 헤더들(320), 및 바디(body)(330)를 포함한다. 시작 라인들(310)은 예를 들면, HTTP 버전 정보(312), 상태 코드(314), 및 이유 문구(reason phrase)(316)를 포함할 수 있다. HTTP 버전 정보(312)는 메시지가 연관되는 HTTP 프로토콜의 버전을 제공한다. 도 3의 예에서, HTTP 응답(300)은 HTTP 버전 1.0과 연관된다. 상태 코드(314) 및 이유 문구(316)는 HTTP 응답(300)으로 이어지는 이전 HTTP 요청을 프로세싱하는 상태를 제공할 수 있다. 도 3의 예에서, 상태 코드(314)와 이유 문구(316)의 조합은 프로세싱이 성공적이었음을 나타낼 수 있다. 바디(330)는 상기 이전 HTTP 요청에 의해 요청된 웹 리소스들을 포함하고 예를 들면, 문서들, 이미지 데이터, 미디어 데이터, 등을 포함할 수 있다.
헤더들(320)은 헤더들(322 및 324)을 포함하는 하나 이상의 헤더들을 포함할 수 있다. 헤더들(322 및 324)의 각각은 이름 문자열 및 값을 포함할 수 있다. 도 3의 예에서, 헤더(322)는 이름 문자열("App-ID") 및 값("MY_APP")을 포함하는 반면에, 헤더(324)는 이름 문자열("App-Action") 및 값("Code_0")을 포함한다. 본 발명의 특정 양태들에 따르면, 제어 데이터는 이름 문자열들과 값들의 조합으로서 헤더들(320)에 삽입될 수 있다. 이름 문자열들과 값들의 조합은 제어 데이터의 미리 결정된 의미 및 구조에 기초하여 결정될 수 있다. 도 3의 예에서, 헤더들(322 및 324) 둘 모두는 제어 데이터의 일부일 수 있다. 예를 들면, 헤더(322)의 "App-ID" 이름 문자열은 헤더(322)가 제어 데이터에 의해 구성될 앱의 식별자("MY_APP")를 운반함을 나타낼 수 있다. 또한, 헤더(324)의 "App-Action" 이름 문자열은 헤더(324)가 업데이트될 앱의 요소, 및 어떤 업데이트(들)가 행해지는지를 나타내는 코드를 운반함을 나타낼 수 있다.
헤더들(320)을 포함하는 HTTP 응답(300)을 수신할 때, 앱(208)은 제어 데이터의 동일한 미리 결정된 의미 및 구조에 기초하여 헤더들(322 및 324)을 프로세싱할 수 있다. 예를 들면, 앱(208)은 HTTP 응답(300)이 앱에 대한, 또는 다른 앱들에 대한 제어 데이터를 포함하는지의 여부를 결정하기 위해 헤더(322)의 "App-ID" 이름 문자열을 식별하고 값("MY_APP")을 추출하며, 추출된 값을 앱(208)의 식별자에 대해 비교할 수 있다. 게다가, 앱(208)은 또한, 헤더(324)의 "App-Action" 이름 문자열을 식별하고, 값("Code_0")에 기초하여 구성 업데이트를 결정할 수 있다.
도 4는 본 발명의 특정 양태들에 따른, 구성들을 상이한 제어 데이터 값들에 매핑하는 일 예시적인 매핑 테이블(400)의 단순화된 블록도이다. 매핑 테이블(400)은 서버 프록시(212) 및 앱(208) 둘 모두에 저장되거나, 그렇지 않으면 그들에 의해 액세스가능할 수 있다. 도 4의 예에서, 값들("Code_0," "Code_1," 및 "Code_2")의 세트의 각각은 앱 요소 및 구성 설정과 연관된다. 구성 설정은 예를 들면, 앱에 웹 페이지를 디스플레이하기 위한 구성, 앱으로 검색을 수행하기 위한 구성, 또는 앱의 사용자 인터페이스 구성을 포함할 수 있다. 예를 들면, "Code_0" 및 "Code_1" 둘 모두는 앱(208)의 검색 요소(예로서, 도 1의 검색 요소(114))의 동작과 연관되는 반면에, "Code_2"는 앱(208)의 출력 인터페이스(예로서, 도 1의 출력 인터페이스(108))의 동작과 연관된다. 게다가, "Code_0," "Code_1," 및 "Code_2"의 각각은 상이한 구성 설정들을 표현할 수 있다. 예를 들면, "Code_0"의 수신 시에, 앱(208)은 검색 질의를 수신하기 위한 검색 입력 텍스트 박스를 디스플레이할 수 있다. 또한, "Code_1"의 수신 시에, 앱(208)은 검색 질의를 "DOODLE" 검색 엔진으로 지향시킬 수 있다. 게다가, "Code_2"의 수신 시에, 앱(208)은 (예로서, 사용자가 인터페이스에서 렌더링된 웹 콘텐트를 판독하는 것을 방지하기 위해) 출력 인터페이스(108)에 불투명한 층을 디스플레이할 수 있다.
서버 프록시(212)는 또한, 상기 언급된 트리거링 이벤트에 기초하여, 헤더(324)에 기록될 값들을 결정하기 위해 매핑 테이블(400)을 참조할 수 있다. 예를 들면, 서버 프록시(212)가 앱(208)으로 하여금 검색 입력 텍스트 박스를 디스플레이하게 하는 명령을 수신하면, 서버 프록시(212)는 앱(208)으로 송신될 HTTP 응답 헤더들에 "Code_0"을 포함할 수 있다. 게다가, 서버 프록시(212)가 앱(208)으로 하여금 검색 질의들을 "DOODLE" 검색 엔진으로 지향시키게 하기 위한 명령을 수신하면, 서버 프록시(212)는 HTTP 응답 헤더들에 "Code_1"을 포함할 수 있다. 게다가, 서버 프록시(212)가 HTTP 응답에 포함된 웹 리소스들에 대한 앱(208) 액세스를 거부하기로 결정하면, 서버 프록시(212)는 HTTP 응답 헤더들에 "Code_2"를 포함할 수 있다.
IV. 제어 데이터의 제공을 위한 시스템 및 방법
도 5는 본 발명의 특정 양태들에 따른, 제어 데이터의 송신을 위한 서버 프록시(500)의 일례의 단순화된 블록도이다. 서버 프록시(500)는 도 2의 서버 프록시(212)일 수 있다. 서버 프록시(500)는 하나 이상의 프로세서들(502), 네트워크 인터페이스 카드(NIC)(504), 및 서버 측 인터페이스 모듈(530), 클라이언트 측 인터페이스 모듈(540), 액세스 요청 모듈(550), 액세스 응답 모듈(560), 및 제어 데이터 생성 모듈(570)을 저장하는 컴퓨터 판독가능한 매체(520)를 포함할 수 있다. 서버 프록시(500)는 제어 데이터 매핑 저장장치(580)를 더 포함할 수 있다.
프로세서(들)(502)는 임의의 적합한 프로세싱 디바이스 또는 이러한 프로세스들의 임의의 조합을 포함할 수 있다. 일 예시적인 프로세서는 원하는 기능을 달성하기 위해 함께 작동하는 하나 이상의 마이크로프로세서들을 포함할 수 있다. 프로세서는 사용자 및/또는 시스템 생성 요청들을 실행하기 위한 프로그램 구성요소들을 실행하기 위해 적합한 적어도 하나의 고속 데이터 프로세서를 포함하는 중앙 처리 유닛(CPU)를 포함할 수 있다.
NIC(504)는 근거리 통신망들(LANs), 광역 통신망들(WANs)(즉, 인터넷), 및 다양한 무선 원격통신 네트워크들을 포함하는 하나 이상의 통신 네트워크들을 통해 서버 프록시(500)로부터 다른 디바이스들(예로서, 클라이언트 디바이스들, 서버들, 등)에 통신 인터페이스를 제공할 수 있다. NIC(504)는 이더넷 카드들, 비동기 전송 모드 NIC들, 토큰링 NIC들, 무선 네트워크 인터페이스 제어기들(WNICs), 무선 네트워크 어댑터들, 등을 포함할 수 있다. NIC(504)는 소셜 네트워킹 시스템으로의 입력 콘텐트의 송신 및 수신을 가능하게 할 수 있다.
컴퓨터 판독가능한 매체(520)는 전자 데이터를 저장할 수 있는 임의의 적합한 디바이스 또는 디바이스들일 수 있다. 컴퓨터 판독가능한 매체는 랜덤 액세스 메모리(RAM) 또는 판독 전용 메모리(ROM) 디바이스를 포함할 수 있는 작동 메모리를 포함하는 하나 이상의 메모리 디바이스들에 의해 구현될 수 있다. 메모리 디바이스들의 예들은 메모리 칩들, 디스크 드라이브들, 등을 포함할 수 있다. 이러한 메모리 디바이스들은 임의의 적합한 전기적, 광학적, 및/또는 자기 동작 모드를 이용하여 동작할 수 있다. 컴퓨터 판독가능한 매체(520)는 하나 이상의 프로세서들(502)에 의해 실행가능한 복수의 명령들을 저장하는 비일시적 컴퓨터 판독가능한 저장 매체를 포함할 수 있다. 하나 이상의 프로세서들(502)에 의해 실행될 때 복수의 명령들은 하나 이상의 프로세서들(502)로 하여금 본 명세서에서 설명된 방법들 중 임의의 방법을 수행하게 할 수 있다. 복수의 명령들은 서버 측 인터페이스 모듈(530), 클라이언트 측 인터페이스 모듈(540), 액세스 요청 모듈(550), 액세스 응답 모듈(560), 및 제어 데이터 생성 모듈(570)에 대응하는 명령들을 포함할 수 있고, 구동 시간 동안 컴퓨터 판독가능한 매체(520)에 로드된다.
서버 측 인터페이스 모듈(530)은 또 다른 서버(예로서, 웹 서버(202), 가입 서버, 등)와 서버 프록시(500)의 다른 구성요소들 사이에 인터페이스를 제공할 수 있다. 서버 측 인터페이스 모듈(530)은 또 다른 서버로 송신될 웹 액세스 요청(예로서, 도 2의 웹 액세스 요청(232))을 생성하기 위한, 그리고 또 다른 서버로부터 수신된 웹 액세스 응답(예로서, 도 2의 웹 액세스 응답(234))을 프로세싱하기 위한 로직들을 포함할 수 있다. 하기에 많은 상세들로 논의될 바와 같이, 서버 측 인터페이스 모듈(530)은 웹 액세스 요청을 생성하기 위해 액세스 요청 모듈(550)로부터 명령들을 수신할 수 있다. 서버 측 인터페이스 모듈(530)은 또한, 또 다른 서버로부터 웹 액세스 응답을 수신하고, 프로세싱을 위해 수신된 웹 액세스 응답을 액세스 응답 모듈(560)에 전달할 수 있다. 서버 프록시(500) 및 서버가 통신 네트워크(예로서, 이더넷)를 통해 연결되는 경우에, 서버 측 인터페이스 모듈(530)은 웹 액세스 요청들을 서버로 송신하고, NIC(504)를 통해 서버(웹)로부터 웹 액세스 응답들을 수신할 수 있다.
클라이언트 측 인터페이스 모듈(540)은 클라이언트 디바이스(예로서, 도 1의 컴퓨팅 디바이스(100), 도 2의 클라이언트 디바이스(204), 등)와 서버 프록시(500)의 다른 구성요소들 사이에 인터페이스를 제공할 수 있다. 서버 측 인터페이스 모듈(540)은 클라이언트 디바이스로부터 수신된 웹 액세스 요청(예로서, 도 2의 웹 액세스 요청(230))을 프로세싱하기 위한, 그리고 클라이언트 디바이스로 송신될 웹 액세스 응답(예로서, 도 2의 웹 액세스 응답(236))을 생성하기 위한 로직들을 포함할 수 있다. 하기에 더 많은 상세들로 논의되는 바와 같이, 클라이언트 측 인터페이스 모듈(540)은 웹 액세스 응답을 생성하기 위해 액세스 응답 모듈(560) 및 제어 데이터 생성 모듈(570)로부터 명령들을 수신할 수 있다. 클라이언트 측 인터페이스 모듈(540)은 또한, 클라이언트 디바이스로부터 웹 액세스 요청을 수신하고, 프로세싱을 위해 수신된 웹 액세스 요청을 액세스 요청 모듈(550)로 전달할 수 있다. 클라이언트 측 인터페이스 모듈(540)은 또한, 웹 액세스 응답들을 클라이언트 디바이스로 송신하고, NIC(504)를 통해 클라이언트 디바이스로부터 웹 액세스 요청들을 수신할 수 있다.
액세스 요청 모듈(550)은 (클라이언트 측 인터페이스 모듈(540)을 통해) 클라이언트 디바이스로부터 수신된 웹 액세스 요청을 프로세싱하고, 웹 액세스 요청을 또 다른 서버로 송신하기 위한 명령들을 서버 측 인터페이스 모듈(530)에 제공할 수 있다. 액세스 요청 모듈(550)은 예를 들면, 요청된 웹 리소스들을 식별하는 정보(예로서, 범용 리소스 식별자(URI) 또는 HTTP 요청에 포함된 부분 URI)를 추출함으로써 웹 액세스 요청을 프로세싱할 수 있다. 액세스 요청 모듈(550)은 상기 논의된 바와 같이, 가변 액세스 정책을 구현하기 위해 특정 웹 리소스로 지향된 다수의 웹 액세스 요청들을 축적할 수 있다. 클라이언트 디바이스가 액세스 정책에 기초하여 요청된 웹 리소스들에 대한 액세스를 승인받으면, 액세스 요청 모듈(550)은 또한, 수신된 웹 액세스 요청에 기초하여 제 2 웹 액세스 요청을 생성할 수 있다(예로서, 수신된 웹 액세스 요청으로부터 추출된 URI 또는 부분 URI를 포함함으로써). 액세스 요청 모듈(550)은 그 다음, 클라이언트 디바이스 대신 웹 리소스들을 요청하기 위해, 서버 측 인터페이스 모듈(530)에게 제 2 웹 액세스 요청을 타겟 서버로 송신하도록 명령할 수 있다.
액세스 응답 모듈(560)은 또 다른 서버로부터 수신된 웹 액세스 응답을 프로세싱하고(서버 측 인터페이스 모듈(530)을 통해), 웹 액세스 응답을 클라이언트 디바이스로 송신하기 위한 명령들을 클라이언트 측 인터페이스 모듈(540)에 제공할 수 있다. 액세스 응답 모듈(560)은 예를 들면, 응답(예로서, HTTP 응답의 바디) 및 다른 구성 정보(예로서, HTTP 응답의 시작 라인들)에 포함된 웹 리소스들을 추출함으로써 웹 액세스 응답을 프로세싱할 수 있다. 액세스 응답 모듈(560)은 또한, 제어 데이터 생성 모듈로부터 제어 데이터를 수신하고, 추출된 웹 리소스들 및 제어 데이터를 포함하는 액세스 응답을 생성할 수 있다. 예를 들면, 액세스 응답 모듈(560)은 추출된 구성 정보를 통합하는 시작 라인들, 제어 데이터를 통합하는 헤더들, 및 추출된 웹 리소스들을 통합하는 바디를 갖는 HTTP 응답으로서 제 2 웹 액세스 응답을 생성할 수 있다. 액세스 응답 모듈(560)은 그 다음, 클라이언트 측 인터페이스 모듈(540)에게 상기 설명된 바와 같이, 클라이언트 디바이스의 하나 이상의 기능들을 제어/구성하기 위해 제 2 웹 액세스 응답을 클라이언트 디바이스로 송신하도록 명령할 수 있다.
제어 데이터 생성 모듈(570)은 클라이언트 디바이스로 송신될 웹 액세스 응답에 포함될 제어 데이터를 결정할 수 있다. 제어 데이터 생성 모듈(570)은 제어 데이터를 생성하기 위해 하나 이상의 트리거링 이벤트를 검출하기 위한 트리거 모듈(도 5에 도시되지 않음)을 포함할 수 있다. 트리거링 이벤트는 예를 들면, 소프트웨어 업데이트를 푸시하기 위한 또 다른 서버로부터의 명령, 임계치에 도달하는 다수의 웹 액세스 요청(예로서, 제로-레이티드 웹 서비스들에 대한), 등을 포함할 수 있다. 제어 데이터 생성 모듈(570)은 또한, 트리거링 이벤트에 기초하여 클라이언트 디바이스에서 영향을 받을 구성을 결정할 수 있다. 예를 들면, 상기 설명된 바와 같이, 요청된 웹 리소스들에 대한 액세스를 차단하기 위해, 제어 데이터 생성 모듈(570)은 클라이언트 디바이스의 웹 브라우징 앱의 출력 인터페이스의 동작을 구성할 수 있다. 또한, 무제한 액세스를 승인하기 위해, 제어 데이터 생성 모듈(570)은 로컬 프록시가 서버 프록시 대신 웹 서버에 후속 웹 액세스 요청들을 지향시키도록 클라이언트 디바이스의 로컬 프록시의 동작을 구성할 수 있다. 제어 데이터 생성 모듈(570)은 또한, 결정된 구성에 기초하여, 클라이언트 디바이스로 송신될 웹 액세스 응답에 포함될 제어 데이터를 결정하고, 제어 데이터를 액세스 응답 모듈(560)에 제공하기 위해 제어 데이터 매핑 테이블(예로서, 도 4의 매핑 테이블(400))을 참조할 수 있다.
일부 실시예들에서, 제어 데이터 생성 모듈(570)은 또한, 제어 데이터를 암호화하고, 암호화된 제어 데이터를 액세스 응답 모듈(560)에 제공할 수 있다. 예를 들면, 제어 데이터 생성 모듈(570)은 매핑 테이블(400)로부터 제어 데이터 값(예로서, "Code_0")을 얻고, 제어 데이터 값에 기초하여 해시 값을 생성할 수 있다. 제어 데이터 생성 모듈(570)은 또한, 키(예로서, HMAC 키)를 생성하고 그 다음, 서명을 생성하기 위해 키를 이용하여 제어 데이터를 암호화할 수 있다. 식별자는 클라이언트 디바이스와, 또는 클라이언트 디바이스와 서버 프록시 사이의 TCP 통신 채널(예로서, 세션 ID)과 연관될 수 있다. 제어 데이터 생성 모듈(570)은 웹 액세스 요청에서 암호화된 제어 데이터와 함께 해시 값을 포함할 수 있다. 웹 액세스 요청 및 웹 액세스 요청에 포함된 암호화된 제어 데이터의 수신 시에, 클라이언트 디바이스는 HMAC 키로 제어 데이터를 복호화하고, 복호화된 제어 데이터에 기초하여 해시 값을 계산하며, 그것을 웹 액세스 요청에 포함된 해시 값에 대해 비교할 수 있다. 2개의 해시 값들이 일치하면, 클라이언트 디바이스는 제어 데이터가 신뢰된 소스로부터 비롯되었다고 결정하고, 제어 데이터 값에 따라 구성들을 앱 및/또는 로컬 프록시에 적용할 수 있다.
제어 데이터 매핑 저장장치(580)는 제어 데이터를 상이한 구성들에 매핑하는 하나 이상의 매핑 테이블들(예로서, 도 4의 매핑 테이블(400))을 포함할 수 있다. 제어 데이터 생성 모듈(570)은 상기 설명된 바와 같이, 제어 데이터 생성을 위한 매핑 테이블을 얻기 위해 제어 데이터 매핑 저장장치(580)에 액세스할 수 있다.
도 6은 본 발명의 특정 양태들에 따른, 제어 데이터를 클라이언트 디바이스에 제공하기 위한 일 예시적인 방법(600)을 도시하는 간략화된 흐름도이다. 방법은 예를 들면, 도 2의 서버 프록시(212) 및 도 5의 서버 프록시(500)에 의해 수행될 수 있다.
602에서, 시스템은 클라이언트 디바이스(예로서, 도 1의 컴퓨팅 디바이스(100), 도 2의 클라이언트 디바이스(204), 등)로부터 웹 리소스에 대한 제 1 요청을 수신할 수 있다. 제 1 요청은 웹 리소스의 URI 또는 부분 URI를 포함하는 HTTP 요청일 수 있는 반면에, 웹 리소스는 예를 들면, 웹 서버(예로서, 도 2의 웹 서버(202))에 호스팅된 웹 콘텐트일 수 있다.
604에서, 시스템은 제 1 요청에 기초하여 제 2 요청을 생성할 수 있다. 제 2 요청은 제 1 요청에 포함된 URI(또는 부분 URI)를 포함하는 HTTP 요청일 수 있다. 시스템은 클라이언트 디바이스가 요청된 웹 리소스에 대한 액세스를 승인받았다는 결정에 기초하여 제 2 요청을 생성할 수 있다. 시스템은 그 다음, 606에서 제 2 요청을 웹 서버로 송신한다.
608에서, 시스템은 클라이언트 디바이스의 하나 이상의 기능들과 연관된 제어 데이터를 생성할 수 있다. 하나 이상의 기능들은 예를 들면, 출력 인터페이스의 동작, 후속 웹 액세스 요청(예로서, 후속 웹 액세스 요청을 서버 프록시로 또는 웹 서버로 송신할지의 여부)을 송신하기 위한 목적지, 등을 포함할 수 있다. 제어 데이터는 예를 들면, 또 다른 서버로부터의 소프트웨어 패치의 수신, 가입 처리의 완료, 등과 같은 외부 이벤트의 검출에 기초하여 생성될 수 있다. 외부 이벤트에 기초하여, 시스템은 클라이언트 디바이스의 다양한 구성요소들(예로서, 앱(208), 로컬 프록시(210), 등)에 적용될 구성들의 세트를 결정할 수 있다. 시스템은 제어 데이터 매핑 테이블(예로서, 도 4의 매핑 테이블(400))을 참조하고 구성들의 세트에 기초하여 제어 데이터를 결정할 수 있다.
610에서, 시스템은 웹 서버로부터 요청된 웹 리소스를 포함하는 제 1 응답을 수신할 수 있다. 제 1 응답은 HTTP 응답일 수 있다.
612에서, 시스템은 제어 데이터 및 웹 리소스를 포함하는 제 2 응답을 생성할 수 있다. 제 2 응답은 제어 데이터로부터 생성된 하나 이상의 헤더들을 갖는 HTTP 응답일 수 있다. 제어 데이터는 또한 암호화될 수 있다.
614에서, 시스템은 클라이언트 디바이스의 하나 이상의 기능들을 제어하기 위해, 제 2 응답을 클라이언트 디바이스로 송신할 수 있다. 예를 들면, 제 2 응답에 포함된 제어 데이터에 기초하여, 클라이언트 디바이스는 웹 콘텐트에 대한 사용자 액세스를 거부하기 위해 불투명한 층을 디스플레이하고, 후속 웹 액세스 요청을 서버 프록시 대신 웹 서버로 송신하고, 등을 할 수 있다.
V. 예시적인 컴퓨팅 시스템
도 7은 컴퓨팅 시스템의 블록도의 일례를 도시한다. 도 7에 도시된 컴퓨팅 시스템은 제공된 설명들의 대체 시에 또는 그들을 보충하기 위해 본 명세서에서 설명된 임의의 컴퓨팅 디바이스(예로서, 도 1의 컴퓨팅 디바이스(100), 도 2의 클라이언트 디바이스(204) 및 서버 프록시(212) 및 도 5의 서버 프록시(500), 등)를 구현하기 위해 이용될 수 있다. 이 예에서, 컴퓨팅 시스템(700)은 프로세서(710), 버스(720), 저장장치(730), 메모리(740), 랜덤 액세스 메모리(RAM)(742), 판독 전용 메모리(ROM)(744), 파일 시스템들(750), 사용자 입력 디바이스(760), 출력 디바이스(770), 네트워크 인터페이스(780), 및 통신 네트워크(790)를 포함한다. 본 예에서, 사용자 입력 디바이스(760)는 전형적으로, 컴퓨터 마우스, 트랙볼, 트랙 패드, 조이스틱, 무선 원격장치, 드로잉 태블릿, 음성 명령 시스템, 눈 추적 시스템, 등으로서 구현된다. 사용자 입력 디바이스(760)는 전형적으로, 사용자가 버튼의 클릭 등과 같은 명령을 통해 출력 디바이스들(770)에 나타나는 객체들, 아이콘들, 텍스트 등을 선택하는 것을 허용한다. 출력 디바이스들(770)은 컴퓨팅 디바이스, 가상 현실 환경, 투영 시스템, 스피커, 등과 연관된 스크린을 포함할 수 있다.
네트워크 인터페이스들(780)의 예들은 전형적으로, 이더넷 카드, 모뎀(전화, 위성, 케이블, ISDN(Integrated Services Digital Network)), 비동기식 디지털 가입자 라인(DSL) 유닛, 파이어와이어® 인터페이스, 범용 직렬 버스(USB) 인터페이스, 등을 포함한다. 예를 들면, 네트워크 인터페이스(780)는 통신 네트워크(790)에, 파이어와이어® 버스에, 등에 결합될 수 있다. 다른 실시예들에서, 네트워크 인터페이스들(780)은 프로세서(710)에 물리적으로 통합될 수 있고, 소프트 디지털 가입자 라인(DSL), 등과 같은 소프트웨어 프로그램일 수 있다. 네트워크 인터페이스들(780)은 도 5의 NIC(504)에 대응할 수 있다.
다양한 예들에서, 컴퓨팅 시스템(700)은 전형적으로, 프로세서(710)와 같은 친숙한 컴퓨터 구성요소들 및 RAM(742), ROM(744)과 같은 메모리(740) 디바이스들, 파일 시스템들(750), 및 상기 구성요소들을 상호연결하는 시스템 버스(720)를 포함한다. 프로세서(710)는 도 5의 프로세서(502)에 대응할 수 있다. 메모리(740)는 예를 들면, 도 5의 서버 측 모듈(530), 클라이언트 측 인터페이스 모듈(540), 액세스 요청 모듈(550), 액세스 응답 모듈(560), 및 제어 데이터 생성 모듈(570)을 저장할 수 있다. 모듈들은 본 명세서에서 설명된 방법들 중 임의의 방법을 수행하기 위해 프로세서(710)에 의해 실행될 수 있다.
RAM(742) 및 ROM(744)은 실행가능한 컴퓨터 코드, 인간 판독가능한 코드, 등을 포함하는, 본 발명의 실시예들과 같은 데이터를 저장하도록 구성된 유형의 비일시적 매체들의 예들이다. 다른 유형들의 유형의 매체들은 플로피 디스크들, 착탈가능한 하드 디스크들, CD-ROMS, DVD들 및 바코드들과 같은 광학 저장 매체들, 플래시 메모리들과 같은 반도체 메모리들, 배터리 백업형 휘발성 메모리들, 네트워크화된 저장 디바이스들, 등을 포함한다.
다양한 예들에서, 컴퓨팅 시스템(700)은 또한, 하이퍼텍스트 전송 프로토콜(HTTP), 전송 제어 프로토콜/인터넷 프로토콜(TCP/IP), 실시간 스트리밍 프로토콜(RTP/RTSP), 등과 같은 네트워크를 통한 통신들을 가능하게 하는 소프트웨어를 포함할 수 있다. 본 발명의 대안적인 실시예들에서, 다른 통신 소프트웨어 및 전송 프로토콜들은, 예를 들면, 네트워크 간 패킷 교환(Internetwork Packet Exchange; IPX), 사용자 데이터그램 프로토콜(User Datagram Protocol; UDP), 등이 또한 이용될 수 있다.
실시예들은 방법, 시스템 및 저장 매체에 관한 첨부된 청구항들에 특히 개시되고, 하나의 청구항 카테고리 예로서, 방법에서 언급된 임의의 특징은 또 다른 청구항 카테고리 예로서, 시스템 또는 컴퓨터 프로그램 제품에서 또한 청구될 수 있다. 다시, 첨부된 청구항들에서의 종속성들 또는 참조들은 단지 공식적인 이유들을 위해 선택된다. 그러나, 임의의 이전의 청구항들(특히, 다수의 종속성들)에 대해 다시 의도적인 참조로부터 발생하는 임의의 주제가 또한, 청구될 수 있어서, 청구항들 및 그들의 특징들의 임의의 조합이 개시되고 첨부된 도면들에서 선택된 종속성들에 관계없이 청구될 수 있게 한다. 청구될 수 있는 주제는 첨부된 청구항들에 제시된 바와 같은 특징들의 조합들 뿐만 아니라, 청구항들에서의 특징들의 임의의 다른 조합을 포함하고, 청구항들에서 언급된 각각의 특징은 청구항들에서의 임의의 다른 특징 또는 다른 특징들의 조합과 조합될 수 있다. 또한, 본 명세서에서 설명되거나 묘사된 실시예들 및 특징들 중 임의의 실시예 및 특징은 별개의 청구항에서 및/또는 본 명세서에서 설명되거나 묘사된 임의의 실시예 또는 특징과 또는 첨부된 청구항들의 특징들 중 임의의 특징과의 임의의 조합으로 청구될 수 있다.
특정 실시예들이 설명되었을지라도, 다양한 수정들, 변경들, 대안적인 구성들, 및 등가물들이 가능하다. 실시예들은 특정의 특정 데이터 프로세싱 환경들 내에서의 동작으로 제한되지 않지만, 복수의 데이터 프로세싱 환경들 내에서 자유롭게 동작한다. 부가적으로, 특정 실시예들이 특정한 일련의 처리들 및 단계들을 이용하여 설명되었을지라도, 이것은 제한하는 것으로 의도되지 않음이 당업자들에게 명백해야 한다. 일부 흐름도들이 동작들을 순차적인 프로세스로서 설명할지라도, 많은 동작들은 병렬로 또는 동시에 수행될 수 있다. 게다가, 동작들의 순서는 재배열될 수 있다. 프로세스는 도면에 포함되지 않은 부가적인 단계들을 가질 수 있다. 상기 설명된 실시예들의 다양한 특징들 및 양태들은 개별적으로 또는 공동으로 이용될 수 있다.
또한, 개별적인 예들은 흐름도(flowchart, flow diagram), 데이터 흐름도, 구조도, 또는 블록도로서 묘사되는 프로세스로서 설명될 수 있음에 유의한다. 흐름도가 동작들을 순차적 프로세스로서 설명할 수 있을지라도, 많은 동작들이 병렬로 또는 동시에 수행될 수 있다. 게다가, 동작들의 순서가 재배열될 수 있다. 프로세스의 동작들이 완료될 때 프로세스가 종료되지만, 도면에 포함되지 않은 부가적인 단계들을 가질 수 있다. 프로세스는 방법, 기능, 절차, 서브루틴, 서브프로그램, 등에 대응할 수 있다. 프로세스가 기능에 대응할 때, 그것의 종료는 기능을 호출 기능 또는 주 기능으로 리턴하는 것에 대응할 수 있다.
용어 "기계 판독가능한 저장 매체" 또는 "컴퓨터 판독가능한 저장 매체"는 휴대가능하거나 휴대가능하지 않은 저장 디바이스들, 광학 저장 디바이스들, 및 명령(들) 및/또는 데이터를 저장하거나, 포함하거나, 운반할 수 있는 다양한 다른 매체들을 포함하지만, 그들로 제한되지 않는다. 기계 판독가능한 저장 매체 또는 컴퓨터 판독가능한 저장 매체는 데이터가 저장될 수 있고 무선으로 또는 유선 연결들을 통해 전파하는 반송파들 및/또는 일시적 전자 신호들을 포함하지 않는 비일시적 매체를 포함할 수 있다. 비일시적 매체의 예들은 자기 디스크 또는 테이프, 콤팩트 디스크(CD) 또는 디지털 다기능 디스크(DVD)와 같은 광학 저장 매체들, 플래시 메모리, 메모리 또는 메모리 디바이스들을 포함할 수 있지만, 그들로 제한되지 않는다. 컴퓨터 프로그램 제품은 절차, 기능, 서브프로그램, 프로그램, 루틴, 서브루틴, 모듈, 소프트웨어 패키지, 클래스, 또는 명령들, 데이터 구조들, 또는 프로그램문들의 임의의 조합을 표현할 수 있는 코드 및/또는 기계 실행가능한 명령들을 포함할 수 있다.
또한, 예들은 하드웨어, 소프트웨어, 펌웨어, 미들웨어, 마이크로코드, 하드웨어 기술 언어들, 또는 그들의 임의의 조합에 의해 구현될 수 있다. 소프트웨어, 펌웨어, 미들웨어 또는 마이크로코드로 구현될 때, 필요한 작업들을 수행하기 위한 프로그램 코드 또는 코드 세그먼트들(예로서, 컴퓨터 프로그램 제품)은 컴퓨터 판독가능한 매체에 저장될 수 있다. 하나 이상의 프로세서들은 필요한 작업들을 수행하기 위해 소프트웨어, 펌웨어, 미들웨어, 마이크로코드, 프로그램 코드, 또는 코드 세그먼트들을 실행할 수 있다.
도면들 중 일부에 묘사된 시스템들은 다양한 구성들로 제공될 수 있다. 일부 실시예들에서, 시스템들은 시스템의 하나 이상의 구성요소들이 클라우드 컴퓨팅 시스템에서와 같은 하나 이상의 네트워크들에 걸쳐 분산되는 분산 시스템으로서 구성될 수 있다.
구성요소들이 특정 동작들을 수행하도록 "구성된" 것으로서 설명되는 경우, 이러한 구성은 예를 들면, 동작을 수행하기 위해 전자 회로들 또는 다른 하드웨어를 설계함으로써, 동작을 수행하기 위해 프로그래밍가능한 전자 회로들(예로서, 마이크로프로세서들, 또는 다른 적합한 전자 회로들)을 프로그래밍함으로써, 또는 그들의 임의의 조합에 의해 달성될 수 있다.
게다가, 특정 실시예들이 하드웨어 및 소프트웨어의 특정한 조합을 이용하여 설명될지라도, 하드웨어 및 소프트웨어의 다른 조합들도 또한 가능하다는 것을 인식해야 한다. 특정 실시예들은 단지 하드웨어로, 또는 단지 소프트웨어로, 또는 그들의 조합들을 이용하여 구현될 수 있다. 하나의 예에서, 소프트웨어는 본 발명에서 설명된 단계들, 동작들, 또는 프로세스들 중 임의의 것 또는 전부를 수행하기 위해 하나 이상의 프로세서들에 의해 실행가능한 컴퓨터 프로그램 코드 또는 명령들을 포함하는 컴퓨터 프로그램 제품으로서 구현될 수 있고, 여기서 컴퓨터 프로그램은 비일시적 컴퓨터 판독가능한 매체에 저장될 수 있다. 본 명세서에서 설명된 다양한 프로세스들은 임의의 조합으로 동일한 프로세서 또는 상이한 프로세서들에서 구현될 수 있다.
디바이스들, 시스템들, 구성요소들 또는 모듈들이 특정 동작들 또는 기능들을 수행하도록 구성되는 것으로서 설명되는 경우, 이러한 구성은 예를 들면, 동작을 수행하기 위해 전자 회로들을 설계함으로써, 컴퓨터 명령들 또는 코드를 실행함으로써와 같은 동작을 수행하기 위해 프로그래밍가능한 전자 회로들(마이크로프로세서들과 같은), 또는 비일시적 메모리 매체에 저장된 코드 또는 명령들을 실행하도록 프로그래밍된 프로세서들 또는 코어들을 프로그래밍함으로써, 또는 그들의 임의의 조합에 의해 달성될 수 있다. 프로세스들은 프로세스 간 통신들을 위한 종래의 기술들을 포함하지만 그들로 제한되지 않는 다양한 기술들을 이용하여 통신할 수 있고, 상이한 쌍들의 프로세스들은 상이한 기술들을 이용할 수 있거나, 동일한 쌍의 프로세스들은 상이한 시간들에서 상이한 기술들을 이용할 수 있다.
실시예들의 철저한 이해를 제공하기 위해 특정 상세들이 본 발명에 주어진다. 그러나, 이들 특정 상세들 없이 실시예들이 실행될 수 있다. 예를 들면, 잘 알려진 회로들, 프로세스들, 알고리즘들, 구조들, 및 기술들은 실시예들을 모호하게 하는 것을 회피하기 위해 불필요한 상세 없이 도시되었다. 이 설명은 예시적인 실시예들만을 제공하며, 다른 실시예들의 범위, 적용가능성, 또는 구성을 제한하도록 의도되지 않는다. 오히려, 실시예들의 상기 설명은 당업자들에게 다양한 실시예들을 구현하기 위한 가능한 설명을 제공할 것이다. 요소들의 기능 및 배열에서 다양한 변경들이 행해질 수 있다.
명세서 및 도면들은 그에 따라, 제한적인 의미가 아니라 예시적인 의미로 간주되어야 한다. 그러나, 청구항들에 제시된 바와 같이 더 넓은 사상 및 범위를 벗어나지 않고 부가들, 감산들, 삭제들, 및 다른 수정들 및 변경들이 그에 대해 행해질 수 있음이 명백할 것이다. 따라서, 특정 실시예들이 설명되었을지라도, 이들은 제한적인 것으로 의도되지 않는다. 다양한 수정들 및 등가물들은 다음의 청구항들의 범위 내에 있다.

Claims (34)

  1. 컴퓨터 구현 제어 방법에 있어서:
    클라이언트 디바이스로부터 웹 리소스에 대한 제 1 요청을 수신하는 단계;
    상기 제 1 요청에 기초하여 제 2 요청을 생성하는 단계;
    상기 웹 리소스에 대한 상기 제 2 요청을 웹 서버로 송신하는 단계;
    상기 클라이언트 디바이스의 애플리케이션을 식별하는 제어 데이터를 생성하는 단계;
    상기 웹 서버로부터 상기 웹 리소스를 포함하는 제 1 응답을 수신하는 단계;
    상기 제어 데이터 및 상기 웹 리소스를 포함하는 제 2 응답을 생성하는 단계; 및
    상기 제어 데이터에 기초하여 상기 애플리케이션을 구성하기 위해 상기 제 2 응답을 상기 클라이언트 디바이스로 송신하는 단계를 포함하는, 컴퓨터 구현 제어 방법.
  2. 제 1 항에 있어서,
    상기 방법은 서버 프록시에 의해 수행되고;
    상기 클라이언트 디바이스는 앱 및 로컬 프록시를 포함하고;
    상기 제 1 요청은 상기 앱에 의해 수신된 웹 액세스 요청에 기초하여 상기 로컬 프록시에 의해 생성되는, 컴퓨터 구현 제어 방법.
  3. 제 2 항에 있어서,
    상기 제 1 및 제 2 요청들은 HTTP 요청들이고;
    상기 제 1 및 제 2 응답들은 HTTP 응답들이고;
    상기 제어 데이터는 상기 제 2 응답의 하나 이상의 헤더들에 포함되는, 컴퓨터 구현 제어 방법.
  4. 제 2 항에 있어서,
    상기 하나 이상의 기능들은 상기 앱과 연관되는, 컴퓨터 구현 제어 방법.
  5. 제 4 항에 있어서,
    상기 제어 데이터는 상기 앱에 웹 페이지를 디스플레이하기 위한 구성, 상기 앱으로 검색을 수행하기 위한 구성, 또는 상기 앱의 사용자 인터페이스 구성 중 적어도 하나를 포함하는 정보를 포함하는, 컴퓨터 구현 제어 방법.
  6. 제 2 항에 있어서,
    상기 하나 이상의 기능들은 로컬 프록시와 연관되는, 컴퓨터 구현 제어 방법.
  7. 제 6 항에 있어서,
    상기 제 1 요청은 상기 로컬 프록시와 상기 서버 프록시 사이에 확립된 제 1 TCP 연결을 통해 상기 로컬 프록시로부터 수신되고;
    상기 제어 데이터는 상기 웹 서버와의 제 2 TCP 연결을 확립하기 위해, 그리고 상기 제 2 TCP 연결을 통해 제 3 요청을 상기 웹 서버로 송신하기 위해 상기 로컬 프록시를 제어하는, 컴퓨터 구현 제어 방법.
  8. 제 7 항에 있어서,
    상기 제어 데이터는 활성화가능한 인터페이스 요소를 제공하기 위해 상기 앱을 제어하고;
    상기 제어 데이터는 상기 활성화가능한 인터페이스 요소가 활성화된다는 검출에 기초하여 상기 제 2 TCP 연결을 확립하기 위해 그리고 상기 제 3 요청을 송신하기 위해 상기 로컬 프록시를 제어하는, 컴퓨터 구현 제어 방법.
  9. 제 1 항에 있어서,
    상기 제어 데이터는 상기 제 1 요청에 기초하여 생성되는, 컴퓨터 구현 제어 방법.
  10. 제 1 항에 있어서,
    상기 제어 데이터는 서명으로 암호화되는, 컴퓨터 구현 제어 방법.
  11. 시스템에 있어서,
    하나 이상의 프로세서들; 및
    상기 하나 이상의 프로세서들에 의해 실행될 때, 상기 하나 이상의 프로세서들이 동작들을 수행하게 하는 명령들을 저장하는 비일시적 컴퓨터 판독가능한 매체를 포함하고,
    상기 동작들은:
    클라이언트 디바이스로부터 웹 리소스에 대한 제 1 요청을 수신하는 것;
    상기 제 1 요청에 기초하여 제 2 요청을 생성하는 것;
    상기 웹 리소스에 대한 상기 제 2 요청을 웹 서버로 송신하는 것;
    상기 클라이언트 디바이스의 애플리케이션을 식별하는 제어 데이터를 생성하는 것;
    상기 웹 서버로부터 상기 웹 리소스를 포함하는 제 1 응답을 수신하는 것;
    상기 제어 데이터 및 상기 웹 리소스를 포함하는 제 2 응답을 생성하는 것; 및
    상기 제어 데이터에 기초하여 상기 애플리케이션을 구성하기 위해 상기 제 2 응답을 상기 클라이언트 디바이스로 송신하는 것을 포함하는, 시스템.
  12. 제 11 항에 있어서,
    상기 시스템은 서버 프록시의 일부이고;
    상기 클라이언트 디바이스는 앱 및 로컬 프록시를 포함하고;
    상기 제 1 요청은 상기 앱에 의해 수신된 웹 액세스 요청에 기초하여 상기 로컬 프록시에 의해 생성되는, 시스템.
  13. 제 12 항에 있어서,
    상기 제 1 및 제 2 요청들은 HTTP 요청들이고;
    상기 제 1 및 제 2 응답들은 HTTP 응답들이고;
    상기 제어 데이터는 상기 제 2 응답의 하나 이상의 헤더들에 포함되는, 시스템.
  14. 제 12 항에 있어서,
    상기 하나 이상의 기능들은 상기 앱과 연관되는, 시스템.
  15. 제 14 항에 있어서,
    상기 제어 데이터는 상기 앱에 웹 페이지를 디스플레이하기 위한 구성, 상기 앱으로 검색을 수행하기 위한 구성, 또는 상기 앱의 사용자 인터페이스 구성 중 적어도 하나를 포함하는 정보를 포함하는, 시스템.
  16. 제 12 항에 있어서,
    상기 하나 이상의 기능들은 상기 로컬 프록시와 연관되는, 시스템.
  17. 제 16 항에 있어서,
    상기 제 1 요청은 상기 로컬 프록시와 상기 서버 프록시 사이에 확립된 제 1 TCP 연결을 통해 상기 로컬 프록시로부터 수신되고;
    상기 제어 데이터는 상기 웹 서버와의 제 2 TCP 연결을 확립하기 위해, 그리고 상기 제 2 TCP 연결을 통해 제 3 요청을 상기 웹 서버로 송신하기 위해 상기 로컬 프록시를 제어하는, 시스템.
  18. 제 17 항에 있어서,
    상기 제어 데이터는 활성화가능한 인터페이스 요소를 제공하기 위해 상기 앱을 제어하고;
    상기 제어 데이터는 상기 활성화가능한 인터페이스 요소가 활성화된다는 검출에 기초하여 상기 제 2 TCP 연결을 확립하기 위해 그리고 상기 제 3 요청을 송신하기 위해 상기 로컬 프록시를 제어하는, 시스템.
  19. 삭제
  20. 하나 이상의 프로세서들에 의해 실행가능한 복수의 명령들을 저장하는 비일시적 컴퓨터 판독가능한 저장 매체에 있어서,
    상기 하나 이상의 프로세서들에 의해 실행될 때 상기 복수의 명령들은 상기 하나 이상의 프로세서들이:
    클라이언트 디바이스로부터 웹 리소스에 대한 제 1 요청을 수신하고;
    상기 제 1 요청에 기초하여 제 2 요청을 생성하고;
    상기 웹 리소스에 대한 상기 제 2 요청을 웹 서버로 송신하고;
    상기 클라이언트 디바이스의 애플리케이션을 식별하는 제어 데이터를 생성하고;
    상기 웹 서버로부터 상기 웹 리소스를 포함하는 제 1 응답을 수신하고;
    상기 제어 데이터 및 상기 웹 리소스를 포함하는 제 2 응답을 생성하고;
    상기 제어 데이터에 기초하여 상기 애플리케이션을 구성하기 위해 상기 제 2 응답을 상기 클라이언트 디바이스로 송신하게 하는, 비일시적 컴퓨터 판독가능한 저장 매체.
  21. 컴퓨터 구현 제어 방법에 있어서:
    클라이언트 디바이스로부터 웹 리소스에 대한 제 1 요청을 수신하는 단계;
    상기 제 1 요청에 기초하여 제 2 요청을 생성하는 단계;
    상기 웹 리소스에 대한 상기 제 2 요청을 웹 서버로 송신하는 단계;
    상기 클라이언트 디바이스의 애플리케이션을 식별하는 제어 데이터를 생성하는 단계;
    상기 웹 서버로부터 상기 웹 리소스를 포함하는 제 1 응답을 수신하는 단계;
    상기 제어 데이터 및 상기 웹 리소스를 포함하는 제 2 응답을 생성하는 단계; 및
    상기 제어 데이터에 기초하여 상기 애플리케이션을 구성하기 위해 상기 제 2 응답을 상기 클라이언트 디바이스로 송신하는 단계를 포함하는, 컴퓨터 구현 제어 방법.
  22. 제 21 항에 있어서,
    상기 방법은 서버 프록시에 의해 수행되고;
    상기 클라이언트 디바이스는 앱 및 로컬 프록시를 포함하고;
    상기 제 1 요청은 상기 앱에 의해 수신된 웹 액세스 요청에 기초하여 상기 로컬 프록시에 의해 생성되는, 컴퓨터 구현 제어 방법.
  23. 제 22 항에 있어서,
    상기 제 1 및 제 2 요청들은 HTTP 요청들이고;
    상기 제 1 및 제 2 응답들은 HTTP 응답들이고;
    상기 제어 데이터는 상기 제 2 응답의 하나 이상의 헤더들에 포함되는, 컴퓨터 구현 제어 방법.
  24. 제 22 항 또는 제 23 항에 있어서,
    상기 하나 이상의 기능들은 상기 앱과 연관되고;
    선택적으로, 상기 제어 데이터는 상기 앱에 웹 페이지를 디스플레이하기 위한 구성, 상기 앱으로 검색을 수행하기 위한 구성, 또는 상기 앱의 사용자 인터페이스 구성 중 적어도 하나를 포함하는 정보를 포함하는, 컴퓨터 구현 제어 방법.
  25. 제 22 항 또는 제 23 항에 있어서,
    상기 하나 이상의 기능들은 로컬 프록시와 연관되고;
    선택적으로, 상기 제 1 요청은 상기 로컬 프록시와 상기 서버 프록시 사이에 확립된 제 1 TCP 연결을 통해 상기 로컬 프록시로부터 수신되고;
    상기 제어 데이터는 상기 웹 서버와의 제 2 TCP 연결을 확립하기 위해, 그리고 상기 제 2 TCP 연결을 통해 제 3 요청을 상기 웹 서버로 송신하기 위해 상기 로컬 프록시를 제어하거나; 또는
    선택적으로, 상기 제어 데이터는 활성화가능한 인터페이스 요소를 제공하기 위해 상기 앱을 제어하고;
    상기 제어 데이터는 상기 활성화가능한 인터페이스 요소가 활성화된다는 검출에 기초하여 상기 제 2 TCP 연결을 확립하기 위해 그리고 상기 제 3 요청을 송신하기 위해 상기 로컬 프록시를 제어하는, 컴퓨터 구현 제어 방법.
  26. 제 21 항 내지 제 23 항 중 어느 한 항에 있어서,
    상기 제어 데이터는 상기 제 1 요청에 기초하여 생성되는, 컴퓨터 구현 제어 방법.
  27. 제 21 항 내지 제 23 항 중 어느 한 항에 있어서,
    상기 제어 데이터는 서명으로 암호화되는, 컴퓨터 구현 제어 방법.
  28. 삭제
  29. 삭제
  30. 삭제
  31. 제 12 항 또는 제 13 항에 있어서,
    상기 하나 이상의 기능들은 상기 앱과 연관되고;
    선택적으로, 상기 제어 데이터는 상기 앱에 웹 페이지를 디스플레이하기 위한 구성, 상기 앱으로 검색을 수행하기 위한 구성, 또는 상기 앱의 사용자 인터페이스 구성 중 적어도 하나를 포함하는 정보를 포함하는, 시스템.
  32. 제 12 항 내지 제 13 항 중 어느 한 항에 있어서,
    상기 하나 이상의 기능들은 상기 로컬 프록시와 연관되고;
    선택적으로, 상기 제 1 요청은 상기 로컬 프록시와 상기 서버 프록시 사이에 확립된 제 1 TCP 연결을 통해 상기 로컬 프록시로부터 수신되고;
    상기 제어 데이터는 상기 웹 서버와의 제 2 TCP 연결을 확립하기 위해, 그리고 상기 제 2 TCP 연결을 통해 제 3 요청을 상기 웹 서버로 송신하기 위해 상기 로컬 프록시를 제어하거나; 또는
    선택적으로, 상기 제어 데이터는 활성화가능한 인터페이스 요소를 제공하기 위해 상기 앱을 제어하고;
    상기 제어 데이터는 상기 활성화가능한 인터페이스 요소가 활성화된다는 검출에 기초하여 상기 제 2 TCP 연결을 확립하기 위해 그리고 상기 제 3 요청을 송신하기 위해 상기 로컬 프록시를 제어하는, 시스템.
  33. 제 11 항 내지 제 13 항 중 어느 한 항에 있어서,
    상기 제어 데이터는 상기 제 1 요청에 기초하여 생성되는, 시스템.
  34. 삭제
KR1020207004400A 2017-07-24 2017-07-25 프록시 기반 네트워크 통신들에서의 제어 데이터의 전송 KR102308269B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/658,326 2017-07-24
US15/658,326 US11025724B2 (en) 2017-07-24 2017-07-24 Transport of control data in proxy-based network communications
PCT/US2017/043787 WO2019022723A1 (en) 2017-07-24 2017-07-25 TRANSPORTING CONTROL DATA IN NETWORK COMMUNICATIONS BASED ON A REPRESENTATIVE

Publications (2)

Publication Number Publication Date
KR20200023485A KR20200023485A (ko) 2020-03-04
KR102308269B1 true KR102308269B1 (ko) 2021-10-06

Family

ID=65023333

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207004400A KR102308269B1 (ko) 2017-07-24 2017-07-25 프록시 기반 네트워크 통신들에서의 제어 데이터의 전송

Country Status (5)

Country Link
US (1) US11025724B2 (ko)
JP (1) JP7018498B2 (ko)
KR (1) KR102308269B1 (ko)
CN (1) CN110999260B (ko)
WO (1) WO2019022723A1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8560604B2 (en) 2009-10-08 2013-10-15 Hola Networks Ltd. System and method for providing faster and more efficient data communication
US9241044B2 (en) 2013-08-28 2016-01-19 Hola Networks, Ltd. System and method for improving internet communication by using intermediate nodes
US10789642B2 (en) 2014-05-30 2020-09-29 Apple Inc. Family accounts for an online content storage sharing service
US9875346B2 (en) 2015-02-06 2018-01-23 Apple Inc. Setting and terminating restricted mode operation on electronic devices
US11057446B2 (en) 2015-05-14 2021-07-06 Bright Data Ltd. System and method for streaming content from multiple servers
US11025724B2 (en) * 2017-07-24 2021-06-01 Facebook, Inc. Transport of control data in proxy-based network communications
LT3754520T (lt) 2017-08-28 2022-02-25 Bright Data Ltd Būdas pagerinti turinio parsisiuntimą, pasirenkant tunelinius įrenginius
US10558546B2 (en) * 2018-05-08 2020-02-11 Apple Inc. User interfaces for controlling or presenting device usage on an electronic device
EP3750079A4 (en) 2019-02-25 2022-01-12 Bright Data Ltd SYSTEM AND METHOD FOR URL EXTRACTION CHALLENGE MECHANISM
EP4027618A1 (en) 2019-04-02 2022-07-13 Bright Data Ltd. Managing a non-direct url fetching service
KR102609732B1 (ko) * 2021-11-16 2023-12-05 주식회사 카카오엔터프라이즈 Api 게이트웨이 및 그의 동작 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140365631A1 (en) * 2010-07-26 2014-12-11 Seven Networks, Inc. Mobile application traffic optimization

Family Cites Families (76)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5673322A (en) * 1996-03-22 1997-09-30 Bell Communications Research, Inc. System and method for providing protocol translation and filtering to access the world wide web from wireless or low-bandwidth networks
JP3307894B2 (ja) * 1999-06-22 2002-07-24 三菱電機株式会社 通信方法
US6684257B1 (en) * 1999-10-15 2004-01-27 International Business Machines Corporation Systems, methods and computer program products for validating web content tailored for display within pervasive computing devices
JP2002007288A (ja) * 2000-06-21 2002-01-11 Ntt Communications Kk 否認防止情報管理方法、その装置及びプログラム記録媒体
US6895444B1 (en) * 2000-09-15 2005-05-17 Motorola, Inc. Service framework with local proxy for representing remote services
US7076244B2 (en) * 2001-07-23 2006-07-11 Research In Motion Limited System and method for pushing information to a mobile device
US7383339B1 (en) * 2002-07-31 2008-06-03 Aol Llc, A Delaware Limited Liability Company Local proxy server for establishing device controls
US8468578B1 (en) * 2002-12-30 2013-06-18 Aol Inc. Establishing access controls in a premise-based environment
JP2005182364A (ja) * 2003-12-18 2005-07-07 Canon Software Inc Www中継サーバおよび情報閲覧時間計測方法およびプログラムおよび記録媒体
JP4160092B2 (ja) * 2004-03-09 2008-10-01 ケイティーフリーテル カンパニー リミテッド パケットデータ課金細分化方法及びそのシステム
US7523145B2 (en) * 2004-04-22 2009-04-21 Opentv, Inc. System for managing data in a distributed computing system
US20050271207A1 (en) * 2004-06-05 2005-12-08 Helmut Frey Method and system for chaotic digital signature, encryption, and authentication
US20070061488A1 (en) * 2004-09-20 2007-03-15 Trilibis Inc. System and method for flexible user interfaces
CN100499577C (zh) * 2005-01-20 2009-06-10 中兴通讯股份有限公司 一种快速响应的集中式接纳控制系统及控制方法
US20060200566A1 (en) * 2005-03-07 2006-09-07 Ziebarth Wayne W Software proxy for securing web application business logic
WO2006112664A1 (en) * 2005-04-19 2006-10-26 Lg Electronics Inc. Method and apparatus for making devices on a local network remotely-accessible
US7594003B2 (en) * 2005-08-02 2009-09-22 Aol Llc Client/server web application architectures for offline usage, data structures, and related methods
US8151323B2 (en) * 2006-04-12 2012-04-03 Citrix Systems, Inc. Systems and methods for providing levels of access and action control via an SSL VPN appliance
US9306975B2 (en) * 2006-09-19 2016-04-05 The Invention Science Fund I, Llc Transmitting aggregated information arising from appnet information
EP2080127A2 (en) * 2006-11-01 2009-07-22 Bloxx Limited Methods and systems for web site categorisation training, categorisation and access control
US7756903B2 (en) * 2006-12-12 2010-07-13 Yahoo! Inc. Configuring a search engine results page with environment-specific information
WO2009055458A1 (en) * 2007-10-27 2009-04-30 Research In Motion Limited Content disposition system and method for processing message content in a distributed environment
US8839403B2 (en) * 2007-12-31 2014-09-16 Sandisk Il Ltd. Local proxy system and method
US8543667B2 (en) * 2008-01-14 2013-09-24 Akamai Technologies, Inc. Policy-based content insertion
KR100967337B1 (ko) 2008-08-20 2010-07-05 주식회사 컴퍼니원헌드레드 프록시 서버를 이용한 이동통신 단말기의 웹 브라우저 시스템
US20100057830A1 (en) * 2008-08-26 2010-03-04 Nokia Corporation Controlling Client-Server Communications
US8621065B1 (en) * 2008-10-23 2013-12-31 Amazon Technologies, Inc. Dynamic blocking of suspicious electronic submissions
US20100153568A1 (en) * 2008-12-16 2010-06-17 Nokia Corporation Methods, apparatuses, and computer program products for providing a local proxy for accessing web services
JP5294885B2 (ja) * 2009-01-07 2013-09-18 株式会社日立製作所 サービス中継装置、サービス中継方法、この方法を実行するためのプログラム
JP5458977B2 (ja) * 2010-03-10 2014-04-02 富士通株式会社 中継処理方法、プログラム及び装置
US10263958B2 (en) * 2010-03-18 2019-04-16 Nominum, Inc. Internet mediation
US8484287B2 (en) 2010-08-05 2013-07-09 Citrix Systems, Inc. Systems and methods for cookie proxy jar management across cores in a multi-core system
WO2012040837A1 (en) * 2010-09-01 2012-04-05 Jigsee Inc. Systems and methods for resilient media streaming
JP5811708B2 (ja) * 2010-09-30 2015-11-11 ブラザー工業株式会社 画像処理システム、画像処理方法、中継装置、及び、中継プログラム。
WO2012060996A2 (en) * 2010-11-01 2012-05-10 Michael Luna Caching adapted for mobile application behavior and network conditions
US8824370B2 (en) * 2010-12-16 2014-09-02 Openet Telecom Ltd. Methods, systems and devices for dynamic context-based routing
US8799470B2 (en) * 2011-03-11 2014-08-05 Qualcomm Incorporated System and method using a client-local proxy-server to access a device having an assigned network address
US20130031601A1 (en) * 2011-07-27 2013-01-31 Ross Bott Parental control of mobile content on a mobile device
US8813092B2 (en) * 2011-10-12 2014-08-19 Raytheon Company CORBA embedded inter-orb protocol (EIOP)
FI125252B (en) 2011-12-07 2015-08-14 Arm Finland Oy Procedure, device and system for managing web services
US8977704B2 (en) * 2011-12-29 2015-03-10 Nokia Corporation Method and apparatus for flexible caching of delivered media
US20140207911A1 (en) * 2013-01-22 2014-07-24 James Kosmach System and method for embedding multimedia controls and indications in a webpage
US10120847B2 (en) * 2012-01-27 2018-11-06 Usablenet Inc. Methods for transforming requests for web content and devices thereof
GB2511562B (en) * 2012-03-02 2015-08-12 Seven Networks Inc Providing data to a mobile application accessible at a mobile device via different network connections without interruption and mobile device which hands over
WO2013190545A1 (en) * 2012-06-17 2013-12-27 Skycure Ltd Access control system for a mobile device
WO2014062921A1 (en) * 2012-10-19 2014-04-24 Interdigital Patent Holdings, Inc. Multi-hypothesis rate adaptation for http streaming
US9374436B2 (en) * 2012-12-13 2016-06-21 Qualcomm Incorporated Loading a re-directed web page on a web browser of a client device in a communications system
US20140173111A1 (en) * 2012-12-19 2014-06-19 Netzero Wireless, Inc. Data usage management systems and methods
US10075554B2 (en) * 2012-12-20 2018-09-11 Facebook, Inc. Detecting mobile device attributes
US9213845B1 (en) * 2013-03-08 2015-12-15 Amazon Technologies, Inc. Content access control across multiple media devices
US10282401B2 (en) * 2013-03-13 2019-05-07 Usablenet Inc. Methods for processing cascading style sheets and devices thereof
US9787687B2 (en) * 2013-04-10 2017-10-10 Spotify Ab Systems and methods for efficient and secure temporary anonymous access to media content
CN105659654A (zh) * 2013-06-11 2016-06-08 七网络有限责任公司 在无线网络中对使用专有和非专有协议之流量的信令优化,提供应用和/或服务器稳定性的系统和方法
US20150019686A1 (en) * 2013-07-12 2015-01-15 Seven Networks, Inc. Distributed caching systems with configurable extended caching optimization
US9065765B2 (en) * 2013-07-22 2015-06-23 Seven Networks, Inc. Proxy server associated with a mobile carrier for enhancing mobile traffic management in a mobile network
US9654580B2 (en) * 2013-10-08 2017-05-16 Microsoft Technology Licensing, Llc Proxy-based web application monitoring through script instrumentation
US9697189B2 (en) * 2013-11-15 2017-07-04 Instart Logic, Inc. Partial website optimization for a web publisher
US9351254B2 (en) * 2014-01-22 2016-05-24 Seven Networks, Llc Method for power saving in mobile devices by optimizing wakelocks
US9380342B2 (en) * 2014-02-28 2016-06-28 Rovi Guides, Inc. Systems and methods for control of media access based on crowd-sourced access control data and user-attributes
US20150249852A1 (en) * 2014-02-28 2015-09-03 United Video Properties, Inc. Systems and methods for crowd-sourced media access control
US9391995B2 (en) * 2014-09-30 2016-07-12 Airwatch Llc Remote processing of mobile applications
EP3018580A1 (en) 2014-11-06 2016-05-11 Alcatel Lucent Cache server and method for serving and caching web resources
US9342617B1 (en) * 2015-05-19 2016-05-17 Parrable, Inc. Unique identifiers for browsers
US9747434B1 (en) * 2015-09-17 2017-08-29 EMC IP Holding Company LLC Authenticating with an external device by providing a message having message fields arranged in a particular message field order
US20170302619A1 (en) * 2016-04-19 2017-10-19 Virtual Network Element, Inc. System and Method for Automating Protocol Implementation in a Diameter Wireless Network
US20190141013A1 (en) * 2016-06-02 2019-05-09 Adjesty Sofware Ltd. Method and system for informational content quality verification
US10277701B2 (en) * 2016-07-08 2019-04-30 Facebook, Inc. Methods and Systems for Rewriting Scripts to Direct Requests
US10402181B2 (en) * 2016-07-18 2019-09-03 Airwatch Llc Generating and optimizing deployment configurations for enrolled devices
US10282172B2 (en) * 2016-09-12 2019-05-07 Adobe Inc. Authoring and deploying television apps and pages in a content management system
US10853887B2 (en) * 2016-09-27 2020-12-01 Adobe Inc. Determination of paywall metrics
US10367784B2 (en) * 2016-09-30 2019-07-30 Palo Alto Networks, Inc. Detection of compromised credentials as a network service
US10542459B2 (en) * 2017-03-17 2020-01-21 Verizon Patent And Licensing Inc. Systems and methods for accessing multiple application servers via a service capability exposure function
US11025724B2 (en) * 2017-07-24 2021-06-01 Facebook, Inc. Transport of control data in proxy-based network communications
CA3082120A1 (en) * 2017-11-24 2019-05-31 Elsi Inc. Devices, systems, and methods for securely storing and managing sensitive information
US10938786B2 (en) * 2017-12-01 2021-03-02 Twingate Inc. Local interception of traffic to a remote forward proxy
CN112364274A (zh) * 2020-10-28 2021-02-12 北京中科网威信息技术有限公司 Web站点访问加速方法及装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140365631A1 (en) * 2010-07-26 2014-12-11 Seven Networks, Inc. Mobile application traffic optimization

Also Published As

Publication number Publication date
US11025724B2 (en) 2021-06-01
JP2020529655A (ja) 2020-10-08
US20190028548A1 (en) 2019-01-24
WO2019022723A1 (en) 2019-01-31
CN110999260B (zh) 2022-07-22
JP7018498B2 (ja) 2022-02-10
CN110999260A (zh) 2020-04-10
KR20200023485A (ko) 2020-03-04

Similar Documents

Publication Publication Date Title
KR102308269B1 (ko) 프록시 기반 네트워크 통신들에서의 제어 데이터의 전송
US10587544B2 (en) Message processing method, processing server, terminal, and storage medium
US9706371B2 (en) Push notification middleware
US11088994B2 (en) Local interception of traffic to a remote forward proxy
JP2017529793A5 (ko)
US20130066939A1 (en) Cloud service consuming method, cloud service packet, cloud service broker and cloud system
US10021195B2 (en) Cross-device synchronization system for account-level information
JP7065221B2 (ja) パーソナルユーザデバイスおよびデータ分配デバイスを用いたストレージシステムの実現
US11290514B2 (en) Method for content preparation templates for 5G common media application format based media streaming
US9754327B2 (en) Method and apparatus for configuring social networking site sharing functions
EP3435629B1 (en) Transport of control data in proxy-based network communications
US20140149499A1 (en) Remote request fulfillment and delivery
US11277379B2 (en) Modification of application-provided turn servers
US11290523B1 (en) High-speed transfer of data from device to service
CN116827619A (zh) 防止http放大攻击的方法、设备以及计算机可读介质
Singh et al. An efficient device to device RPC framework using DBUS and KDBus

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant