[CN] 4장: IP: the Internet Protocol (Datagram Format, Addressing)
IP: the Internet Protocol (Datagram Format, Addressing)
Datagram Format
네트워크 계층 기능 & IP Datagram Format
네트워크 계층 기능
네트워크 계층은 비 신뢰적임
- 경로선택 알고리즘
- 라우팅 프로토콜 (RIP, OSPF, BGP)
- SDN 컨트롤러
- IP 프로토콜
- Datagram Format
- Addressing
- Packet Handling Rules
- ICMP 프로토콜
- 상태 진단/디버깅
- 패킷 손실의 위치를 찾음
IP Datagram Format
IP 헤더는 20byte
IP 단편화/재결합
링크 계층마다 MTU가 달라서
네트워크 계층에서 IP 데이터그램을 단편화(분할)함
목적지 호스트에서 재결합하여 데이터그램을 합침
단편화
- 식별자
- 원본 데이터그램 구분
- 플래그 - 3bit
- 첫 번째 비트 - 미사용
- 두 번째 비트 - 1이면 단편화 불가능
- 세 번째 비트 - 마지막 조각이면 0
- 오프셋
- 조각의 순서를 나타냄
단편화 예시
Addressing
IP Addressing
IP 주소
호스트 또는 라우터의 인터페이스와 관련된 32비트 식별자
인터페이스
호스트/라우터와 물리적 링크 간의 연결
- 라우터에는 다수의 인터페이스가 있음
- 호스트에는 하나 혹은 두 개의 인터페이스 (랜선, 와이파이)
서브넷
중계 라우터를 통과하지 않고,
물리적으로 도달할 수 있는 장치의 인터페이스들로 구성된 네트워크
IP 주소의 구조
- Subnet Part: 서브넷 식별 (n bit)
- 같은 서브넷에 있는 장치는 동일한 상위 비트를 가짐
- 서브넷 마스크와 AND 연산으로 식별
- Host Part: 나머지 하위 비트 (32-n bit)
- 서브넷 안에서 인터페이스를 식별
- 호스트를 구별함
서브넷 마스크
/24 라면, 상위 24비트 = IP 주소의 서브넷 부분
11111111 11111111 11111111 00000000
CIDR (Classless Inter Domain Routing, 사이다)
CIDR = 서브넷 주소체계 표기를 일반화
클래스로 나누지 않고,
서브넷 부분의 길이가 임의로 변경함
주소형식: a.b.c.d/x (x는 네트워크 프리픽스의 비트 수)
예약된 IPv4 주소
This-host 주소: 0.0.0.0/32
[DHCP] 호스트가 패킷 보낼 때, 자신의 IP주소를 모르는 경우
제한된 브로드캐스트 주소: 255.255.255.255/32
[DHCP] 서브넷의 모든 장치로 패킷을 보낼 때 사용
루프백 주소: 127.0.0.1/8 (SW 테스트용)
패킷이 호스트를 벗어나지 않음
사설 주소: 192.168.0.0/16
호스트가 어떻게 IP주소의 호스트 부분을 획득하는가 ? (DHCP)
네트워크 관리자가 IP 주소를 수동적으로 할당 → 고정적임
DHCP, 동적 호스트 구성 프로토콜 (자동)
→ 서버에서 동적으로 주소를 획득함
DHCP: 서버에서 동적으로 주소를 획당
Dynamic Host Configuration Protocol
- UDP에서 사용
- 사용중인 임시 IP 주소를 임대
- IP 주소 재사용 허용 (연결/켜진 동안에만 IP주소를 유지함)
- 여러 네트워크에 접속하고 떠나는 이동중인 사용자를 지원 (모바일)
- Discover: 호스트는 DHCP 발견 메세지를 브로드캐스트
- Offer: DHCP 서버는 DHCP 제공 메세지로 응답
- Request: 호스트는 DHCP 요청 메세지로 IP 주소를 요청함
- ACK: DHCP는 DHCP ACK 메세지로 IP주소를 줌
DHCP 서버는 라우터에 함께 배치되어
라우터가 연결된 모든 서브넷에 서비스를 제공함
추가 정보 제공
- 서브넷 마스크
IP 주소의 네트워크 부분과 호스트 부분을 구별 - DNS 서버의 이름 및 IP 주소
DHCP 예시
발견
- 노트북이 네트워크에 연결되어 DHCP를 사용하려 함
- 노트북은 DHCP 발견 메세지를 생성하고 캡슐화되어 브로드캐스트 됨
제공
- 서버가 메세지를 수신하고, 사용 가능한 IP 주소를 포함한 DHCP 메세지를 생성
- 위 DHCP 메세지는 캡슐화되어 클라이언트에게 제공 (브로드캐스트)
요청
- 클라이언트는 Offer 메세지를 수신 후, 특정 IP를 얻고자, DHCP 서버의 정보를 포함하여 브로드캐스트로 Request 요청
ACK
- 선택된 DHCP 서버는 클라이언트의 요청을 확인하고, IP 주소 할당을 확정하는 ACK 메세지 생성
- ACK에는 IP 주소.. 등이 포함되어 캡슐화되어 클라이언트에게 전달
- 클라이언트는 수신하고, 이제 IP주소를 사용하게 됨
네트워크가 어떻게 IP주소의 서브넷 부분을 획득하는가 ?
ISP로부터 할당 받은 IP 주소 공간 (주소블록)의 일부분을 사용
ISP가 제공해준 IP 주소
11001000 00010111 00010000 00000000 (200.23.16.0/20)
만약 8개의 서브넷을 생성하길 원한다면 3비트가 필요
서브넷 20비트 + 프리픽스 3비트 = 23
계층적 주소체계: 경로집약
계층적 주소 지정을 하면,
네트워크 프리픽스만으로 구별 → 포워딩 테이블 크기 감소
만약 A-ISP의 조직 1이 다른 ISP로 넘어간다면 ?
최장 프리픽스 매칭을 통해 구체적으로 전송
ISP는 어떻게 주소 블록을 획득하는가 ?
ICANN에서 할당해줌
- IP 주소 할당
- DNS 루트 서버 관리
- 도메인 이름 할당 및 도메인 이름 분쟁 해결
32비트 길이의 IPv4주소가 충분한가 ?
현재 주소의 개수가 250억개 정도라 함
IPv4는 42억개까지 표현 가능한데, 이는 불가능
→ DHCP와 NAT를 통해 문제를 완화시킴
NAT: Network Address Translation
사설망 내 모든 장치는 공인망의 하나의 IP 주소를 공유함
호스트의 사설망 IP는 하나의 공유중인 IP 주소로 나감
138.76.29.7
→ 사설망에서 출발하는 모든 데이터그램은 동일한 출번지를 가짐
단, 출발지 포트번호는 다름 !
192.168.0/24
→ 사설망 내에서 데이터그램의 출발지 또는 목적지 IP 주소
NAT 장점
- 단 하나의 공인 IP 주소로, 사설망의 모든 장치가 인터넷 접속 가능
- 외부에 알리지 않고, 사설망의 호스트 IP 주소 변경 가능
외부에 보이는 건 공인망 NAT 라우터밖에 없음 - 사설망에 있는 호스트 IP 주소를 변경하지 않고, ISP 변경 가능
- 보안 강화 - 외부에서 사설망 내부가 보이지 않음
NAT 라우터의 필수 구현 기능
호스트의 IP를 NAT의 IP로 어떻게 바꿨는지 기억해야 함
이를 NAT 변환 테이블에서 저장하고 있음
- 데이터그램 송신
모든 송신 데이터그램의 [출발지 IP 주소, 포트번호] → [NAT IP 주소, 새 포트번호]로 변환 - 모든 [출발지 IP 주소, 포트번호]에서 [NAT IP 주소, 새 포트번호] 변화 쌍을 NAT 변환 테이블에서 기억
- 데이터그램 수신
모든 수신 데이터그램의 목적지 필드에 있는 [NAT IP 주소, 새 포트번호]를 NAT 테이블에 저장된 [출발지 IP 주소, 포트번호]로 변환
포트번호 필드
포트번호는 16비트 길이를 지님
Q. 외부에서 사설망을 접속하는 방법은 ?
→ 라우터 관리 페이지에서 포트 포워딩 설정
IPv6
IPv4 주소 공간이 고갈되어 사용됨
빠른 처리 및 전달 가능
’흐름’에 대한 다양한 네트워크 계층 처리 가능
IPv6 Datagram format
- 헤더는 무조건 40바이트 고정
- 사라진 필드
- 다음 헤더 프로토콜 필드 사용가능
- 체크섬 - 버리는게 효율적이다
- 단편화와 재결합
IPv4 → IPv6 (터널링)
터널링: IPv6 데이터그램은 IPv4 라우터 사이에서 IPv4 데이터그램의 페이로드로써 전달됨 (패킷 안의 패킷)
IPv6인 A 입장에서는 목적지가 F임
근데 IPv6은 B와 E에서 IPv4의 페이로드로 전달됨
그래서 B → C와 C → D, D → E를 보면 IPv6내용이 페이로드로 전달됨
B와 E에 대한 연결이 빨간색
일반화된 포워딩, SDN
각 라우터에는 포워딩 테이블이 존재했다.
헤더에서 목적지 IP 주소를 읽고,
포워딩 테이블에 의해 목적지 라우터를 지정하는 방식
- 목적지 기반 전달
: 목적지 IP 주소 기반으로 전달 - 일반화된 포워딩
- 다양한 헤더 필드가 액션을 결정할 수 있음
- 다양한 액션이 가능: drop/copy/modify/log packet
- 패킷 스위치, 플로우 테이블: 일반화된 포워딩 테이블
Flow table 추상화
- 흐름
- 출발지부터 목적지까지 일련의 데이터그램의 흐름
- 다양한 헤더필드 값으로 정의 (링크, 네트워크, 트랜스포트 계층 필드들)
- 일반화된 포워딩
- match
- actions
- priority
- counters
OpenFlow
: SDN을 구현하는 대표적인 기술
Match + Action: 추상화를 통해 다양한 종류의 장치를 통합