At a Glance
IP address -> packet의 출발지·목적지 interface 주소
prefix / CIDR -> 어느 주소 범위가 같은 network인지
port -> host 안의 어느 TCP/UDP endpoint인지
socket address -> protocol + IP + port
route table -> 실제 출력 interface와 next hop 결정127.0.0.1:3000은 loopback interface의 TCP 또는 UDP port 3000이라는 endpoint 정보입니다. Protocol이 다르면 같은 숫자 port도 별도 namespace일 수 있습니다.
주소 범위
CIDR의 /n은 address 앞쪽 n bits가 network prefix임을 나타냅니다. IPv4 /24는 흔히 마지막 8 bits가 host 범위인 형태지만, 사용 가능한 주소와 broadcast 규칙은 network 환경을 함께 봐야 합니다.
IPv4 private address는 Internet에서 직접 route되지 않는 내부 범위로 흔히 NAT와 함께 사용합니다. IPv6는 더 큰 주소 공간과 다른 neighbor·autoconfiguration 규칙을 가지므로 IPv4 관용구를 그대로 적용하지 않습니다.
Bind와 Listen
Server가 0.0.0.0 또는 IPv6 unspecified address에 bind하면 허용된 모든 local interface에서 요청을 받을 수 있습니다. 127.0.0.1에만 bind하면 같은 machine의 loopback을 통해서만 접근할 수 있습니다. Firewall과 container port publishing은 또 다른 경계입니다.
자주 틀리는 점
localhost라는 이름과127.0.0.1하나를 항상 같은 것으로 고정하지 않습니다. IPv6::1로 해석될 수 있습니다.- Port가 열려 있다는 말은 application이 정상 응답한다는 뜻이 아닙니다.
- NAT가 암호화나 application 인증을 제공한다고 생각하지 않습니다.
- Client source port는 보통 runtime이 임시 범위에서 선택할 수 있습니다.
참고 링크
2 sources