공유기를 사용할때 물려있는 pc가 서버가 되는 경우 포트포워딩이나 dmz등을 설정하지 않는다면 다른 client가
내 pc에 접속할 수 없다. 하지만 공유기를 사용하는 client경우 서버와 한번 연결이 되면 별다른 문제가 생기지 않고 잘 통신이 된다. server에서 전달한 데이터가 client에 접근할때 공인 ip(공유기ip)로 접근을 할텐데 이경우에 공유기에 연결되있는 수개의 pc중 자신이 어디로 가야되는지 어떻게 아는지 ???
(일반 소켓통신은 ip와 port번호만 요구하는걸로 알고있는데)
클라이와 서버간에 연결이 성공하고 그 연결이 종료 되기 전까지는 항상 연결 되어 있다.
클라이가 서버와 연결이 되면 이 상태에서 네트워크는 어떻게 되어 있는지를 보면
아.. 귀찮아... 여튼 접속 종료 하기 전에는 해당 연결 라인이 살아 있다고 보면 된다.
포트포워딩은 공유기의 일정 포트를 공유기에 연결된 특정 포트와 연결 시켜 주게 됩니다
즉 공유기의 공인 IP가 210.118.75.120 이고 제가 공유기로부터 할당받은 아이피가 192.168.0.30 일 경우 0.30 IP 에서 서버를 열고 포트 번호를 67423 라고 설정하였을 경우
공유기에서 포트포워딩을 통해 210.118.75.120 의 포트 67000 을 0.30의 포트 67423 으로 연결 하게되면
소켓에서 210.118.75.120 그리고 포트 67000으로 접속하게 된다면
공유기 내부에 192.168.0.30 의 67423에 연결되게 되는것이죠
즉, 포트포워딩을 하면 공유기 내부에 연결된 특정 포트를 외부로 공개시켜주는 기능이 되는겁니다
하지만 클라이언트가 공유기 밑에 있고 공인 IP인 서버로 접속할 경우엔 문제 될것이 없습니다 우리가 모르는 세계에서 지들끼리 교환하기 때문이죠, 하지만 자세한 이야기를 알고싶으시다면 OSI 모형을 공부해 보십셔 학부생이라면 씨발 닥치고 네트워크 수업들으세열 ^_^