친추
카톡
라인상담
라인으로 공유
페북공유
◎위챗 : speedseoul
라우터는 다른 라우터를 경유해서 패킷을 보내는 게 당연히 가능하다. 따라서 공유기에 공유기를 또 물려서 작동시켜도 잘 작동한다. IP항목을 보면 알겠지만 IPv4 주소는 고갈됐다고 하는데 이런 식으로 공유기를 문어발처럼 확장하면 영원히 IP 주소가 고갈될 일이 없는 게 아닐까 생각할 수 있지만[13] 결론부터 말하자면, 안 된다.공유기는 포트 포워딩이라는 기법으로 작동한다.[14] 하나의 IP에서 사용할 수 있는 포트의 숫자는 65,535개인데 네트워크 통신을 하는 모든 프로그램은 각자 최소 하나 이상의 포트를 점유하고 있다. 따라서 공유기 아래에 물린 컴퓨터가 각각 단 하나의 포트만을 점유한다고 가정해도 한 공인 IP에 물릴 수 있는 최대 컴퓨터 숫자는 65,535개가 한계다.[15] 또한 하나의 컴퓨터는 보통 수십 개 이상의 네트워크 포트를 사용한다. 윈도우 자동업데이트나 웹 브라우저, 게임 소프트웨어 각각이 포트를 점유하고 있다. 특히 웹 브라우저는 정말 많은 수의 포트를 먹어치운다. 따라서 공유기로 확장할 수 있는 네트워크의 규모는 겨우 몇백 개 정도에 불과하다. 공유기 아래에 문어발로 물린 다른 공유기가 있어도 그 모든 포트 부담은 공인 IP를 할당받고 있는 최종 단계의 공유기에 다 몰린다. IP는 수천 수만개가 사용 가능해질지 몰라도 포트가 모자라 통신이 안 되는 것이다. 물론 통신하고 나서 포트를 닫아버리면 다른 프로그램이 포트를 재활용할 수 있긴 하지만 그런 식의 돌려막기도 한계가 명백하다. 특히 서버용도의 프로그램은 항상 응답대기 상태를 유지해야 하기 때문에 포트를 닫을 수 없다. 또한 클라이언트 프로그램은 항상 약속된 포트 번호를 사용해 서버와 통신을 시도하므로(웹 브라우저는 특별히 포트 번호를 쓰지 않으면 80번 포트(http)나 443포트(https)를 통해 서버와 통신을 시도한다) 서버는 단 두 대도 IP공유가 힘들다. 이 경우에는 리버스 프록시를 사용하면 된다.포트 포워딩은 Network Address Translation(NAT)기법 중 하나로 서버에서만 하는 게 아니다. 서버에서 응답을 줄 때 상대방 IP주소로 패킷을 날리는데 그 IP가 사설 IP일 리가 없잖은가. 정말로 서버가 멍청하게 사설IP로 응답 패킷을 날리면 그 패킷은 서버실 바깥으로 나가지 못한다. 공인 IP로 응답 패킷을 주게 되는데 그게 공유기 아래의 누구의 컴퓨터로 가야 하는지는 공유기만 알 수 있다. 하지만 응답을 날리는 주체는 서버다. 그러면 공유기는 서버한테 어떤 주소로 응답을 날려달라고 요청 패킷 보낼 때 미리 알려줘야 하는데 컴퓨터 식별을 위해 서버에 보낼 수 있는 정보는 딱 하나 있는 IP주소와 6만개 정도 있는 포트 번호 뿐.클라이언트가 요청을 보낼 때는 반송 주소도 같이 적어서 보내는데[16] 그 반송 주소가 192.168.1.22:18442 같은 사설 IP주소이다. 공유기는 이걸 NAT를 통해 자기의 공인 IP주소인 165.246.123.123:53241으로 바꿔서 서버에 날려준다. 그리고 공유기는 자신의 주소 변환 테이블에 165.246.123.123:53241 -> 192.168.1.22:18442 라는 정보를 담아놓는다. 서버는 165.246.123.123:53241로 응답 패킷을 날리고 공유기가 이 패킷을 받으면 자신의 주소 변환 테이블을 검색해서 192.168.1.22:18442라는 최종 목적지 주소를 발견하고 패킷을 넘겨(포워딩)준다. 이런 원리로 작동하기 때문에 공유기에 물릴 수 있는 컴퓨터 수가 아무리 많아도 65535개가 되는 것이다. 공유기 자신도 몇 개 써야 하므로 실제로는 더 적다.더 쉬운 예시를 들자면, 내가 편지를 쓰는데 반송 주소에 적을 수 있는게 딱 건물 주소하고(공인 IP주소) 사서함번호(1~65535)뿐이라고 해 보자. 편지 답장을 엉뚱한 방에 안 보내기 위해서 그 건물에 입주할 수 있는 입주자의 수는 65535명을 넘을 수 없다. 공유기가 딱 이런 원리다.위에 언급한 포트 돌려막기로 동시에 사용하지만 않으면 공유기 아래에 65535개가 넘는 컴퓨터를 물릴 수도 있다. 하지만 물릴 수 있다 뿐이지 그게 동시에 인터넷을 사용할 수는 없게 된다. 사용이 끝난 포트를 닫고 다른 컴퓨터용으로 재할당하는 시분할기법으로 써야 한다. 아까 NAT주소변환 기법에 대해서 설명한 대로, 이런 식으로 해제와 재할당을 반복하려면 공유기의 CPU가 정말 무시무시하게 강력해야 한다. 게다가 이건 서버에서는 못 쓰는 방법이고. 이 세상에 컴퓨터가 PC만 있는 게 아님을 명심하자.