ko en ko en en en sv en ko ko ko ko ko ko ko ko ko en ko ko ko ko ko ko ko nb ko ko ko ko nb ko ko ko en en ko ko nb en ko ko nb en ko ko ko ko ko nb ko ko ko ko ko ko ko en ko ko nb ko ko ko ko ko nb ja ko ko ko ko ko ko ko ko en ko ko nb ko ko ko ko ko ko en ko ko ko ko nb ko ko ko ko ko nb ko ko ko ko ko ko ko ko ko en ko ko ko ko nb ko ko ko ko ko ko ko nb ko ko ko ko ko ko en ko ko ko ko el ko ko ko ko en ko en ko ja ko en en en en en en en ko ko en ko ko ko ko ko ko ko ko en ko ko en en nn pl ko ko ko ko ko ko ko ko ko ko ko fr en en en ko ko ko ko en
혹시 HolePunching 활용한 예제소스 있을까요? | KLDP
홈 ›› Forums ›› 공부 ›› 프로그래밍 QnA
P2P 기능 구현 관련하여 NAT 뒤에 연결된 클라이언트끼리 1:1 통신이 되도록 해야하는데요
그럴려면 Hole Punching 기능을 사용해야 하는걸로 알고 있습니다
클라이언트끼리 파일송수신이 되게 하기 위해선 UDP 보단 TCP 를 사용하는게 좋을거 같은데요..
혹시 TCP Hole Punching 기능관련된 예제소스 어디 없을까요..?
예제라기 보다.. 원리가 UDP와 동일합니다...
다만 UDP 홀펀칭은 되는데 TCP홀펀칭은 안되는 NAT 장비들이 존재합니다.
그럼 UDP 든.. TCP든 홀펀칭이 이용된 참고할만한 예제소스같은거 구할수 없을까요..?^^
검색해보면 아래와 같은 글들이 보이네요.. 자세히는
한 5년전에 홀펀칭 고민했을 때, python으로 10줄이 안되는 코드 작성해서 테스트 했더니 동작했던 기억이 나네요..
네트워크 쪽은 원리에 비해 코드가 복잡하니까.. 먼저 동작원리를 파악하는게 도움이 되실겁니다.
글쓴이: dhyoon1 / 작성시간: 화, 2013/09/24 - 2:43오후
udp hole punching 실패
글쓴이: TMK / 작성시간: 수, 2017/03/15 - 5:42오후
port restricted cone 타입의 NAT 두 대로 hole punching 기능을 테스트 하고 있는데, 홀펀칭이 성공하지 못하네요.
장비하고 관련이 있는 것인지..?
참 신기한 것은 NAT A가 먼저 NAT B로 패킷을 쏘면 통신이 되는데, 그 반대는 되지 않습니다.
물론 path를 열어 놓기 위해 3번 반복해서 쏘는데.. 처음에 어떤것이 쏘는것이 중요한지 쏘는 타이밍에 따라 성공이 될때도 있고 안될때도 있는데, 이유를 혹시 아시는지요.
글쓴이: simminjo / 작성시간: 화, 2013/09/24 - 1:38오후
STUN 없어도 NAT 뒤의 클라이언트간에 통신은 가능합니다.
중계해주는 서버를 거치면 가능해지죠..REALY 방식이라고도 합니다.
직접 구현해본다고 학생때 설쳐보다가 결국 실패하고 좌절했던 기억만 남아있네요.
Opensource에 기여하는 것이 꿈입니다.
내가 만든 코드를 모두가 사용할 때 까지~
글쓴이: dhyoon1 / 작성시간: 화, 2013/09/24 - 2:44오후
릴레이서버는 클라이언트 간의 파일송수신엔 직접적으로 관여하지 않아야 해서요..ㅎㅎ
릴레이서버는 단지 클라이언트끼리 public IP와 Private IP 정보만 중계하는 역할을 해야하거든요.. 안그럼 P2P연결이라고 볼수가 없어서..
글쓴이: simminjo / 작성시간: 화, 2013/09/24 - 3:36오후
보시다 보시면 아시겠지만 공유기 방식마다 홀펀칭 방식이 다릅니다.
half cone , full cone, 또 다른방식 등등 각각의 방식에 따라 펀칭 기법이 달랐던것으로 기억합니다.
해당 문제로 인해 iptime측에 정보를 요청했으나 공개해주진 않더군요.
홀펀칭이 결국은 되지않는 상황도 발생할수 있습니다.
nat 밑의 nat밑의 nat 뭐 이런 이상한 경우가 나올수 있는데 어떤 케이스에선 결국 안뚫리는경우가 있더군요.
그런경우는 결국 relay방식을 쓸수밖에없다고 본듯합니다.
하도 오래전에 해당 부분때문에 고심했던지라....자세히는 기억이 안나네요.....화이팅입니다......
Opensource에 기여하는 것이 꿈입니다.
내가 만든 코드를 모두가 사용할 때 까지~
글쓴이: shint / 작성시간: 화, 2013/09/24 - 2:04오후
IP 대역이 서로 다른 상황에서 서로 통신하기 위해서는
Virtual Box같은 가상 PC 설치한 후에
xxx.xxx.xxx.254인가? 255인가? 멀티캐스팅인가? 뭔가로 송수신 하면 되던데요. ㅇ_ㅇ;;
홀드 펀칭이니 STUN 이니... 말은 많은데 뭔지는 잘 모르겠네요.
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
글쓴이: dhyoon1 / 작성시간: 화, 2013/09/24 - 2:45오후
효율적인 통신이 되게 하려면
홀펀칭을 쓰는게 답인거 같더라구요..
글쓴이: shint / 작성시간: 화, 2013/09/24 - 3:14오후
UPNP 를 열어주거나... 다양한 방식이 가능해 보입니다.
DirectPlay 같은 경우는 서버에 클라이언트가 접속하게 되면. 클라이언트를 자동으로 연결해 준다고 하네요. ㅇ_ㅇ;;
플래시도 커뮤니티 서버를 사용하면 그런것이 가능하던데요...
문제는. 임의로 사용자의 포트를 강제로 열고 드나드는것은 위법입니다.
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
P2P가 반드시 효율적이지는 않습니다.. 피어중에
글쓴이: klenui / 작성시간: 화, 2013/09/24 - 5:11오후
P2P가 반드시 효율적이지는 않습니다.. 피어중에 성능이 안좋은 녀석이 있을 수도 있고.. 엉터리 정보를 보낼 수도 있습니다.
P2P의 강점은 네트워크 파괴에 대한 내성과 네트워크 대역폭의 분산입니다..
한국은 네트워크 대역폭의 단가가 비싼편에 속해서 가격면에서 P2P가 이득이 있습니다만 단순히 효율만 놓고 본다면 P2P가 낫다고는 말할수 없습니다.
물론 LAN상황이라면 P2P가 가장 효율적인것 맞습니다.
기술적인 개념 검증이라면 여러모로 연구해 보기 좋은 주제입니다만, 실무에서는 쉬운 길을 어렵게 가는 방법일 수도 있습니다..
텍스트 포맷에 대한 자세한 정보
텍스트 양식 Filtered HTMLBBCodeTextileMarkdownPlain text
텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
사용할 수 있는 HTML 태그:
다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다:  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  . 지원하는 태그 형식:  , [foo].
web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다:  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  . 지원하는 태그 형식:  , [foo].
사용할 수 있는 HTML 태그:
web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다:  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  . 지원하는 태그 형식:  , [foo].
You can use Textile markup to format text.
사용할 수 있는 HTML 태그:
다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다:  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  . 지원하는 태그 형식:  , [foo].
Two or more spaces at a line's end = Line break
Double returns = Paragraph
*Single asterisks* or _single underscores_ = Emphasis
**Double** or __double__ = Strong
This is [a link](http://the.link.example.com "The optional title text")
For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
사용할 수 있는 HTML 태그:
HTML 태그를 사용할 수 없습니다.
web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
줄과 단락은 자동으로 분리됩니다.
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.
서버 상면/회선 지원: 서울시립대
전체 스폰서 목록 | 사이트 관리자에게 연락하기