IP (Internet Protocol)
IP 의 역할

- Packet 이라는 통신 단위로 지정한 IP Address 에 데이터를 전달하는 역할을 가지고 있다.
- Packet 에는 출발지 IP, 목적지 IP, 등이 포함된다.
IP Protocol 의 한계
- 비연결성 - 패킷을 받을 대상이 없거나, 서비스 불능 상태여도 패킷이 전송된다.
- 비신뢰성 - 중간에 패킷이 사라지거나, 순서가 꼬일 수 있다.
- 프로그램 구분 - 같은 IP 의 어떤 애플리케이션이 요청했는지 구분하지 못한다.
PORT
- IP - 목적지 서버를 구분한다. (아파트)
- PORT - 같은 IP 내에서 프로세스를 구분한다. (몇동 몇호)
- 0 ~ 1023: 잘 알려진 포트로 사용하지 않는 것이 좋다.
IPv4 와 IPv6
IPv4 의 역사
- 1981년 본격적으로 사용
- 1985년 전체 주소 1/16 사용
- 1991년 WWW 출시
- 1993년 웹 브라우저 Mosaic 출시
- 1995년 전체 주소 1/3 사용
- 2000년 전체 주소 1/2 사용
- 2011년 IPv4 할당 중지 선언
IPv4 개요
- 32비트 주소 체계 = 43억개의 주소
- 사설(Private)용 주소, 연구용 클래스 E 주소 등등 제외 시 배정 가능한 IPv4 주소 = 2억5천만개 정도
IPv4 의 주소 절약법
- NAT(Network Address Translation)
- 내부망에서 사설 IP 주소를 사용하고, 인터넷으로 나갈 때만 공인 IP 주소 사용
- 인터넷 공유기의 원리
- 단점: 시간이 더 걸림, E2E 기능을 지원하느 프로그램 호환성 문제
- 서브넷팅
- DHCP(Dynamic Host Configuration Protocol)
- 사용하지 않는 주소를 자동으로 회수하고 주소가 필요한 PC에 그때그때 배분
- CIDR(Classless InterDomain Routing)
- 클래스 A, B, C 와 같은 기존의 약속을 무시하고 뒤에 붙은 서브넷 마스크만으로 클래스를 지정하는 방식
- 서브넷팅의 반대개념인 수퍼넷팅, 즉 여러 개의 작은 네트워크를 한 개로 모아 라우팅 테이블을 줄여줌으로써 라우터의 메모리를 절약하고 라우팅 속도를 올려주기 위해 사용
CIDR
- CIDR (Classless Inter-Domain Routing) consists of 2 components
- Base IP - Represents an IP contained in the range
- Subnet Mask - Defines how many bits can change in the IP range
- e.g.
- /8 = 255.0.0.0
- /16 = 255.255.0.0
- …
Subnet Mask
- 192.168.0.0/32 = 192.168.0.0
- 192.168.0.0/24 = 192.168.0.0 ~ 192.168.0.255
- 192.168.0.0/16 = 192.168.0.0 ~ 192.168.255.255
Private IP
- IANA (Internet Assigned Numbers Authority) established certain blocks for private IPv4 addresses
- 10.0.0.0 ~ 10.255.255.255 (10.0.0.0/8)
- 172.16.0.0 ~ 172.31.255.255 (172.16.0.0/12) <- e.g. AWS default VPC range
- 192.168.0.0 ~ 192.168.255.255 (192.168.0.0/16) <- e.g. home networks
0.0.0.0 과 127.0.0.1
127.0.0.1
- 루프백 주소(loopback address), 로컬호스트(localhost)
- 자기 자신을 가리키는 예약 주소
0.0.0.0/8
- 호스트가 IP 주소를 할당받기 전에 임시로 할당되는 IP 주소다.
- 예를 들어, DHCP Discover 메시지를 전송하는 시점의 클라이언트 IP 주소
- 특별히 지칭할 IP 주소가 없을 때 사용되는 IP 주소다.
- 호스트 입장에서 마땅히 자신을 지칭할 IP 주소가 없을 때
0.0.0.0/0
- 모슨 임의의 IP 주소를 뜻한다.
- 주로 라우팅에서 디폴트 라우트(default route)를 나타내기 위해 사용한다.