IP 공유기 연결 관련 질문입니다.
안녕하세요. 제가 이번에 가정 내부와 외부 간 통신을
수행하는 어플을 만들어 보려고 하는데요.
IP 공유기를 사용하면 조금 쉽게 구현을 할 수 있지
않을까 생각이 듭니다. 근데 제가 IP 공유기를 사용한
적이 없어서 모르는 점이 많네요. 그래서 고수님들께
몇가지 질문을 여쭙니다.
그럼 우선 제가 생각하는 연결도를 그려보겠습니다.
영차~
A
|
+----- IP 공유기 ----- 인터넷
|
B 가정 <===> 외부
끙... 알아 보시겠는지요?
우선 컴퓨터 A와 B가 가정내에서 IP 공유기에 연결되어
있고, IP 공유기를 통해 외부로 연결 됩니다.
그럼 몇 가지 질문을 올립니다.
질문 1:
A와 B는 제 임의로 IP를 할당할 수 있습니까? 예를 들어
A는 192.168.0.1, B는 150.234.21.123 등으로요. 만약
그렇다면 A와 B간 통신을 하는 응용 프로그램을 작성하는
것은 매우 쉽겠죠.
질문 2:
만약 질문1과 같은 기능이 허용되지 않아서
A와 B가 IP 공유기로 부터 dhcp를 이용하여 IP를
배당받아야만 한다면 응용 프로그램에서 서로간에 어떻게
통신을 구현해야 할까요?
질문 3:
외부에서 보자면 A와 B가 같은 IP를 갖은 것으로 보일
것입니다 (하나의 IP 공유기에서 나온 내용이므로).
이것이 문제가 되지는 않습니까? 예를 들어 A가 외부의
서버에 요청한 내용에 대해 A가 응답을 받고, B가 외부의
서버에 요청한 내용에 대해 B가 응답을 받는데 문제가
없을까요?
아... 궁금한 점은 훨씬 더 많은데, 잘 정리가 안 되네요.
고수님들의 답변을 기다리고 있겠습니다.
그럼...
질문1 의 답변공유기에 보통 스위칭 허브가 달려있습니다. 이 스위
질문1 의 답변
공유기에 보통 스위칭 허브가 달려있습니다. 이 스위치에 물리는 A, B 는 같은 IP 대역을 사용해야 한다고 알고 있습니다. 예를 드신 192.168.0.x 대역은 C 클래스일 것이고 150.234... 도 C 나 뭐 그 이상일 수도 있겠지만 하여튼 서로 대역이 틀린 것이므로 좋은 (높은 레벨) 스위치가 아니면 서로 통신이 되지 않을 것 같습니다.
질문2 의 답변
질문의 요지가 서로 어떤 IP 를 할당 받았는지 모르니까 어디로 쏴야할지 모르겠다는 것으로 이해하겠습니다. 보통 윈도우 같은 경우에는 이것을 컴퓨터 브라우징이나 그런 걸로 해결하겠지만 보통의 경우 브로드캐스팅 정도로 충분히 알아낼 수 있다고 생각합니다.
질문1 과 질문2 의 내용을 보면 왜 같은 IP 대역을 사용하면 안되는지 궁금하고 서로 다른 대역을 사용해야 하는 이유가 있는지도 궁금합니다. 그냥 A 에 192.168.0.2 B 에 192.168.0.3 이렇게 지정해버리면 안되나요?
질문3 의 답변
말씀하신대로 외부에서는 하나의 IP 로 보입니다. 질문하신 문제 때문에 포트를 나눠서 이 포트로 오는 패킷은 특정 내부 IP 로 라는 포트 포워딩이라는 기술이 있습니다. NAT 라고도 합니다만 공유기들은 포트 포워딩이라고 많이들 합니다. 많이 쓰이는 게임이나 메신저의 경우에는 패킷 검사를 하거나해서 자체적으로 해결해주기도 합니다.
최초의 접속이 외부에서 공유기 안쪽 컴퓨터들로 들어올 때에는 포트 포워딩 등을 이용해서 해결하고, 최초의 접속이 내부에서 외부로 나가는 경우에는 문제될 것이 없습니다. 어떻게든 공유기가 해당 패킷들을 변조해서 알맞게 외부로 보내고 응답을 다시 변조해서 원래 보낸 내부 컴퓨터에 전달해줍니다.
이런 내용은 리눅스와 NAT 를 함께 검색해보시면 기본적인 개념과 실제 응용법 등을 이해하실 수 있습니다. wiki.kldp.org 에서도 검색해보시고 google 에도 많은 정보가 있을 겁니다.
그럼, 이만...
Re: IP 공유기 연결 관련 질문입니다.
우선 해당 어플이 무엇인지 모르지만, 그 관점이 아닌, IP공유기 사용에 대한 관점에서 말씀을 드리겠습니다.
해당 IP 를 할당할 수는 있습니다. 다만, 서로간의 통신시에는 문제가 있을 것입니다.(할당하는 의미가 없다는 것이죠.)
위처럼 서로 다른 IP 대역인경우가 그렇습니다.(단지 예를 든것이라면 모르지만요.)
같은 IP대역, C class 보통공유기가 192.168.0.xx 대의 C class 를 쓰니 그에 맞게 설정해서 사용하시면 될 것입니다.
이부분은 만드시려는 응용프로그램에 대한 부분 같은데.. 통신하려는 해당 IP 를 알고 있으면 문제는 없을 듯 합니다.
질문1 이 가능하니 별문제가 없을 듯 하구요.
또한 dhcp 라고 해도, 특정 PC 에 동일 IP 를 지정하게 할 수도 있습니다.
매번 바뀌는 것이 아니라, 한번 지정이 되면, 계속 그 IP 로 할당받게 된다는 것이죠.
A 와 B 는 구분이 가능합니다.
공유기 에서 포워딩 부분을 보시면, 좋을 듯 합니다.
더 자세한 설명은 다른 분들이 보충해 주시기 바랍니다.
그럼.
사용자가 바꾸어 나가자!!
= about me =
http://wiki.kldp.org/wiki.php/offree , DeVlog , google talk : offree at gmail.com
3분차이로 너무 똑같은 답변이... -_-;
3분차이로 너무 똑같은 답변이... -_-;
bugiii 님의 답변 감사합니다. 덕분에 궁금증이많이 풀렸습니다
bugiii 님의 답변 감사합니다. 덕분에 궁금증이
많이 풀렸습니다. 제가 예로 든 A와 B의 IP 주소는
딱히 어떤 이유가 있어서 그렇게 대역차이를 둔 것이
아닙니다. 그냥 이것도 가능한지 싶어서요 ^^;
그리고 질문2 의 답변에서 한 가지 해법으로 제시하신
브로드캐스팅이라하면 A에서 '나는 A 인데 IP 주소는
뭐' B에서 '나는 B 인데 IP 주소는 뭐' 하는 것을 서로가
catch 해서 상대의 주소를 인식하는 방식인가요?
바쁘신 시간 쪼개셔서 답변을 해 주셔서 정말 감사
합니다~
서로 자기 자신을 알리는 것도 한 방법이겠구요.다르게 생각해본다면
서로 자기 자신을 알리는 것도 한 방법이겠구요.
다르게 생각해본다면, 공유기 밑의 모든 컴퓨터들이 특정 UDP 포트를 감시하도록 하고, 어떤 컴퓨터가 이 포트로 브로드캐스팅하면 (스위치 밑단의 모든 컴퓨터들에게 보내니까) 응답하도록 해주면 그 패킷의 출발지에 IP 가 묻어서 오고 그 패킷에 인식번호나 이름 정도를 포함시키면 상대방을 인식할 수 있지 않을까 합니다.
필요할 때 브로드 캐스팅해서 알아보고 아~ 보내야 할 컴퓨터 IP 가 그거구나 하고 나서 통신을 시작하면 괜찮을 것 같습니다.
감사합니다~
감사합니다~
댓글 달기