일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 신경망
- 삼성
- Bidirectional Associative Memory
- SSM
- NarwalFreo
- 구글 앱 엔진
- Google App Engine
- 패턴인식
- 물걸레로봇청소기추천
- 동아리
- 갤럭시탭S8울트라
- 고려대학교
- 증강현실
- 나르왈프레오
- 멤버십
- 파이썬
- 하이퍼바이저
- Python
- 패턴 인식
- 삼성소프트웨어멤버십
- Friendship
- 가상화
- Neural Network
- 신경회로망
- hopfield network
- BAM
- 빅데이터
- 인공지능
- 물걸레자동세척로봇청소기
- 삼성전자 소프트웨어멤버십 SSM
- Today
- Total
정보공간_1
[4기 신촌 김형진] UDP Hole Punching 소개 본문
안녕하세요.
신촌멤버십 22-2기 김형진입니다.
네트워크에서의 Hole Punching이라는 개념에 대해 소개하도록 하겠습니다.
하지만, 실제로 많은 수의 컴퓨터들이 아래 파란색으로 표기된 클라이언트의 형식을 가지고 있습니다. 즉 NAT에 연결되어 있는 경우를 말합니다.
이 경우의 공인IP는 모든 공유기에 연결된 클라이언트가 동일하게 다음과 같이 나오게 됩니다.
즉, 공인IP만을 이용해서 클라이언트를 구별할 방법이 없습니다.
Hole Punching이란, 이러한 Client-To-Client 통신을 하기 위해, 직접 통신이 불가능한 클라이언트 간에 “Relay” 서버를 도입하여 통신을 하는 것입니다.
하지만, Relay서버만 두고 통신을 할 수는 없습니다.
즉, Hole Punching은 두 개 이상의 서버를 두어, 직접 통신을 할 수 없는 두 클라이언트 간의 통신을 원활하게 하도록 하는 통신 기법입니다.
일반적인 클라이언트는 다음과 같은 4가지 유형이 존재합니다. (이하 편의상 번호로 칭하겠습니다.)
Relay 서버를 거쳐 통신하는 경우에는 다음 그림과 같이 됩니다.
여기에 덧붙여 Stun서버는 다음과 같이 모든 클라이언트 간에 다른 클라이언트에 대한 정보를 주고받습니다.
상기한 내용을 정리하면, Hole-Punching을 이용한 Client-To-Client 서비스의 구현은 다음과 같은 일련의 순서로 이루어집니다.
1) Stun 서버에 각 클라이언트 접속정보 저장할 공간을 둔다.
2) 각 클라이언트는 Stun서버에 자신의 접속정보를 보낸다.
3) 다른 클라이언트는 Stun을 통해 접속방법을 파악한다.
4) 유형 2, 3인 경우 Relay서버를 사용하여 접속한다.
6) Relay서버는 각 클라이언트와 항시 연결되어야 한다.
따라서 TCP의 장점을 이용할 것이 아니라면 Hole Punching을 구현하기 위해서는 일반적으로 UDP 통신을 이용하는 것이 더 좋습니다.
'IT 놀이터 > Elite Member Tech & Talk' 카테고리의 다른 글
[4기 신촌 김형진] 자연어 처리와 형태소 분석의 기초 #2 (0) | 2013.10.28 |
---|---|
[4기 신촌 김형진] 자연어 처리와 형태소 분석의 기초 #1 (0) | 2013.10.28 |
[4기 부산 김솔] Codeigniter 3 (0) | 2013.10.28 |
[4기 부산 김솔] Codeigniter 2 (0) | 2013.10.28 |
[4기 부산 김솔] Codeigniter 1 (0) | 2013.10.28 |