포트와 소켓

포트와 소켓

"포트 하나 = 프로세스 하나"는 대충 맞지만, 정확히는 다름.


소켓의 정체

하나의 소켓 = (IP, 포트, 프로토콜) 조합

0.0.0.0:3000/TCP   → 프로세스 A
0.0.0.0:3000/UDP   → 프로세스 B (가능!)
127.0.0.1:3000/TCP → 프로세스 C (가능!)

같은 포트, 다른 프로세스가 가능한 경우

# <span id="이론적으로-가능"></span>이론적으로 가능
nc -l 127.0.0.1 3000  # 프로세스 A (127.0.0.1에만 바인딩)
nc -l 192.168.0.10 3000  # 프로세스 B (LAN IP에만 바인딩)

바인딩된 IP가 다르면 다른 프로세스가 점유 가능.


현실적인 충돌

nc -l 0.0.0.0 3000  # 모든 인터페이스에 바인딩
nc -l 127.0.0.1 3000  # 충돌! (이미 0.0.0.0이 점유)

0.0.0.0이 열리면 127.0.0.1도 포함됨. 그래서 대부분의 경우 "포트 하나 = 프로세스 하나"가 맞음.


비유

IP = 아파트 동
포트 = 호수
프로토콜 = 문 종류 (현관문/뒷문)

101동 301호 현관문 ≠ 102동 301호 현관문
같은 301호라도 동이 다르면 다른 집