
그래서..저는 네트워크 선생님과 이런 논쟁을 벌였습니다. 그는 일부 사람들이 라우터의 NAT 테이블에 많은 항목이 있어 라우터 충돌에 대해 불평한다고 말했습니다.
나는 이해하지 못하고 이렇게 물었습니다. "응용 프로그램이 동일한 포트를 사용하는 경우 라우터가 충돌하는 이유는 무엇입니까? 항목은 하나만 있어야 합니다(pc-ip,pcport;public-ip,public-port)." 그리고 그는 "동일한 포트를 사용하는 것은 중요하지 않습니다"라고 말했습니다.
NAT는 통과하는 모든 패킷에 대해 항목을 생성한다는 아이디어를 얻었습니다. 짐작하셨겠지만 NAT에 과부하가 걸렸다고 가정하겠습니다.
따라서 질문은 다음과 같습니다.
NAT 항목은 어떻게 생성되나요? 패킷 기반인가요, 아니면 연결 기반인가요? 내 말은: 내가 UDP 패킷을 보낸다고 가정해 보겠습니다. 라우터가 항목을 생성합니까?
TCP 연결을 시작하면 라우터는 연결이 닫힐 때까지 지속적인 nat 항목을 생성합니까?
선생님이 맞으셨나요? 동일한 포트에서 패킷을 보내는 애플리케이션을 가정하면 NAT 테이블에 과부하가 걸릴 수 있습니까?
미리 감사드립니다.
답변1
- 연결당(또는 UDP 스트림당)
- 예
- 예. 예를 들어, 하나의 내부 PC에 있는 웹 브라우저는 여러 외부 웹 서버 각각에 대해 동시에 여러 개의 동시 TCP 연결을 열 수 있습니다. 각 연결마다 소스 포트는 다양하지만(무작위로 선택됨) 여러 연결에서 대상 포트와 대상 IP 주소가 동일할 수 있습니다. 집에 있는 두 대 또는 세 대의 컴퓨터 요구 사항을 충족하도록 설계된 라우터는 예를 들어 매우 바쁜 수백 대의 컴퓨터가 있는 학교에서 필요한 동시 연결 수를 처리하지 못할 수 있습니다. 라우터는 예상 로드에 맞게 크기를 조정해야 합니다.
당신이 보면TCP 클라이언트의 C 소스 예에 설명된어떻게, "소켓" API는 클라이언트가 소스 포트를 지정하기 위해 연결을 시작하는 수단을 제공하지 않는다는 것을 알 수 있습니다.