1. 2009. 12. 10. 16:00 Library/Hacking & Research
http://en.wikipedia.org/wiki/STUN

두 지점의 공유기(net) 머신을 경유하여 클라이언트기리 접속을 이루는 기법.
Hole Punching 이라고도 알려져있고,

두 지점에서 Net 을 경유해 우선 서버에접속.
그후에 두지점의 정보를 교환 시켜주고,
두지점끼리 접속을 이루게 만들면 서버는 더이상 할 일이 없어집니다.
WSAStartup : http://msdn.microsoft.com/en-us/library/ms742213(VS.85).aspx
socket : http://msdn.microsoft.com/en-us/library/ms740506(VS.85).aspx
send : http://msdn.microsoft.com/en-us/library/ms740149(VS.85).aspx
sendto : http://msdn.microsoft.com/en-us/library/ms740148(VS.85).aspx
recv : http://msdn.microsoft.com/en-us/library/ms740121(VS.85).aspx
recvfrom : http://msdn.microsoft.com/en-us/library/ms740120(VS.85).aspx
우선 소켓 함수를 불러서 소켓을 형성 합니다.
각자의 IP 정보 , PORT 등의 정보를 서버에 넘겨줍니다.
서버의의 IP 정보 , PORT 등의 정보를 클라이언트에게 넘겨줍니다.
클라이언트 들은 받은 IP 정보 , PORT 등을 이용해 다른 클라이언트와 연결 합니다.

서버가 볼때는 net 이 가진 공인 아이피를 얻을 을수 있는반면 , 사설 아이피는 볼수 없습니다.
궂이 알아오겠다면 gethostname, gethostbyname 을 이용해서 찾아낸다음 서버로 같이 보냅니다.
gethostname : http://msdn.microsoft.com/en-us/library/ms738527(VS.85).aspx
gethostbyname : http://msdn.microsoft.com/en-us/library/ms738524(VS.85).aspx

TCP 는 세션(연속) 을 이용해서 지속적인 연결을 합니다. 데이터 다운/업 또한 무결성 여부를 판별 합니다.
connect : http://msdn.microsoft.com/en-us/library/ms737625(VS.85).aspx
listen : http://msdn.microsoft.com/en-us/library/ms739168(VS.85).aspx
accept : http://msdn.microsoft.com/en-us/library/ms737526(VS.85).aspx
bind : http://msdn.microsoft.com/en-us/library/ms737550(VS.85).aspx
UDP 는 다운/업 로드 만을 하고 연결을 하지 않습니다. 데이터의 무결성을 고려 해주지 않습니다.
bind : http://msdn.microsoft.com/en-us/library/ms737550(VS.85).aspx
recvfrom : http://msdn.microsoft.com/en-us/library/ms740120(VS.85).aspx

bind 는 어떤 IP 로 부터 접속이 올것 이라는 것을 예상 하고 사용 합니다.
connect 는 그저 서버 ip 로 접속을 시도 하여 승인이 되면 통신 하죠.
Posted by Nightly Luna
,
® © Tanny Tales
/ rss