포트와 소켓
포트와 소켓
"포트 하나 = 프로세스 하나"는 대충 맞지만, 정확히는 다름.
소켓의 정체
하나의 소켓 = (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호라도 동이 다르면 다른 집