동일한 소스 및 대상 포트를 사용하여 localhost의 서버에 연결

동일한 소스 및 대상 포트를 사용하여 localhost의 서버에 연결

80다음은 포트 에서 수신 대기하는 간단한 서버 입니다 localhost.

nc -4 --listen 127.0.0.1 80

localhost다음은 서버의 대상 포트와 동일한 소스 포트를 사용하여 서버에 연결하는 클라이언트입니다.

nc -4 --source-port 80 --source 127.0.0.1 127.0.0.1 80

오류가 발생합니다.

libnsock mksock_bind_addr(): Bind to 127.0.0.1:80 failed (IOD #1): Address already in use (98)

규칙에 따라: { SRC-IP, SRC-PORT, DST-IP, DST-PORT, PROTO }고유해야 하며 이 연결이 생성되도록 허용되어야 합니다. 연결을 생성하려는 첫 번째 시도 전에는 그러한 튜플이 존재하지 않습니다. 이것이 왜 허용되지 않습니까? 저는 커널 4.4.6과 함께 Fedora 23을 실행하고 있습니다.

답변1

당신이하려는 일은 말이되지 않습니다. 동일한 5-튜플을 사용하여 두 개의 TCP 소켓을 생성하려고 하므로 { SRC-IP, SRC-PORT, DST-IP, DST-PORT, PROTO }두 소켓을 구별할 수 없습니다.

이렇게 생각해보세요. 이것이 허용된다면 목적지가 127.0.0.1:80인 127.0.0.1:80의 TCP 패킷이 도착했을 때 어떤 소켓이 이를 수신할까요? 둘 다?

관련 정보