이 포스트는 널널한 개발자님 강의를 참조하며 작성하였습니다.
Port Restricted Cone방긱은 External Port + Remote IP + Remote Port까지 제한을 두는 방식이다. 즉, 뭔가 외부에서 내부로 Inbound될 때 NAT Table을 보고 External Port + Remote IP + Remote Port까지 검색하는 방식이다. 192.168.12.10:3000 호스트가 15.15.15.15:5000와 연결하고 External Port를 8080으로 두었다고 하자. 그런데 만약에 192.168.0.10:3001이 15.15.15.15:7777에 연결을 하면 어떻게 될까? 일단 Outbound될 때 NAT Table에 Local IP는 192.168.0.10으로 같게 기술되고 Local Port는 3001번으로 하고 Remote IP도 동일하게 15.15.15.15이고 Remote Port가 7777로 기술될 것이다. 그럼 여기서 External Port는 어떻게 될까? 왠만하면 어떤 호스트에 대가지고 포트번호를 매핑할 때 식별만 가능하다면 최대한 같은 포트번호를 기술한다. 그래서 Cone계열은 최대한 포트번호를 유지한다. 이렇게 함으로 포트번호가 예측이 가능하며 그에 비해 보안성이 떨어지는 점이 있다. NAT를 사용하게 되면 보안때문에 NAT를 쓰는게 아니라면 여러 호스트가 인터넷을 잘써야 할 것이다. 근데 NAT는 무조건 P2P통신을 방해한다. 그래서 이 P2P통신 방해를 막기 위해 Port Restricted Cone방식을 사용한다. 근데 생각해보면 Port Restricted Cone방식은 Semmetric방식과 유사하다는 생각이 들것이다. Symmetric방식의 경우는 뭔가 연결할 때 External Port를 랜덤생성한다. 즉, 세션마다 다른 포트와 매핑을 시켜줌으로 보안성을 높여주고 예측을 못하게 한다. 그래서 P2P통신을 불가능하게 한다.
💡 참고
P2P통신은 게임만 있는게 아니고 WebRTC같은 화상통화도 P2P통신을 사용한다.