가장 높은 TCP 포트 번호는 65535입니다. NAT를 수행하는 라우터가 내부 네트워크의 호스트를 대신하여 인터넷에 연결될 때마다 임시 포트를 사용하는 경우 이는 라우터에 포트가 부족할 수 있음을 의미합니까? 라우터에 포트가 부족하면 어떻게 되나요?
답변1
NAT를 수행하는 라우터가 내부 네트워크의 호스트를 대신하여 인터넷에 연결될 때마다 임시 포트를 사용하는 경우 이는 라우터에 포트가 부족할 수 있음을 의미합니까?
이론적으로는 그럴 것 같지 않습니다.
NAT는 (일반적으로) 튜플 {소스 IP, 대상 IP, 소스 포트, 대상 포트} 매핑에서 작동합니다. 라우터의 경우 IP 주소 중 하나는 그 자체이고 튜플의 나머지 세 구성 요소는 일반적으로 연결마다 다릅니다. (응답이 아닌) 나가는 패킷에 NAT를 적용한다고 가정합니다. 소스 IP, 대상 IP 및 대상 포트가 알려지고 고정됩니다. 소스 포트는 다를 수 있습니다. 이는 동일한 호스트의 동일한 서비스에 대해 약 65,000개의 동시 연결을 제공합니다. 일반적으로 여러 서비스에서 여러 서버에 액세스하게 되므로 숫자가 실제로 빠르게 합산될 수 있습니다.
수백 개의 동시 연결만 처리할 수 있는 연결 상태 테이블의 공간이 부족해질 가능성이 높습니다. 수천 개의 동시 연결을 처리할 수 있다고 해도 방금 고려한 숫자보다 여전히 훨씬 적습니다.
공간이 부족하면 다음에 일어나는 일은 구현에 따라 다릅니다. 라우터 소프트웨어는 추가 연결을 거부하거나 가장 최근에 사용된 연결을 제거할 수 있습니다. 그럼에도 불구하고 해당 연결 시도에 대해 오류 메시지를 반환할 수도 있고 반환하지 않을 수도 있습니다.
하나 있다CloudFlare에 관한 훌륭한 기사연결 추적의 Linux 구현에 대한 일부 정보를 설명합니다.
답변2
예, NAT 라우터에 포트가 부족할 수 있습니다.
이 시점에서 일어나는 일은 특정 NAT 라우터 구현에 의해 결정되지만 일반적으로 나는 다음과 같은 일반적인 전략을 기대합니다.가장 최근에 사용됨활성 연결(즉, 가장 오랫동안 트래픽 없이 유휴 상태였던 연결) 및 해당 포트를 재사용합니다.
그러나 관련 RFC에 따르면 TCP 연결은 4가지 식별자의 조합으로 식별됩니다.
- 소스 IP 주소
- 대상 IP 주소
- 소스 포트
- 목적지 포트
그들 중 하나만의 차이점은 (그리고~ 해야 하다be) 두 연결을 구별하기에 충분합니다.
호스트는 일반적으로 나가는 연결마다 하나의 포트를 소스 포트로 사용하지만 NAT 라우터는 다른 세 가지 식별자가 모두 동일하지 않은 한 포트 번호를 재사용할 수 있습니다.
따라서 외부 IP 주소 NNNN을 사용하는 NAT 라우터는 하나의 나가는 연결을 NNNN:60000 -> 1.2.3.4:80에 매핑하고 또 다른 동시 연결을 NNNN:60000 -> 4.5.6.7:80에 매핑할 수 있습니다. 왜냐하면 대상이 다른 IP 주소이면 충분하기 때문입니다. 패킷을 두 개의 개별 연결에 속하는 것으로 식별합니다.
따라서 NAT 구현이 많은 수의 연결을 처리하도록 적절하게 설계되면 실제로 포트 번호 고갈이 발생할 가능성이 없습니다.
답변3
예, 컴퓨터가 네트워크 연결을 너무 많이 여는 것처럼 포트가 부족할 수 있습니다.
차이점은 NAT 라우터에는 오류를 보고하는 좋은 방법이 없기 때문에 새 연결에 대한 패킷을 자동으로 삭제할 수 있다는 것입니다.
답변4
예, 이론적으로 라우터에는 포트가 부족할 수 있습니다.
표준이 이 상황에서 라우터가 수행해야 하는 작업을 지정하는지 모르겠습니다. 그러나 대부분의 (TCP) 연결은 상대적으로 수명이 짧기 때문에 합리적인 첫 번째 단계는 패킷을 유지하고 (매우) 짧은 시간 내에 다시 시도하는 것입니다. 포트를 사용할 수 없는 경우 다음 두 가지 옵션이 표시됩니다.
- 자동으로 패킷 삭제 - 결과적으로 연결을 설정할 수 없지만 클라이언트는 무엇이 잘못되었는지, 어디서 문제가 발생했는지 알지 못한 채 패킷을 처리해야 합니다.
- 오류 패킷 반환 - 동일한 결과이지만 적어도 클라이언트는 문제가 발생한 위치를 알고 있습니다.
"이론적으로"라고 말한 이유는 실제 NAT는 일반적으로 (IP+) 포트가 충분한 경우에만 사용되기 때문입니다.