KR20190048943A - 네트워크 연결 제어 장치 및 그 방법 - Google Patents

네트워크 연결 제어 장치 및 그 방법 Download PDF

Info

Publication number
KR20190048943A
KR20190048943A KR1020170144265A KR20170144265A KR20190048943A KR 20190048943 A KR20190048943 A KR 20190048943A KR 1020170144265 A KR1020170144265 A KR 1020170144265A KR 20170144265 A KR20170144265 A KR 20170144265A KR 20190048943 A KR20190048943 A KR 20190048943A
Authority
KR
South Korea
Prior art keywords
packet
client
server
syn
network connection
Prior art date
Application number
KR1020170144265A
Other languages
English (en)
Other versions
KR102354699B1 (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 삼성전자주식회사
Priority to KR1020170144265A priority Critical patent/KR102354699B1/ko
Publication of KR20190048943A publication Critical patent/KR20190048943A/ko
Application granted granted Critical
Publication of KR102354699B1 publication Critical patent/KR102354699B1/ko

Links

Images

Classifications

    • 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
    • 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/50Network services
    • H04L67/56Provisioning of proxy services

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

본 개시는 클라이언트와 서버 사이의 네트워크 연결 제어 장치의 제어 방법에 있어서, 상기 클라이언트로부터, 네트워크 연결을 위한 제1 패킷을 수신하는 과정과, 상기 네트워크 연결에서 프록시 모듈을 사용할지 여부를 결정하는 과정과, 상기 결정에 기반하여 상기 클라이언트와 상기 서버 사이의 네트워크 연결을 수립하는 과정을 포함하는 방법을 제공한다.

Description

네트워크 연결 제어 장치 및 그 방법 {APPARATUS ADN METHOD CONTROLLING FOR NETWORK CONNECTION}
본 개시는 네트워크 연결을 제어하는 장치 및 그 방법에 관한 것이다.
컴퓨터간 네트워크 연결을 위한 통신 규약인 TCP/IP는 전송 조절 프로토콜 (Transmission Control Protocol)과 인터넷 프로토콜 (Internet Protocol)을 말한다.
IP에서는, 패킷 전달 여부가 보증되지 않고, 패킷을 보낸 순서와 받는 순서가 다를 수 있다. TCP는 IP 레이어 위에서 동작하고, TCP 에서는 데이터의 전달이 보증되고, 보낸 패킷이 순서대로 수신된다. HTTP (HyperText Transfer Protocol), FTP (File Transfer Protocol), SMTP (Simple Mail Transfer Protocol) 등 TCP를 기반으로 한 많은 애플리케이션 프로토콜들이 IP 레이어 위에서 동작하기 때문에, TCP와 IP를 묶어서 ‘TCP/IP’로 부르기도 한다.
클라이언트가 서버에게 데이터를 전송하기 전에 TCP/IP 연결이 필요하면, 상기 클라이언트는 서버와 TCP/IP 연결을 수립한 후에 데이터 전송을 할 수 있다.
일반적으로 TCP/IP 연결은 3 웨이 핸드쉐이크(way-handshake) 방식을 사용한다. 3 way-handshake 방식이란, 클라이언트가 동기화 (Synchronization: SYN) 패킷을 전송하고, 상기 SYN 패킷을 수신한 서버가 SYN+ACK (Acknowledgement) 패킷을 전송하며, 상기 SYN+ACK 패킷을 수신한 클라이언트가 ACK 패킷을 전송하여, 클라이언트와 서버 사이에 TCP 연결이 수립되는 방식이다.
클라이언트와 서버 간의 종단간(End-to-end) TCP 연결은 클라이언트의 요청과 서버의 응답간의 지연으로 인해 데이터 전송 지연 및 사용자 체감 서비스 품질이 낮은 편이다.
본 개시는 네트워크 장비의 부하 감소 및 사용자 체감 서비스 품질 (Quality of Service: QoS)를 증대하는 방법 및 장치를 제공한다.
본 개시는 선택적으로 프록시(proxy) 기술을 적용하여 네트워크 장비의 부하 감소 및 사용자 체감 QoS를 증대하는 방법 및 장치를 제공한다.
본 개시는 RTT (Round Trip Time) 프로브(probe) 방식을 기반으로 네트워크에 연결된 기기의 연결 상태를 분석하는 방법 및 장치를 제공한다.
본 개시는 네트워크에 연결된 기기에 대해 선택적으로 TCP 스플릿(split)을 운용하는 방법 및 장치를 제공한다.
본 개시는 네트워크에 연결된 기기에 대해 선택적으로 TCP Split을 운용하여 네트워크 자원을 분배하는 방법 및 장치를 제안한다.
본 개시의 일 실시예에 따른 클라이언트와 서버 사이의 네트워크 연결을 제어하기 위한 장치의 방법에 있어서, 상기 클라이언트로부터, 네트워크 연결을 위한 제1 패킷을 수신하는 과정과, 상기 네트워크 연결에서 프록시 모듈을 사용할지 여부를 결정하는 과정과, 상기 클라이언트와 상기 서버 사이의 네트워크 연결을 수립하는 과정을 포함하는 방법을 제공한다.
본 개시의 일 실시예에 따른 클라이언트와 서버 사이의 네트워크 연결을 제어하기 위한 장치에 있어서, 송수신부와, 상기 송수신부를 제어하고, 상기 클라이언트로부터 네트워크 연결을 위한 제1 패킷을 수신하고, 상기 네트워크 연결에서 프록시 모듈을 사용할지 여부를 결정하고, 상기 클라이언트와 상기 서버 사이의 네트워크 연결을 수립하는 제어부를 포함하는 장치를 제공한다.
본 개시의 일 실시예에 따른 네트워크 연결을 제어하는 장치의 제어방법은 TCP 연결을 수립하기 전에 클라이언트에 대한 왕복시간 (Round Trip Time: RTT)를 탐지하여 TCP 분리(split)를 진행할지 또는 Direct Forwarding (End-to-end Connection)를 진행할지 결정하는 방법을 제공한다.
본 개시의 일 실시예에 따른 네트워크 연결을 제어하는 장치의 제어방법은 클라이언트의 SYN에 대한 응답으로 무효한(Invalid) SYN+ACK를 클라이언트에게 전송하고, RST packet을 클라이언트로부터 수신에 기초하여 RTT를 계산하는 방법을 제공한다.
도 1은 복수의 사용자 기기가 데이터 전송을 위하여 서버에 연결되는 일 예를 도시한 것이다.
도 2a는 네트워크 연결 제어 장치의 블록도를 도시한 것이다.
도 2b는 클라이언트, 네트워크 연결 제어 장치, 서버 사이의 데이터 흐름을 나타낸 블록도를 도시한 것이다.
도 3a는 본 개시의 일 실시예에 따라 클라이언트와 서버 사이의 TCP 연결 방식을 결정하는 절차를 도시한 것이다.
도 3b는 본 개시의 일 실시예에 따라 프록시 모듈을 통해서 클라이언트와 서버 사이의 TCP 연결되는 절차를 도시한 것이다.
도 3c는 본 개시의 일 실시예에 따라 프록시 모듈을 거치지 않고 클라이언트와 서버 사이의 TCP 연결되는 절차를 도시한 것이다.
도 4a는 본 개시의 일 실시예에 따른 네트워크 연결을 제어하는 방법의 개략적인 흐름도를 도시한 것이다.
도 4b는 본 개시의 일 실시예에 따른 클라이언트와 서버 사이의 네트워크 연결을 제어하는 방법의 구체적인 흐름도를 도시한 것이다.
도 5는 네트워트 연결 제어 장치의 STS (Selective TCP Splitter)의 구조에 대한 블록도를 도시한 것이다.
도 6a는 STS SYN을 SYN 검출 모듈으로부터 전달 받는 흐름도를 도시한 것이다.
도 6b는 STS SYN을 RST (Reset) 수신 모듈으로부터 전달받는 흐름도를 도시한 것이다.
이하, 본 개시의 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
실시예를 설명함에 있어서 본 개시가 속하는 기술 분야에 익히 알려져 있고 본 개시와 직접적으로 관련이 없는 기술 내용에 대해서는 설명을 생략한다. 이는 불필요한 설명을 생략함으로써 본 개시의 요지를 흐리지 않고 더욱 명확히 전달하기 위함이다.
마찬가지 이유로 첨부 도면에 있어서 일부 구성요소는 과장되거나 생략되거나 개략적으로 도시되었다. 또한, 각 구성요소의 크기는 실제 크기를 전적으로 반영하는 것이 아니다. 각 도면에서 동일한 또는 대응하는 구성요소에는 동일한 참조 번호를 부여하였다.
본 개시의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 참조하면 명확해질 것이다. 그러나 본 개시는 실시 예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시 예들은 본 개시가 완전하도록 하고, 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 개시는 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
도 1은 복수의 사용자 기기가 데이터 전송을 위하여 서버에 연결되는 일 예를 도시한 것이다.
도 1을 참조하면, 가정이나 회사, 영업 공간과 같은 로컬 영역 내에 복수의 사용자 기기(131, 132)가 존재하는 경우, 복수의 사용자 기기는 로컬 네트워크(110)를 통해서 서버(100)에게 데이터를 요청하고, 서버(100)로부터 데이터를 전송받을 수 있다.
서버(100)는 멀티미디어 컨텐츠를 제공하는 서비스 제공자로서, 인터넷 망에 존재하는 하나 혹은 그 이상의 스트리밍 서버 및/또는 웹 서버 등을 포함할 수 있다.
서버(100)는 로컬 영역 내에서 설치되는 네트워크 연결 제어 장치에 무선 또는 유선으로 연결될 수 있다. 본 개시에서 네트워크 연결 제어 장치는 프록시 서버로 호칭될 수 있다.
상기 네트워크 연결 제어 장치가 사용자의 집에 위치하는 경우, 상기 네트워크 연결 제어 장치는 고객 댁내 장치 또는 고객 자급 장치(Customer-premise equipment or Customer-provided equipment, 이하 CPE, 120)와 같이 호칭될 수 있다. CPE(120)는 인터넷 접근 게이트웨이 레벨의 장비로서, 로컬 네트워크(110) 내의 복수의 사용자 기기들(131, 132)에게 상기 서버(100)로의 연결을 제공할 수 있다.
예를 들어, 상기 네트워크 연결 제어 장치는, 프록시 서버, 네트워크 중간 노드, CPE, 라우터, 스위치, 주거용 게이트웨이(residential gateway), 셋탑박스, 유무선 통합(fixed mobile convergence) 제품, 또는 홈 네트워킹 어댑터 등이 될 수 있다.
로컬 네트워크(110)는 복수의 사용자 기기(131, 132)에 따라서 무선 또는 유선 연결을 제공할 수 있다. 예를 들어, 로컬 네트워크는 유선 랜 또는 무선 랜을 들 수 있다.
복수의 사용자 기기(131, 132)는 예를 들어, 로컬 네트워크로부터 무선으로 연결되는 제1 사용자 기기(131)와, 유선으로 연결되는 제2 사용자 기기(132)를 포함할 수 있다.
일 예로, 제1 사용자 기기(131)는 이동 전화기, 스마트폰, 태블릿, 무선 연결되는 랩탑 등을 포함한다. 제2 사용자 기기(132)는 스마트 TV, 유선 연결되는 데스크탑 등을 포함한다.
복수의 사용자 기기(131, 132)가 서버에 데이터를 요청하는 경우 복수의 사용자 기기는 클라이언트로 정의한다.
클라이언트(131, 132)는 서버(100)와 전송 제어 프로토콜 (TCP: Transmission Control Protocol) 및 Internet Protocol (IP)을 통해서 연결된다. 클라이언트는 서버와 TCP 연결을 수립한 후에 데이터를 요청 및 수신할 수 있다.
복수의 클라이언트 즉, 사용자 기기(131, 132)가 서버(100)로부터 동일한 데이터를 수신하는 경우라도, 무선 연결된 제1 사용자 기기(131)는 유선 연결된 제1 사용자 기기(132)보다 상대적으로 낮은 서비스 품질을 사용자에게 제공한다. 예를 들어, 스트리밍 서비스에서 버퍼링 발생이나 화질 감소와 같이, 사용자가 체감하는 서비스의 품질이 저하될 수 있다. 왜냐하면, 유선 연결된 제2 사용자 기기에 비하여, 무선 연결된 제1 사용자 기기가 로컬 네트워크 영역에서 데이터 손실량이 크고 전송속도가 낮기 때문이다.
본 개시의 일 실시예는 무선 연결된 클라이언트를 사용하는 사용자가 느끼는 서비스 품질을 개선하기 위하여, 클라이언트와 서버 사이의 네트워크 연결을 제어하는 장치 및 그 제어방법을 제공한다.
또한, 본 개시의 일 실시예에 따른 네트워크 연결을 제어하는 장치 및 그 제어방법은, 클라이언트에 의한 연결이 유선 또는 무선인지 판단하여 클라이언트와 서버 사이의 TCP 연결 방식을 다르게 적용한다. 이로써 무선 연결되는 클라이언트에 대한 처리율(throughput)을 개선하는 장치 및 그 제어방법을 제공한다.
도 2a는 네트워크 연결 제어 장치의 블록도를 도시한 것이다. 도 2b는 클라이언트, 네트워크 연결 제어 장치, 서버 사이의 데이터 흐름을 나타낸 블록도를 도시한 것이다.
도 2a를 참조하면, 네트워크 연결 제어 장치 (220)은 외부 네트워크의 구성과 데이터/패킷을 송수신하는 송수신부(221), 상기 송수신부를 제어하는 제어부(222)를 포함한다. 제어부(222)는 CPU, 프로세서 등을 포함한다.
나아가 네트워크 연결 제어 장치 는 송수신부에서 송수신된 또는 제어부에서 연산된 데이터/패킷을 저장하는 저장부(223)을 더 포함할 수 있다.
도 2b를 참조하면, 클라이언트(230)가 서버(200)에게 데이터를 전송하는 경우, 클라이언트(230)는 네트워크 연결 제어 장치(220)에게 데이터를 전송하고, 네트워크 연결 제어 장치(220)는 서버(200)에게 데이터를 전달한다. 반대로 서버(200)가 클라이언트에게 데이터를 전송하는 경우 서버가 네트워크 연결 제어 장치에게 데이터를 전송하고, 네트워크 연결 제어 장치가 클라이언트에게 데이터를 전송한다.
상기 네트워크 연결 제어 장치(220)의 송수신부(221)는 클라이언트(230)와 패킷을 송수신하는 제1 네트워크 인터페이스(221a)와, 서버(220)와 패킷 신호를 송수신하는 제2 네트워크 인터페이스(221b)를 포함할 수 있다.
상기 네트워크 연결 제어 장치는 커널 영역(Kernel Space)의 TCP/IP 모듈 (222c)를 포함한다. TCP/IP 모듈(222c)는 클라이언트로부터 전송된 데이터를 서버(200)에게 전달(forwarding)하거나, 반대로 서버로부터 전송된 데이터를 클라이언트에게 전달한다.
클라이언트와 서버가 네트워크 연결 제어 장치를 통해서 연결된 경우, 클라이언트와 서버 사이의 TCP 연결은 TCP/IP 모듈(222c)를 통해서 이뤄진다. TCP/IP 모듈(222c)는 제어부(222)에 포함될 수 있으며, 이 경우 제어부(222)는 TCP/IP 모듈로서 역할을 한다.
상기 네트워크 연결 제어 장치(220)는 클라이언트로부터 전송된 데이터를 커널 영역을 통하지 않고 서버에게 전송할 수 있는 하드웨어 가속기(hardware accelerator, 222d)를 포함할 수 있다. 선택적으로, 하드웨어 가속기는(222d)는 제어부(222)와 별개의 하드웨어로 구비될 수 있다. 하드웨어 가속기는 클라이언트로부터 데이터를 수신하면 서버에게 수신된 데이터를 전달(forwarding)하고, 서버로부터 데이터를 수신하면 클라이언트에게 수신된 데이터를 전달한다.
상기 네트워크 연결 제어 장치(220)는 프록시 모듈(proxy, 222b)을 포함할 수 있다. 상기 프록시 모듈(222b)는 사용자 영역(User Space) 또는 어플리케이션 계층(Application Layer) 내에서 데이터를 처리한다. 사용자 영역 또는 어플리케이션 계층은 커널 영역 보다 상위 계층이며, 커널 영역 보다 제어부에 대한 부하가 크다. 프록시 모듈은 네트워크 연결 제어 장치의 제어부(222)에 포함될 수 있으며, 이 경우 제어부(222)가 프록시 모듈로서 역할을 수행할 수 있다.
상기 프록시 모듈은 사용자 영역에 속하며, 서버로부터 수신한 데이터를 저장하여, 클라이언트로부터 저장된 데이터의 요청을 수신한 경우 자신이 저장한 데이터를 클라이언트에게 전송한다. 그러므로 클라이언트가 요청한 데이터를 서버에게 요청하지 않아도 됨으로써 데이터 전송 속도를 개선할 수 있다.
클라이언트(230)와 프록시 모듈(222b) 사이에 TCP 연결이 수립되고, 프록시 모듈(222b)와 서버(200) 사이에 TCP 연결이 수립된 경우 클라이언트와 서버는 데이터를 송수신 할 수 있다. 이 경우, 클라이언트(230)는 프록시 모듈(222b)를 사용하여 서버(200)와 TCP 연결을 수립한 것이다. 클라이언트와 서버 사이의 End-to-end TCP 연결이 프록시 모듈(222b)에 의해서 분리되어 있으므로, "TCP 스플릿 (Split)"라 한다.
클라이언트가 프록시 모듈을 통하여 서버로부터 데이터를 전송 받으면, 프록시 모듈은 해당 데이터를 저장할 수 있다. 이 후에 클라이언트가 해당 데이터의 재전송을 요청하면, 프록시 모듈은 해당 데이터의 재전송을 상기 서버에게 요청하지 않고, 프록시 모듈 자신이 저장하고 있던 해당 데이터를 클라이언트에게 재전송할 수 있다. 이로써, 상기 클라이언트가 상기 서버에게 데이터 전송을 재전송하지 않아도 되므로, 상기 프록시 모듈로부터 상기 서버까지의 통신 과정을 생략할 수 있고, 결과적으로 상기 클라이언트의 데이터 처리율 및 전송 속도를 개선할 수 있다.
상술한 설명을 기반으로, 클라이언트와 서버 사이의 데이터 흐름은 다음과 같은 3가지로 정리할 수 있다.
첫째, 트래픽 오프로드(Traffic Offload)에 의한 데이터 흐름(f1: 점선 화살표)은 클라이언트(230), 하드웨어 가속기(222d) 및 서버(200)로 구성된다. 트래픽 오프로드 방식은 하드웨어 가속기에서 데이터를 처리하기 때문에 프록시 모듈을 구현하기 위한 제어부(222) 즉, 커널 영역의 부하가 거의 없다.
둘째, 브리지(Bridge)에 의한 데이터 흐름(f2: 점선 화살표)은 클라이언트(230), TCP/IP 모듈(222c) 및 서버(200)로 구성된다. 브리지 방식은 커널 영역에 있는 TCP/IP 모듈에서 데이터를 클라이언트나 서버에게 전달(forwading)하는 처리를 수행하기 때문에 제어부(222) 즉, 커널 영역의 부하가 트래픽 오프로드 방식 보다 상대적으로 높다.
셋째, 프록시모듈 (Proxy)에 의한 데이터 흐름(f3: 단일 실선 화살표)은 클라이언트(230), TCP/IP 모듈(222c), 프록시 모듈(222b) 및 서버(200)로 구성된다. 프록시 방식은 커널 영역보다 상위인 사용자 영역에 있는 프록시 어플리케이션에 의해서 데이터가 처리된다. 그러므로 커널 영역에 의한 네트워크 프로토콜 처리뿐만 아니라 사용자 영역에 의한 어플리케이션이 데이터를 처리하기 때문에 제어부(222) 즉 커널 및 사용자 영역의 부하가 브리지 방식 보다 상대적으로 높다.
상기 네트워크 연결 제어 장치(220)는 선택적 TCP 분리기(Selective TCP Splitter: STS, 222a)을 포함할 수 있다. STS(222a)는 네트워크 연결 제어 장치(220)의 제어부(222)에 포함되며, 이 경우 제어부(222)가 STS로서 역할할 수 있다. 또는, STS는 제어부(222)와 별개의 프로세서 내지 CPU로 이뤄질 수도 있다.
본 개시의 일 실시예에 따른 클라이언트와 서버 사이의 네트워크 연결 제어 장치는 로컬 네트워크(110)를 통해서 복수의 사용자 기기에게 서비스를 제공할 수 있는 장치로써, STS를 포함하는 CPE(120)이거나, CPE(120)와 별개로 STS를 포함하는 별도 네트워크 장치일 수 있다. 설명의 편의를 위하여, STS를 포함하는 CPE를 기준으로 이하에서 설명하지만, STS를 포함하는 별도 네트워크 장치인 경우를 본 개시의 권리범위에서 제외한 것은 아니다.
상기 STS(222a)는 클라이언트(230)와 서버(200) 사이의 TCP 연결을 수립하기 전에 클라이언트(230)의 연결 방식(예를 들어, 무선 방식 또는 유선 방식)을 판별하여 프록시 모듈(222b)을 사용한 TCP 연결 여부를 판단할 수 있다. 상기 판단 결과에 따라서 상술한 3가지 방식 즉, 트래픽 오프로드, 브리지, 프록시 방식 중 어느 방식으로 클라이언트와 서버 사이의 TCP 연결을 수립할 수 있다.
상기 STS(222a)는 프록시 모듈(222b), TCP/IP 모듈(222c), 하드웨어 가속기(222d) 보다 먼저 클라이언트(230)로부터 수신한 데이터를 수신하고, 수신된 데이터를 사용하여 클라이언트와 서버 사이의 TCP 연결 방식(예를 들어, 무선 방식 또는 유선 방식)을 결정할 수 있다.
도 3a, 3b, 3c는 본 개시의 일 실시예에 따른 TCP 연결을 제어하기 위한 절차를 도시한 것이다. 도 3a는 본 개시의 일 실시예에 따라 클라이언트와 서버 사이의 TCP 연결 방식을 결정하는 절차를 도시한 것이다.
도 3a를 참조하면, 클라이언트(230)는 서버(200)와의 TCP 연결을 수립하기 위하여 시퀀스(sequence; seq) 번호 X를 가지는 클라이언트의 SYN 패킷인 SYN (seq X) 패킷을 네트워크 연결 제어 장치(220)의 STS(222a)에게 전송할 수 있다(301).
IETF(Internet Engineering Task Force)에 의해 규정된 TCP 규격에서, 클라이언트는 SYN (seq X) 패킷을 서버에게 전송할 수 있다. 서버는 SYN (seq X)의 분석하고 그 응답으로 ACK (seq X+1)와 서버 자신의 SYN (seq Y)을 함께 묶어서 SYN (seq Y)+ACK (seq X+1) 패킷을 클라이언트에게 전송할 수 있다. 이에 클라이언트는 ACK (seq X+1)이 SYN (seq X)의 응답임을 확인하면 SYN (seq Y)에 대한 응답으로 ACK (seq Y+1) 패킷을 서버에게 전송할 수 있다. 이로써 클라이언트와 서버 사이는 TCP 연결이 수립될 수 있다. 서버와 클라이언트는 ACK의 시퀀스 번호가 SYN의 시퀀스 번호에 1을 더한 값과 같은지 확인하여 ACK가 SYN의 응답인지 확인할 수 있다.
즉, 네트워크 연결 제어 장치가 클라이언트와 서버 사이에 구비된 경우에, 네트워크 연결 제어 장치는 클라이언트 또는 서버로부터 받은 SYN, SYN+ACK, ACK를 각각 상기 서버 또는 클라이언트에게 전달(forwarding)할 수 있다.
그러나, 본 개시의 일 실시예에 따르면, 네트워크 연결 제어 장치(220)의 STS(222a)는 SYN (seq X) 패킷을 서버(200)에게 전달하지 않을 수 있다. STS는 SYN (seq X)를 분석하고, 클라이언트(230)에게 SYN (seq X)의 응답이 아닌 무효한(Invalid) SYN (seq Y)+ACK (seq Z)을 전송할 수 있다(302). Z는 X+1이 아닌 다른 시퀀스 번호가 될 수 있다.
클라이언트(230)는 무효한(Invalid) SYN (seq Y)+ACK (seq Z)를 수신하고 분석한다. ACK (seq Z)가 SYN (seq X)의 응답인 ACK (seq X+1)가 아닌 것을 확인하고, Invalid SYN (seq Y)의 응답인 ACK (seq Y+1)을 대신하여 리셋(RST) 패킷을 STS(222a)에게 전송할 수 있다(303).
STS(222a)는 RST 패킷을 수신하고, Invalid SYN+ACK를 전송한 시점(Ti)과 RST 패킷을 수신한 시점(Tr)의 시간차를 계산한다. STS로부터 클라이언트까지 패킷의 왕복 이동 시간(Round Trip Time: RTT)이라 하며, 예를 들어 RTT= Tr-Ti이 될 수 있다. STS(222a)는 Ti 및 Tr을 기반으로 클라이언트가 무선 또는 유선 연결 여부를 판단할 수 있다. 즉, STS(222a)는 RTT를 기반으로 클라이언트(230)의 연결 방식 즉, 무선 또는 유선 연결 여부를 판단한다 (304).
클라이언트(230)은 로컬 네트워크(110)을 통해서 네트워크 연결 제어 장치(220)와 패킷을 주고 받는데, 로컬 네트워크에 무선 연결된 클라이언트와 STS 사이의 패킷의 왕복 시간(RTT)이 유선 연결된 클라이언트 보다 상대적으로 길게 측정된다. 네트워크 연결 제어 장치로부터, 무선 연결된 클라이언트에 대한 RTT와 유선 연결된 클라이언트에 대한 RTT는 실험적으로 구별 가능한 시간 길이 차이를 가진다. 그러므로 무선 연결된 클라이언트에 대한 RTT와 유선 연결된 클라이넌트에 대한 RTT 사이의 임계 값을 설정하여, RTT의 탐지를 기반으로 클라이언트가 무선 또는 유선으로 연결되는지 판단이 가능하다. 예를 들어, RTT가 임계 값 이하인 클라이언트는 상기 네트워크 연결 제어 장치와 유선 연결되어 있다고 판단되고, RTT가 임계 값 초과인 클라이언트는 상기 네트워크 연결 제어 장치와 무선 연결되어 있다고 판단될 수 있다. 상기 임계 값의 예로는 1msec, 3msec 등이 있을 수 있다.
그러므로, STS는 Invalid SYN+ACK 전송 시점과 RST 수신 시점의 차이를 통해서 클라이언트가 유선 연결인지 혹은 무선 연결인지 판단할 수 있다. 본 개시는 종래에 서버(200)로부터 클라이언트까지 패킷의 왕복 시간을 측정하여 클라이언트의 유무선 연결 상태를 판단하는 것에 비하여 여러 가지 장점을 갖는다.
클라이언트와 서버의 End-to-end 연결은 패킷의 이동시간이 길고, 패킷의 손실될 수 있다. 하지만 본 개시에 따르면 네트워크 연결 제어 장치(또는 STS)는 로컬 영역에 위치하므로, 클라이언트와 STS 사이의 거리가 짧으므로 패킷의 이동시간이 짧고, 패킷 손실률도 작은 장점이 있다. 또한 종래에는 클라이언트와 서버 사이의 TCP 연결이 수립된 후에야 RTT를 측정할 수 있었다. 하지만 본 개시에 따른 클라이언트와 서버 사이의 TCP 연결이 수립되기 전에 클라이언트와 STS 사이에 패킷의 왕복 시간을 측정하여 클라이언트의 유무선 연결 상태를 판단할 수 있는 장점을 갖는다.
RTT가 기설정된 임계 값 이상인 경우, STS는 클라이언트(230)를 무선으로 연결된 제1 사용자 기기(131)로 판단할 수 있다(도 1 참조). 또한, RTT가 기설정된 임계 값 이하인 경우, STS는 클라이언트(230)를 유선으로 연결된 제2 사용자 기기(132)로 판단할 수 있다.
STS(222a)는 RTT가 기설정된 임계 값 이상인 경우 클라이언트(230)로부터 수신한 SYN 패킷을 프록시 모듈(222b)에게 전달한다. 또한, RTT가 기설정된 임계 값 이하인 경우 클라이언트(230)로부터 수신한 SYN 패킷을 프록시 모듈을 거치지 않고 TCP/IP 모듈 또는 하드웨어 가속기를 통해서 서버(200)에게 전달(forwarding)한다.
도 3b는 본 개시의 일 실시예에 따라 프록시 모듈을 통해서 클라이언트와 서버 사이의 TCP 연결되는 절차를 도시한 것이다.
도 3b를 참조하면, STS(222a)가 클라이언트로부터 수신한 SYN 패킷을 프록시 모듈(222b)에게 전송하기로 결정하면(304), STS(222a)는 STS SYN (seq X) 패킷을 프록시 모듈에게 전송한다(305). STS SYN (seq X)는 클라이언트로부터 수신한 SYN (seq X)와 동일한 값을 가지며, 프록시 모듈(222b)는 STS로 부터 송신된 STS SYN를 클라이언트가 보낸 SYN으로 판단한다.
프록시 모듈(222b)는 STS SYN (seq X)을 수신하고 분석한 다음에, STS SYN (seq X)에 대한 응답으로 ACK (seq X+1)와 자신의 SYN (seq Y)을 클라이언트(230)에게 전송한다(306). 클라이언트(230)는 SYN (seq Y)+ACK (seq X+1)을 수신하고 분석한 다음에, SYN (seq Y)에 대한 응답으로 ACK (seq Y+1)를 STS에게 전송하고(307), STS는 ACK (seq Y+1)를 프록시 모듈에게 전달한다(308). 이로써 클라이언트와 프록시 모듈 사이의 TCP 연결이 수립된다.
프록시 모듈(222b)는 서버(200)와 TCP 연결을 위한 3-way Handshake 절차를 다시 수행한다. 프록시 모듈(222b)는 SYN (seq X) 패킷을 서버(200)에게 전송하고(309), 서버(200)는 SYN (seq X)을 수신하고 분석한 다음에, SYN (seq X)에 대한 응답인 ACK (seq X+1)와 자신의 SYN (seq Y)을 프록시 모듈(222b)에게 전송한다(310).
프록시 모듈(222b)는 SYN (seq Y)+ACK (seq X+1)를 수신하고 분석한 다음에, SYN (seq Y)에 대한 응답으로 ACK (seq Y+1) 패킷을 서버(200)에게 전송한다(311). 이로써 프록시 모듈과 클라이언트 사이의 TCP 연결이 수립된다.
이로써, 클라이언트와 서버는 프록시 모듈을 통해서 TCP 연결된다. 클라이언트가 서버에게 데이터를 전송하는 경우 클라이언트는 데이터를 프록시 모듈에게 전송하고, 프록시 모듈은 데이터를 서버에게 전송한다(312). 이를 TCP split 이라 한다.
도 3c는 본 개시의 일 실시예에 따라 프록시 모듈을 거치지 않고 클라이언트와 서버 사이의 TCP 연결되는 절차를 도시한 것이다.
도 3c를 참조하면, STS(222a)가 클라이언트로부터 수신한 SYN 패킷을 프록시 모듈(222b)을 거치지 않고 서버(200)에게 전달(forwarding)하기로 결정하면, STS(222a)는 STS SYN (seq X) 패킷을 TCP/IP 모듈(222c) 또는 하드웨어 가속기(222d)를 통해서 서버(200)에게 전송한다(313). STS SYN (seq X)는 클라이언트로부터 수신한 SYN (seq X)와 동일한 값을 가지며, 서버(200)는 STS로 부터 송신된 STS SYN를 클라이언트가 보낸 SYN으로 판단한다. TCP/IP 모듈 와 하드웨어 가속기는 클라이언트와 TCP연결을 하거나 서버와 TCP 연결을 수립하지 않고, STS SYN 패킷을 서버에게 전달하는 역할만 한다.
서버(200)는 STS SYN (seq X)을 수신하고 분석한 다음에, STS SYN (seq X)에 대한 응답인 ACK (seq X+1)와 서버의 SYN (seq Y)을 TCP/IP 모듈 또는 하드웨어 가속기를 통해서 클라이언트(230)에게 전송한다(314).
클라이언트(230)은 SYN (seq Y)+ ACK (seq X+1)를 수신하고 분석한 다음에, SYN (seq Y)에 대한 응답으로 ACK (seq Y+1) 패킷을 STS에게 전송하고(315), STS는 ACK (seq Y+1) 패킷을 TCP/IP 모듈 또는 하드웨어 가속기를 통해서 서버(200)에게 전송한다(316). 이로써 클라이언트(230)는 프록시 모듈(222b)를 사용하지 않고, 서버(200)와 TCP 연결을 수립하며, 클라이언트(230)은 데이터를 서버에게 전송할 수 있는 상태가 된다(317).
본 개시의 일 실시예에 따른 네트워크 연결을 제어하는 장치 및 그 제어방법은 클라이언트와 서버 사이의 TCP 연결이 수립되기 전에 TCP split 여부를 결정한다. 즉, 본 개시는 클라이언트와 서버 사이 TCP 연결을 수립한 후에 필요시 프록시 모듈을 사용한 TCP split을 수행하는 네트워크 연결 방법과 구별된다. 또한, 본 개시는 클라이언트 측과 서버 측으로 TCP 흐름이 TCP 계층에서 TCP split된 상태에서 필요시 TCP 계층에서 TCP 접합(splice)하는 네트워크 연결 방법과 구별된다.
도 4a는 본 개시의 일 실시예에 따른 네트워크 연결을 제어하는 방법의 개략적인 흐름도를 도시한 것이다. 도 4b는 본 개시의 일 실시예에 따른 클라이언트와 서버 사이의 네트워크 연결을 제어하는 방법의 구체적인 흐름도를 도시한 것이다.
도 4a를 참조하면, 본 개시의 일 실시예에 따른 클라이언트와 서버 사이의 네트워크 연결을 제어하기 위한 장치의 방법은, 상기 클라이언트로부터 제1 패킷을 수신하는 과정(410)과, 프록시 모듈을 사용한 네트워크 연결을 수립할지 결정하는 과정(420)과, 상기 클라이언트와 상기 서버 사이의 네트워크 연결을 수립하는 과정(430)을 포함한다.
상기 클라이언트와 서버 사이의 네트워크 연결이 TCP 연결인 경우, 상기 제1 패킷은 클라이언트의 SYN 패킷을 의미한다.
본 개시의 일 실시예에 따른 네트워크 연결 제어 장치는 클라이언트와 서버 사이의 네트워크 연결을 수립한 후에 클라이언트와 서버 사이의 네트워크 연결 예를 들면, TCP 연결을 끊고 접합(spice) 하지 않는다. 수립된 네트워크 연결을 끊고 붙이는 절차는 매우 복잡하고 전송중인 데이터의 지연을 발생시킨다. 그러므로 본 개시의 일 실시예에 따른 네트워크 연결 제어 장치는 클라이언트와 서버 사이의 네트워크 연결을 수립하기 전에 프록시 모듈을 사용하여 네트워크를 연결할지 여부를 결정하고, 클라이언트의 연결 방식(유선 또는 무선)에 따라서 데이터 흐름을 제공한다.
과정 420에서, STS는 제1 패킷을 수신한 후, 클라이언트에게 상기 제1 패킷에 기초한 제2 패킷을 송신하고 그에 대한 응답인 제3 패킷을 수신함으로써 클라이언트까지의 상기 제2 패킷과 제3 패킷의 왕복 시간을 계산한다. STS는 패킷의 왕복 시간을 기초로 클라이언트와 서버 사이의 네트워크 연결시 프록시 모듈의 사용 여부를 결정한다.
또는, 과정 420에서, STS는 제1 패킷을 수신하고 분석한 다음에 제1 패킷에 대한 응답이 아닌 제2 패킷을 클라이언트에게 전송한다. 상기 제2 패킷은 SYN 패킷에 대한 응답이 아닌 Invalid SYN+ACK 일 수 있다.
클라이언트는 제2 패킷을 수신하고 분석하고 제1 패킷에 대한 응답이 아닌 것을 확인한다. 클라이언트는, 제2 패킷에 대한 응답이 아닌, 제3 패킷을 STS에게 전송한다. 상기 제3 패킷은 RST 패킷일 수 있다.
STS는 클라이언트로부터 제3 패킷을 수신한다. STS는 제2 패킷의 전송 시점과, 제3 패킷의 수신 시점을 기초로 상기 프록시 모듈 사용 여부를 결정한다. 바람직하게는 제2 패킷의 전송 시점과 제3 패킷의 수신 시점의 시간 차를 계산하고, 시간 차를 기설정된 임계 값과 비교하여 프록시 모듈 사용 여부를 결정한다.
시간차가 기설정된 임계 값 보다 크다면, STS는 클라이언트를 무선 연결된 사용자 기기로 판단하고, 프록시 모듈을 사용한 네트워크 연결이 수립될 수 있도록 이후 절차를 진행한다. STS는 네트워크 연결을 위한 제4 패킷을 프록시 모듈에게 전송한다.상기 제4 패킷은 상기 제1 패킷과 동일한 값을 가지는 패킷이다.
프록시 모듈은 제4 패킷을 수신하고 클라이언트와 3 way-handshake를 이용하여 네트워크 연결을 수립하고, 이후 프록시 모듈은 서버와도 네트워크 연결을 수립한다. 즉, 클라이언트와 서버 사이는 데이터 전송이 가능한 상태가 된다.
한편, 시간차가 기설정된 임계 값 보다 작다면, STS는 클라이언트를 유선 연결된 사용자 기기로 판단하고, 프록시 모듈을 사용하지 않고 커널 영역의 TCP/IP 모듈 또는 하드웨어 가속기를 통해서 네트워크 연결을 위한 제4 패킷을 서버에게 전송한다. 클라이언트는 서버와 3 way-handshake를 이용하여 네트워크 연결을 수립한다. 즉, 클라이언트와 서버 사이는 데이터 전송이 가능한 상태가 된다.
프록시 모듈은 커널 영역 보다 상위 계층인 사용자 영역 또는 어플리케이션 계층에 속하기 때문에 CPU의 부하를 많이 필요로 한다. 모든 클라이언트의 네트워크 연결 요청에 대해서 프록시 모듈을 사용하면 CPU에 부담이 된다. 그러므로,유선 연결된 클라이언트에 비하여 상대적으로 낮은 데이터 처리율을 가지는 무선 연결된 클라이언트에게 선택적으로 프록시 모듈 사용한 TCP 연결을 제공하여, CPU의 부하는 낮추면서 무선 연결된 클라이언트들에게도 높은 데이터 처리율을 제공할 수 있다.
STS은 수신된 제1 패킷을 버퍼하고, 이후 프록시 모듈 사용 여부가 결정되면 제1 패킷을 기반으로 생성된 버퍼된 패킷(buffered packet)을 제4 패킷으로 전송할 수 있다. 제4 패킷은 제1 패킷과 동일한 값을 갖는다. 또는, STS는 프록시 모듈 사용 여부가 결정되면, 수신된 제3 패킷의 플래그(flag) 값을 변경하여 제4 패킷으로 전송할 수 있다. 상기 제3 패킷은 플래그를 제외하고 제1패킷과 동일하기 때문이다.
도 4b를 참조하여 본 개시의 일 실시예에 따른 장치 및 그 제어 방법을 자세히 설명한다.
과정 410에서, 클라이언트가 STS에게 전송한 제1 패킷은 클라이언트에서 TCP 연결을 위하여 새롭게 생성한 SYN 패킷을 포함한다. SYN 패킷은 새로운 로컬 네트워크에 진입한 클라이언트가 서버와 TCP 연결하기 위해 생성한 SYN 패킷 이다. STS는 SYN 패킷을 클라이언트로부터 수신한다.
과정 421에서, STS는 수신한 SYN을 분석하여 연결된 클라이언트의 정보를 분석한다. 상기 정보를 기반으로 STS는 Invalid SYN +ACK을 생성한다. STS는 Invalid SYN +ACK를 포함하는 제2 패킷을 클라이언트에게 전송한다.
Invalid SYN+ACK는 클라이언트의 상기 SYN에 대한 응답이 아닌 다른 값을 포함한다.
클라이언트는 Invalid SYN+ACK을 수신하고 분석하고, 자신이 전송한 SYN의 응답이 아닌 것을 확인하면, Invalid SYN+ACK에 대한 응답으로 TCP 연결을 종료하는 RST 패킷을 전송한다.
과정 422에서, STS는 클라이언트로부터 RST 패킷을 수신한다.
과정 423에서, STS는 Invalid SYN+ACK의 전송 시점(Ti)과 RST의 수신 시점(Tr)의 시간차(Tr-Ti)를 계산한다. STS로부터 클라이언트까지 패킷의 왕복한 시간이라고 하여 시간차(Tr-Ti)를 RTT(Round Trip Time)라고 한다.
과정 424에서, STS는 RTT에 기반하여 TCP 연결을 위한 STS SYN을 프록시 모듈에게 전송할지 또는 전달(forwarding) 방식(TCP/IP 모듈 또는 하드웨어 가속기)을 이용할지 결정한다. 구체적으로 STS는 RTT와 기설정된 임계 값과 비교한다.
비교 결과에 따라 RTT가 기설정된 임계 값 보다 크면, 클라이언트가 유선으로 연결된 것으로 판단하고, 과정 425을 수행한다. RTT가 기설정된 임계 값 보다 작으면, 클라이언트가 유선으로 연결된 것으로 판단하고, 과정 426을 수행한다.
과정 425은 RTT가 기설정된 임계 값 보다 큰 경우로서, STS는 STS SYN을 포함하는 제4 패킷을 프록시 모듈(222b)에게 전송한다. 프록시 모듈은 STS SYN를 수신하고, 클라이언트와 TCP 연결을 수립하고, 이후에 서버와 TCP 연결을 수립한다.
프록시 TCP 연결된 경우, 프록시 모듈은 클라이언트의 요청에 서버를 대신하여 기 저장된 데이터를 클라이언트에게 전송한다. 그러므로, 높은 데이터 처리율을 얻을 수 있고, 무선 연결된 클라이언트의 서비스 품질이 유선에 비하여 낮아지지 않도록 할 수 있다.
과정 426은 RTT 가 기설정된 임계 값 보다 작은 경우로서, STS는 STS SYN을 포함하는 제4 패킷을 프록시 모듈에게 전송하지 않고, 커널 영역에 속하는 TCP/IP 모듈(또는 하드웨어 가속기)을 통해서 서버에게 전송한다. 이후 서버와 클라이언트 사이의 TCP 연결을 수립한다.
본 개시는 RTT를 기반으로 선택적으로 프록시 모듈의 사용 여부를 판단하여, 무선 연결된 클라이언트에게 프록시 TCP 연결을 제공하여 높은 데이터 처리율을 얻으면서도, 유선 연결된 클라이언트에겐 TCP/IP 모듈을 사용한 연결을 제공하여 CPU 부하를 최소로 하는 장치 및 그 제어방법을 제공한다.
도 5는 STS의 구조에 대한 블록도를 도시한 것이다.
도 5를 참조하면, STS(222a)는 SYN 검출 모듈(510), Invalid SYN+ACK 전송 모듈(520), RST 수신 모듈(530), Invalid SYN+ACK 전송 - RST 수신 시간 분석 모듈(540) (이하 '시간 분석 모듈'이라 함), 프록시/Forwarding 결정 모듈(550), STS SYN 전송 모듈(560)을 포함할 수 있다.
SYN 검출 모듈(510)은 클라이언트로부터 SYN을 수신하고, 수신된 SYN을 기반으로 Invalid SYN+ACK를 생성한다. Invalid SYN+ACK 전송 모듈(520)은 상기 Invalid SYN+ACK를 클라이언트에게 전송한다. RST 수신 모듈(530)은 클라이언트로부터 전송된 RST를 수신한다. 시간 분석 모듈(540)은 Invalid SYN+ACK 전송 시점과 RST 수신 시점의 시간차를 계산한다. 프록시/Forwarding 결정 모듈(550)은 상기 계산된 시간차를 기반으로 STS SYN을 프록시 모듈로 전송할지 또는 TCP/IP 모듈을 통해서 서버로 포워딩할지 결정한다.
상기 계산된 시간차가 기설정된 임계 값 보다 크면, 프록시/Forwarding 결정 모듈(550) 프록시 모듈에게 STS SYN을 전송하기로 결정한다. 그리고 상기 계산된 시간차가 기 설정된 임계 값 보다 작으면, 프록시/Forwarding 결정 모듈(550) TCP/IP 모듈을 통해서 서버로 STS SYN을 포워딩 한다.
STS SYN 전송 모듈(560)은 상기 결정에 따라서 STS SYN을 전송한다. STS SYN 전송 모듈(560)은 상기 STS SYN을 SYN 검출 모듈(510)으로부터 전달 받거나(T1) 또는 RST 수신 모듈(530)으로부터 전달 받을 수 있다(T2). 도 6을 참조하여, 상기 STS SYN을 전달 받는 방법을 보다 자세히 설명한다.
도 6a는 STS SYN 전송 모듈이 STS SYN을 SYN 검출 모듈(510)으로부터 전달 받는 흐름도를 도시한 것이다.
도 6a를 참조하면, SYN 검출 모듈(510)이 클라이언트로부터 SYN을 수신하면(611), 수신한 SYN을 저장부(223)에 저장한다(612). 그리고, STS SYN의 전송이 결정되면, SYN 검출 모듈(510)은 저장된 SYN을 기반으로 버퍼링된(buffered) SYN을 생성하고 STS SYN 전송 모듈(560)에게 전달한다. STS SYN 전송 모듈(560)은 전달 받은 buffered SYN을 STS SYN으로 전송한다(613). STS SYN은 SYN 검출 모듈이 수신한 SYN과 동일한 값을 갖는다.
도 6b는 STS SYN 전송 모듈이 STS SYN을 RST 수신 모듈(530)으로부터 전달받는 흐름도를 도시한 것이다.
도 6b를 참조하면, SYN 검출 모듈(510)은 SYN을 수신하더라도 수신한 SYN을 저장하지 않는다. RST 수신 모듈(530)은 RST를 수신한다(621). STS SYN의 전송이 결정되면, RST 수신 모듈(530)은 수신한 RST의 플래그(flag)를 변경하여 리셋 플래그 고정 SYN (RST Flag-fixed SYN)을 생성한다(622). RST는 클라이언트로부터 전송된 SYN과 flag만 다르고 나머지 정보는 동일하므로, RST의 flag의 변경만으로 클라이언트로부터 전송된 SYN과 동일한 RST Flag-fixed SYN을 생성할 수 있다. RST 수신 모듈(530)은 RST Flag-fixed SYN을 STS SYN 전송 모듈(560)에게 전달한다. STS SYN 전송 모듈(560)은 전달 받은 RST Flag-fixed SYN을 STS SYN으로 전송한다(623).
TCP 연결을 위한 패킷의 플래그(Flags)는 TCP 헤더의 제어 비트(control bits)를 의미한다. 상기 패킷 플래그는 9개의 1-비트 플래그를 포함한다. 상기 9개의 1-비트 플래그는, NS 플래그, CWR 플래그, ECE 플래그, URG 플래그, ACK 플래그, PSH 플래그, RST 플래그, SYN 플래그, FIN 플래그 중 적어도 하나를 포함한다.
상기 NS (1 비트) 플래그는 ECN-nonce 은폐 보호를 의미한다. 상기 CWR (1 비트) 플래그는 혼잡 윈도 축소(Congestion Window Reduced) 플래그로서, 송신측 호스트에 의해 설정된다. 또한, 상기 CWR 플래그는 송신측 호스트가 ECE 플래그가 포함된 TCP 세그먼트를 수신한 것과 혼잡 제어 메커니즘에 의해 응답를 알린다.
상기 ECE (1 비트) 플래그는 ECN-Echo로서, 2가지 역할을 수행한다. SYN 플래그가 (1)로 설정된 경우, TCP 연결의 상대가 명시적 혼잡 통지(Explicit Congestion Notification, ECN)가 가능함을 의미한다. SYN 플래그가 (0)으로 해제된 경우, IP 헤더 셋(set) 내 에 혼잡 경험(Congestion Experienced) 플래그가 설정된 패킷이 정상적인 전송 중에 수신되었다는 것을 의미한다.
상기 URG (1 비트) 플래그는 Urgent pointer 필드의 값이 유효함을 나타낸다. 상기 ACK (1 비트) 플래그는 Acknowledgment 필드의 값이 유효함을 나타낸다. 클라이언트가 보낸 최초의 SYN 패킷 이후에 전송되는 모든 패킷은 ACK (1비트) 플래그가 설정된다.
상기 PSH (1 비트) 플래그는 푸시 기능을 수행한다. PSH 플래그는 수신 애플리케이션에서 버퍼링된 데이터를 푸시할지 여부를 질의한다.
상기 RST (1 비트) 플래그는 커넥션 리셋을 나타낸다. 상기 SYN (1 비트) 플래그는 동기화 시퀀스 번호를 나타낸다. SYN 플래그는 클라이언트와 서버가 보낸 최초의 패킷에만 설정된다. SYN 플래그의 값에 따라서 다른 플래그들의 역할이 변경될 수 있다. 예를 들어, SYN 플래그가 설정된 경우에만 다른 플래그가 유효할 수 있으며 또는 SYN 플래그가 설정된 경우에만 다른 플래그가 해제될 수 있다.
상기 FIN (1 비트) 플래그는 남은 송신측 데이터 없음을 나타낸다.
본 개시의 다양한 실시예들은 특정 관점에서 컴퓨터 리드 가능 기록 매체(computer readable recording medium)에서 컴퓨터 리드 가능 코드(computer readable code)로서 구현될 수 있다. 컴퓨터 리드 가능 기록 매체는 컴퓨터 시스템에 의해 리드될 수 있는 데이터를 저장할 수 있는 임의의 데이터 저장 디바이스이다. 컴퓨터 리드 가능 기록 매체의 예들은 읽기 전용 메모리(read only memory: ROM: ROM)와, 랜덤-접속 메모리(random access memory: RAM: ‘RAM)와, 컴팩트 디스크- 리드 온니 메모리(compact disk-read only memory: CD-ROM)들과, 마그네틱 테이프(magnetic tape)들과, 플로피 디스크(floppy disk)들과, 광 데이터 저장 디바이스들, 및 캐리어 웨이브(carrier wave)들(인터넷을 통한 데이터 송신 등)을 포함할 수 있다. 컴퓨터 리드 가능 기록 매체는 또한 네트워크 연결된 컴퓨터 시스템들을 통해 분산될 수 있고, 따라서 컴퓨터 리드 가능 코드는 분산 방식으로 저장 및 실행된다. 또한, 본 개시의 다양한 실시예들을 성취하기 위한 기능적 프로그램들, 코드, 및 코드 세그먼트(segment)들은 본 개시가 적용되는 분야에서 숙련된 프로그래머들에 의해 쉽게 해석될 수 있다.
또한 본 개시의 다양한 실시예들에 따른 장치 및 방법은 하드웨어, 소프트웨어 또는 하드웨어 및 소프트웨어의 조합의 형태로 실현 가능하다는 것을 알 수 있을 것이다. 이러한 소프트웨어는 예를 들어, 삭제 가능 또는 재기록 가능 여부와 상관없이, ROM 등의 저장 장치와 같은 휘발성 또는 비휘발성 저장 장치, 또는 예를 들어, RAM, 메모리 칩, 장치 또는 집적 회로와 같은 메모리, 또는 예를 들어 콤팩트 디스크(compact disk: CD), DVD, 자기 디스크 또는 자기 테이프 등과 같은 광학 또는 자기적으로 기록 가능함과 동시에 기계(예를 들어, 컴퓨터)로 읽을 수 있는 저장 매체에 저장될 수 있다. 본 개시의 다양한 실시예들에 따른 방법은 제어부 및 메모리를 포함하는 컴퓨터 또는 휴대 단말에 의해 구현될 수 있고, 이러한 메모리는 본 개시의 실시예들을 구현하는 명령들을 포함하는 프로그램 또는 프로그램들을 저장하기에 적합한 기계로 읽을 수 있는 저장 매체의 한 예임을 알 수 있을 것이다.
따라서, 본 개시는 본 명세서의 청구항에 기재된 장치 또는 방법을 구현하기 위한 코드를 포함하는 프로그램 및 이러한 프로그램을 저장하는 기계(컴퓨터 등)로 읽을 수 있는 저장 매체를 포함한다. 또한, 이러한 프로그램은 유선 또는 무선 연결을 통해 전달되는 통신 신호와 같은 임의의 매체를 통해 전자적으로 이송될 수 있고, 본 개시는 이와 균등한 것을 적절하게 포함한다.
또한, 각 블록은 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실행 예들에서는 블록들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
이 때, 본 실시 예에서 사용되는 '~부'라는 용어는 소프트웨어 또는 FPGA(field-Programmable Gate Array) 또는 ASIC(Application Specific Integrated Circuit)과 같은 하드웨어 구성요소를 의미하며, '~부'는 어떤 역할들을 수행한다. 그렇지만 '~부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '~부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '~부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다. 구성요소들과 '~부'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '~부'들로 결합되거나 추가적인 구성요소들과 '~부'들로 더 분리될 수 있다. 뿐만 아니라, 구성요소들 및 '~부'들은 디바이스 또는 보안 멀티미디어카드 내의 하나 또는 그 이상의 CPU들을 재생시키도록 구현될 수도 있다.
또한 본 개시의 다양한 실시예들에 따른 장치는 유선 또는 무선으로 연결되는 프로그램 제공 장치로부터 프로그램을 수신하여 저장할 수 있다. 프로그램 제공 장치는 프로그램 처리 장치가 기 설정된 컨텐츠 보호 방법을 수행하도록 하는 지시들을 포함하는 프로그램, 컨텐츠 보호 방법에 필요한 정보 등을 저장하기 위한 메모리와, 그래픽 처리 장치와의 유선 또는 무선 통신을 수행하기 위한 통신부와, 그래픽 처리 장치의 요청 또는 자동으로 해당 프로그램을 송수신 장치로 전송하는 제어부를 포함할 수 있다.
본 명세서와 도면에 개시된 본 개시의 실시 예들은 본 개시의 기술 내용을 쉽게 설명하고, 본 개시의 이해를 돕기 위해 특정 예를 제시한 것일 뿐이며, 본 개시의 범위를 한정하고자 하는 것은 아니다. 또한 앞서 설명된 본 개시에 따른 실시예들은 예시적인 것에 불과하며, 당해 분야에서 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 범위의 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호 범위는 다음의 특허청구범위에 의해서 정해져야 할 것이다.

Claims (20)

  1. 클라이언트와 서버 사이의 네트워크 연결 제어 장치의 제어 방법에 있어서,
    상기 클라이언트로부터, 네트워크 연결을 위한 제1 패킷을 수신하는 과정;
    상기 네트워크 연결에서 프록시 모듈을 사용할지 여부를 결정하는 과정; 및
    상기 결정에 기반하여 상기 클라이언트와 상기 서버 사이의 네트워크 연결을 수립하는 과정;
    을 포함하는 방법.
  2. 제1항에 있어서,
    상기 네트워크 연결에서 프록시 모듈을 사용할지 여부를 결정하는 과정은,
    상기 클라이언트에게 상기 제1 패킷에 기반한 제2 패킷을 전송하고, 상기 제2 패킷에 대한 응답으로 제3 패킷을 수신한 시간 차이를 기초로 상기 프록시 모듈을 사용할지 결정하는 것을 특징으로 하는 방법.
  3. 제1항에 있어서,
    상기 네트워크 연결에서 프록시 모듈을 사용할지 여부를 결정하는 과정은:
    상기 클라이언트에게, 상기 제1 패킷에 대한 응답이 아닌 제2 패킷을 전송하는 과정;
    상기 클라이언트로부터, 상기 제2 패킷에 대한 응답으로 제3 패킷을 수신하는 과정을 포함하며,
    상기 제2 패킷의 전송 시점과 상기 제3 패킷의 수신 시점의 시간에 기초하여 상기 프록시 모듈을 사용할지 여부를 결정하는 것을 특징으로 하는 방법.
  4. 제3항에 있어서,
    상기 제2 패킷의 전송 시점과 상기 제3 패킷의 수신 시점의 시간차에 기초하여 상기 프록시 모듈을 사용할지 여부를 결정하는 것을 특징으로 하는 방법.
  5. 제3항에 있어서,
    상기 제2 패킷의 전송 시점과 상기 제3 패킷의 수신 시점의 시간차가 임계 값보다 큰 경우에, 상기 프록시 모듈을 사용하기로 결정하는 방법.
  6. 제1항에 있어서,
    상기 프록시 모듈을 사용하기로 결정한 경우, 제4 패킷을 상기 프록시 모듈에게 전송함으로써 네트워크 연결을 수립하는 것을 특징으로 하는 방법.
  7. 제1항에 있어서,
    상기 프록시 모듈을 사용하지 않기로 결정한 경우, TCP/IP 모듈 또는 하드웨어 가속기를 통해서 서버에게 제4 패킷을 전송함으로써 네트워크 연결을 수립하는 것을 특징으로 하는 방법.
  8. 제6항에 있어서,
    상기 제4 패킷은 상기 제1 패킷을 기반으로 버퍼된 패킷인 것을 특징으로 하는 방법.
  9. 제6항에 있어서,
    상기 제4 패킷은 상기 제3 패킷의 플래그를 변경한 것을 특징으로 하는 방법.
  10. 제1항에 있어서,
    상기 프록시 모듈은 사용자 영역 또는 어플리케이션 계층에 속하는 것을 특징으로 하는 방법.
  11. 클라이언트와 서버 사이의 네트워크 연결을 제어하기 위한 장치에 있어서,
    송수신부;
    상기 송수신부를 제어하고, 상기 클라이언트로부터 네트워크 연결을 위한 제1 패킷을 수신하고, 상기 네트워크 연결에서 프록시 모듈을 사용할지 여부를 결정하고,
    상기 결정에 기반하여 상기 클라이언트와 상기 서버 사이의 네트워크 연결을 수립하는 제어부;
    를 포함하는 장치.
  12. 제11항에 있어서,
    상기 제어부는,
    상기 클라이언트에게 상기 제1 패킷에 기반한 제2 패킷을 전송하고, 상기 제2 패킷에 대한 응답으로 제3 패킷을 수신한 시간 차이를 기초로 상기 프록시 모듈을 사용할지 결정하는 것을 특징으로 하는 장치.
  13. 제11항에 있어서,
    상기 제어부는,
    상기 클라이언트에게 상기 제1 패킷에 대한 응답이 아닌 제2 패킷을 전송하고,
    상기 클라이언트로부터 상기 제2 패킷에 대한 응답으로 제3 패킷을 수신하고, 상기 제2 패킷의 전송 시점과 상기 제3 패킷의 수신 시점의 시간에 기초하여 상기 프록시 모듈을 사용할지 여부를 결정하는 것을 특징으로 하는 장치.
  14. 제13항에 있어서,
    상기 제어부는,
    상기 제2 패킷의 전송 시점과 상기 제3 패킷의 수신 시점의 시간차에 기초하여 상기 프록시 모듈을 사용할지 여부를 결정하는 것을 특징으로 하는 장치.
  15. 제13항에 있어서,
    상기 제어부는,
    상기 제2 패킷의 전송 시점과 상기 제3 패킷의 수신 시점의 시간차가 임계 값보다 큰 경우에, 상기 프록시 모듈을 사용하기로 결정하는 장치.
  16. 제11항에 있어서,
    상기 제어부는,
    상기 프록시 모듈을 사용하기로 결정한 경우, 제4 패킷을 상기 프록시 모듈에게 전송함으로써 네트워크 연결을 수립하는 것을 특징으로 하는 장치.
  17. 제11항에 있어서,
    상기 제어부는,
    상기 프록시 모듈을 사용하지 않기로 결정한 경우, TCP/IP 모듈 또는 하드웨어 가속기를 통해서 서버에게 제4 패킷을 전송함으로써 네트워크 연결을 수립하는 것을 특징으로 하는 장치.
  18. 제16항에 있어서,
    상기 제4 패킷은 상기 제1 패킷을 기반으로 버퍼된 패킷인 것을 특징으로 하는 장치.
  19. 제16항에 있어서,
    상기 제4 패킷은 상기 제3 패킷의 플래그를 변경한 것을 특징으로 하는 장치.
  20. 제11항에 있어서,
    상기 프록시 모듈은 사용자 영역 또는 어플리케이션 계층에 속하는 것을 특징으로 하는 장치.

KR1020170144265A 2017-10-31 2017-10-31 네트워크 연결 제어 장치 및 그 방법 KR102354699B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170144265A KR102354699B1 (ko) 2017-10-31 2017-10-31 네트워크 연결 제어 장치 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170144265A KR102354699B1 (ko) 2017-10-31 2017-10-31 네트워크 연결 제어 장치 및 그 방법

Publications (2)

Publication Number Publication Date
KR20190048943A true KR20190048943A (ko) 2019-05-09
KR102354699B1 KR102354699B1 (ko) 2022-01-24

Family

ID=66545636

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170144265A KR102354699B1 (ko) 2017-10-31 2017-10-31 네트워크 연결 제어 장치 및 그 방법

Country Status (1)

Country Link
KR (1) KR102354699B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210045545A (ko) * 2019-10-16 2021-04-27 (주)소만사 엔드포인트의 트래픽에 대한 포워딩 시스템 및 방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007235341A (ja) * 2006-02-28 2007-09-13 Hitachi Ltd 対異常通信防御を行うための装置とネットワークシステム
KR20100033747A (ko) * 2008-09-22 2010-03-31 주식회사 케이티 발신 단말과 수신 단말 간의 데이터 전송을 중개하는 서버에서 데이터 전송을 관리하는 방법 및 장치
JP2011130000A (ja) * 2009-12-15 2011-06-30 Nippon Telegr & Teleph Corp <Ntt> 通信品質データのモニタリング測定装置と方法およびプログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007235341A (ja) * 2006-02-28 2007-09-13 Hitachi Ltd 対異常通信防御を行うための装置とネットワークシステム
KR20100033747A (ko) * 2008-09-22 2010-03-31 주식회사 케이티 발신 단말과 수신 단말 간의 데이터 전송을 중개하는 서버에서 데이터 전송을 관리하는 방법 및 장치
JP2011130000A (ja) * 2009-12-15 2011-06-30 Nippon Telegr & Teleph Corp <Ntt> 通信品質データのモニタリング測定装置と方法およびプログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210045545A (ko) * 2019-10-16 2021-04-27 (주)소만사 엔드포인트의 트래픽에 대한 포워딩 시스템 및 방법

Also Published As

Publication number Publication date
KR102354699B1 (ko) 2022-01-24

Similar Documents

Publication Publication Date Title
US9641650B2 (en) TCP proxy server
US10798199B2 (en) Network traffic accelerator
US9655003B2 (en) Systems and methods for improved wireless interface aggregation
US9210238B2 (en) Method and system for network data flow management
KR101576585B1 (ko) 지연된 확인응답에 의한 tcp 프록시 세션에 대한 버퍼 사용량 감소
US7624184B1 (en) Methods and apparatus for managing access to data through a network device
JP2019520745A (ja) 同時接続の総スループットを改善するためのシステム及び方法
US20060221825A1 (en) Congestion control network relay device and method
JP4377326B2 (ja) 送信ウィンドウサイズの計算方法
US11088957B2 (en) Handling of data packet transfer via a proxy
EP3399707B1 (en) Data flow control for dual ended transmission control protocol performance enhancement proxies
CN116848835A (zh) 实现区域连续代理服务
US10524175B2 (en) Data transmission method and network device
Ko et al. Congestion control for sudden bandwidth changes in TCP
JP7120333B2 (ja) データ中継装置、方法、配信システム、プログラム
KR20190048943A (ko) 네트워크 연결 제어 장치 및 그 방법
US10015288B2 (en) Communication apparatus and control method of communication apparatus
Ehsan et al. Modeling TCP performance with proxies
WO2020154872A1 (zh) 一种传输控制协议加速方法和装置
KR101609922B1 (ko) 피어-투-피어 기반 데이터 전송 장치 및 방법
Xin et al. TCP performance in wireless networks with delay spike and different initial congestion window sizes
JP2012134907A (ja) Tcp転送装置およびそのプログラム
US10721153B2 (en) Method and system for increasing throughput of a TCP/IP connection
Islam et al. An Explicit Loss and Handoff Notification Scheme in TCP for Cellular Mobile System
KR101396785B1 (ko) 네트워크 장치에서 tcp 기능을 수행하는 방법

Legal Events

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