목차
- IP(Internet Protocol)
- Datatgram format
- Fragmentation
- IPv4 addressing
- Network address translation (NAT)
- IPv6
1. IP (Internet Protocol)
2. Datagram format
3. Fragmentation
네트워크 링크에 MTU(max.transfer size)가 존재
- 하나의 데이터그램이 여러 개의 데이터그램으로 쪼개짐
- 최종 목적지에서 재조립
- 데이터그램 조각을 식별, 순서를 지정하는 IP헤더가 있음
4. IPv4 addressing
Introduction
IP 주소: 호스트, 라우터 인터페이스의 32비트 식별자
interface: 호스트/라우터와 물리적 링크 간의 연결
- 라우터는 일반적으로 여러 인터페이스가 있음
- 호스트는 일반적으로 하나 또는 두 개의 인터페이스를 가짐
IP 주소는 각 인터페이스와 연관되어 있음
Subnets
IP 주소:
- 서브넷 부분 - 앞부분의 비트
- 호스트 부분 - 뒷부분의 비트
서브넷:
- 네트워크의 부분 집합
- IP 주소의 서브넷 부분이 동일한 장치 인터페이스
- 라우터의 개입 없이 연결되어 있음
ex) 223.1.1.0/24
- /24: 서브넷 마스크 - 상위 24비트까지 네트워크 주소임을 알려줌
- 0: 네트워크 대역의 주소에서 대표되는 대역의 주소에 0을 붙임
classful addressing
8비트, 16비트, 24비트 서브넷 주소를 가진 서브넷은 각각 클래스 A, B, C 네트워크
클래스 C - 254개의 호스트 (256에서 주소 2개는 특정 용도로 이미 사용 중)
클래스 B - 65634개의 호스트
2000개의 호스트가 있는 조직의 경우, 클래스 B(65534개 주소 공간)를 사용해야 함
→ 63000개 이상의 주소 공간이 낭비됨
CIDR
Classless Inter Domain Routing
주소 형식: a.b.c.d/x
- x는 주소의 서브넷 부분의 비트 개수
- 200.23.16.0/23 - 앞의 23비트를 서브넷 주소로 활용
브로드 캐스팅 주소: 255.255.255.255
클라이언트 대상 주소가 255.255.255.255인 패킷을 전송하면 이 패킷은 서브넷의 모든 호스트로 브로드 캐스트 됨
IP 주소 구하기
호스트가 IP 주소를 얻는 법
- 파일에서 시스템 관리자에 의해 하드 코딩됨
- Windows: 제어판-> 네트워크-> 구성-> tcp/ip-> 속성
- UNIX 유형: /etc/rc.config
- DHCP: Dynamic Host Configuration Protocol: 서버에서 주소를 동적으로 가져옴
- “플러그 앤 플레이”
네트워크가 IP 주소의 서브넷 부분을 얻는 법
- 공급자 ISP의 주소 공간의 할당된 부분을 가져옴
ISP가 주소 블럭을 얻는 법
- ICANN(할당된 이름과 번호에 대한 인터넷 회사)에서 구매
DHCP client-server scenario
- 호스트: DHCP 서버 탐색
- DHCP: 호스트에게 사용 가능한 IP 주소 제안
- 호스트: 사용할 IP 주소 요청
- DHCP: IP 주소 승인 및 할당
5. NAT (Network Address Translation)
용어 정리
공인 IP 주소
- 전 세계적으로 공유한 주소
- 예: 서울시 동작구 상도동 정보과학관 624호
사설 IP 주소
- 주소가 고유하지 않음 (예: 624호)
- 사용 예: 공유기에 공인 IP 할당 후, 공유기에 연결된 다수의 컴퓨터에 사설 IP 를 할당
- RFC 1918에 의해 정의된 사설 IP 주소 범위
- 10.0.0.0 ~ 10.255.255.255: 주소 개수 16,777,216개
- 172.16.0.0 ~ 172.31.255.255: 주소 개수 1,048,576개
- 192.168.0.0 ~ 192.168.255.255: 주소 개수 65,536개
공인 IP 주소 vs. 사설 IP 주소
네이버에서 IP주소가 같은 컴퓨터 A, B로 데이터를 어떻게 보낼 것인가?
NAT (Network Address Translation)
Motivation: 로컬 네트워크는 외부 환경에 대해 하나의 IP 주소만 사용
- ISP에서 필요 없는 주소 범위
- 모든 장치에 대한 하나의 IP 주소
- 외부에 알리지 않고 로컬 네트워크에 있는 장치의 주소 변경 가능
- 로컬 네트워크에 있는 장치의 주소를 변경하지 않고 ISP 변경 가능
- 로컬 네트워크 내부의 장치는 명시적으로 주소 지정이 불가능하며, 외부에서 볼 수 있음(보안 증가)
- 호스트 10.0.0.1이 128.119.40.186, 80으로 데이터그램을 보냄
- NAT 라우터가 데이터그램 소스 주소를 10.0.0.1, 3345에서 138.76.29.7, 5001으로 바꿔서 보냄
- 답장의 목적지 주소가 138.76.29.8, 5001인 데이터그램이 도착
- NAT 라우터가 데이터그램의 목적지를 138.76.29.7, 5001에서 10.0.0.1, 3345으로 바꿔서 보냄
implementation
- 발신 데이터그램: 모든 발신 데이터그램을 **(NAT IP 주소, 새 포트 번호)**로 바꿈. 원격 클라이언트/서버는 (NAT IP 주소, 새 포트 번호)를 대상 주소로 사용하여 응답.
- 수신 데이터그램: 모든 수신 데이터그램의 대상 필드에 있는 (NAT IP 주소, 새 포트 번호)를 NAT 테이블에 저장된 해당**(소스 IP 주소, 포트 번호)**로 바꿈.
6. IPv6
Motivation
Initial motivation
- 32비트 주소 공간이 곧 완전히 할당됨
Additional motivation
- 헤더 형식은 처리/포워딩 속도 향상에 도움이 됨
- QoS를 지원하기 위한 헤더 변경
datagram format
- Traffic class: 흐름 내의 특정 데이터그램에 우선 순위를 부여하거나 데이터그램에 우선 순위를 부여하는 데 사용할 수 있음
- Flow Label: 동일한 “Flow”에서 데이터그램을 식별
- “흐름”의 개념이 잘 정의되지 않았음
- Next header: 데이터에 대한 상위 계층 프로토콜 식별
IPv4 vs. IPv6
체크섬
- 처리 시간을 줄이기 위해 완전히 제거됨
옵션
- 허용되지만 헤더 외부(”Next Header” 필드로 표시됨)
ICMPv6: ICMP의 새로운 버전
- 추가 메시지 유형(예: “Packet Too Big”)
- 멀티캐스트 그룹 관리 기능
IPv4에서 IPv6으로의 전송
모든 라우터를 동시에 업그레이드 할 수 없음
네트워크는 IPv4와 IPv6 혼합 라우터에서 어떻게 작동할까?
tunneling: IPv4 라우터 사이에 IPv6 데이터그램이 IPv4 데이터그램의 payload로서 운반됨
'전공 > 네트워크' 카테고리의 다른 글
[네트워크] #19 Link status 알고리즘 (Dijkstra's algorithm, Example, Oscillation problem) (1) | 2023.12.06 |
---|---|
[네트워크] #18 라우팅 프로토콜, Link status algorithm vs. Distance vector algorithm (0) | 2023.12.06 |
[네트워크] #16 라우터 (구조, 기능, 포워딩, 스케줄링 정책) (2) | 2023.12.05 |
[네트워크] #15 네트워크 계층 (Data plane, Control plane) (1) | 2023.12.05 |
[네트워크] #14 혼잡 제어 공식, TCP 혼잡 제어 (2) | 2023.10.23 |