20.0 Network layer (4계층)의 Protocols
IGMP
- 그룹 생성/제거 프로토콜
- 멀티 캐스팅 용도
- Class D - 멀티 캐스트 그룹
ICMP
- 인터넷 관리 용도 (제한적) 프로토콜
- 핵공격에도 버티게 하기 위해서 중앙집권화가 안 되도록 네트워크가 설계되어 있기 때문에 라우터는 멍청함
- End system에서 오류를 검출함
ARP
RARP
20.1 ARP
IP 주소 — MAC 주소 매핑
- MAC 주소: Layer 2 주소 ex) 이더넷 주소
- Ethernet: Layer 2의 대표 protocol
- End system(호스트)과 스위치(또는 같은 LAN의 라우터) 간 물리적인 데이터 전송에 사용
- Network 카드마다 고유 번호를 가짐 ⇒ 이더넷 주소
- IP 주소와 매핑됨
- packet을 받으면 누가 보냈는지 찾기 가능
- 즉, IP 주소를 보내면 이더넷 주소를 주고 (ARP) 이더넷 주소를 주면 IP 주소를 주는 (RARP) protocol
ARP operation
- broad cast로 전송됨
- 해당 IP가 아닌 시스템들은 이 broad cast를 무시
-
해당되는 IP가 자기 MAC 주소를 전달
⇒ 이 때는 unicast!
20.2 IP
IP datagram

- Header: 가변적 크기 (20 ~ 60 byte)
- Total length: Header 포함한 전체 크기
- IP 패킷 최대 크기 ⇒ 216 = 64kb
Fragmentation
: Packet을 MTU이 최소인 크기만큼 쪼개서 Router에 전달하는 것
- MTU (Maximum Transmission Unit) : Router로 패킷을 보낼 때 허용 가능한 최대 패킷 크기
- Router 입장에서 Fragmentation은 부담
- 쪼개기 하는 오버헤드 발생 (시간 ↑, 속도 ↓)
- 안 일어나게 하는 것이 최선
- 패킷을 너무 작게 보내면 효율 ↓
- 쪼개지지 않는 선에서 최대크기가 best
- 마지막 destination에서 reassembly가 일어남
IP Fragmentation and Reassembly
Fragmentation과 연관된 Header 필드
+-----------------------+--------+-----------------+
| Identification | Flags | Fragment Offset |
+-----------------------+--------+-----------------+
| 16 bits | 3 bits | 13 bits |
+-----------------------+--------+-----------------+
# Flags Field
+-----------+
| Flags |
+-----------+
| R | D | M |
+-----------+
- - -
| | └→ MF (More Fragments)
| └→ DF (Don't Fragment)
└→ Reserved (항상 0)
- More Fragments flag가 1이면 계속 fragment, 0이면 fragment 끝
- Don’t Fragments flag가 1이면 reassembly, 0이면 그냥 보냄
- Identification field는 Fragmentation을 해도 그대로

Offset
: 원래 Data로부터 얼마나 떨어져있는지
- 시작 패킷의 Offset은 0, 이후 패킷은 MTU 크기만큼 누적됨
- Offset 필드는 13bit인데, Total Length 필드는 16bit → 추가적으로 3을 shift left 연산해서 맨 오른쪽에 3bit 000을 추가하여 16bit를 만듦 다시 Reaseembly 할 때는 23(= 8)만큼 나누어서 Offset을 구함
20.3 ICMP
- ICMP : 항상 에러메세지를 출발 IP에 보내주는 프로토콜
등장 배경
- 네트워크는 핵 공격에도 무너지지 않게 만들어졌기 때문에 라우터들은 패킷이 오면 라우팅 테이블을 보고 스위칭을 하는 게 전부임
- IP 자체에는 Error reporting이나 Error correcting이 없음
- 그래서 end system(Host)에서 트래픽을 관리
- 즉, 인터넷의 제어를 위한 부분이 미약하기 때문에 이를 위해 만든 프로토콜이 ICMP
도착 IP가 잘못되어 라우터가 패킷을 전송할 수 없는 경우
- 도착 IP가 잘못되면 해당 패킷을 버리기도 하고 다시 패킷을 생성해서 출발 IP에 보내주기도 함
- but, 라우터의 정보가 유출되어 보안 위험 ↑
- 즉, ICMP를 보내도 되고 안 보내도 됨 (라우터가 보낼지 말지 결정)
20.4 IPv6 (IPnextgeneration)
- IPv4는 미국이 주도해서 만들었기 때문에 미국이 IPv6 전환을 주도해야 IPv6를 사용할 수 있음
- 미국에게는 늦추는 것이 이득이라 전환이 이루어지지 않음
- But 언제라도 IPv6로 전환은 가능 (이미 하드웨어 기술이 다 완성됨)
장점
왜 IPv6로 전환이 되지 않고 있냐?
→ IPv4 시스템도 문제가 없기 때문 (기존 문제도 이미 해결 가능)
- 주소 부족 문제 → private IP를 할당 받고 NAT를 통해 인터넷 접근 하여 해결 가능
- Qos 보장 문제 → BackBone 네트워크의 대역폭을 늘리면 해결 가능
- QoS 보장은 경부고속도로로 비유 가능
- 차 막힘 = 퀄리티 보장 X
- 이 차 막힘 문제는 다음 두 가지 방법 중 하나로 해결 가능
- 버스전용차로 = 자원이 한정적이면 일정 자원을 예약해서 걔만 쓸 수 있도록 함 (자원 할당 - IPv6)
- 도로를 넓힘 = WDM 장비로 하드웨어의 성능을 올려 QoS를 구축할 필요 없게 만듦 (현재 IPv4)
- WDM은 물리 계층에서 대역폭을 충분히 분리해주기 때문에, 상위 계층에서 복잡한 QoS 제어가 필요 없어지는 효과를 줌
- 라우터를 IPv6를 지원하는 라우터로 전부 교체해야 함
IPv6 address
- 16진법 표기 (Hexadecimal colon notation) 사용
- Abbreviated(축약) 가능

- IPv4보다 간단해짐
- Flow label이 생김
Flow Label
: 네트워크에서 일관된 QoS 처리나 빠른 패킷 분류를 위해, 같은 Flow의 패킷을 식별하는 데 쓰이는 20비트 필드
Flow
: 한 송신자와 수신자 사이에서, 동일한 처리 방식(QoS 등)이 적용되어야 하는 일련의 패킷들
- 음성, 비디오, 데이터를 모두 서비스 할 수 있도록 디자인
- 라우터들이 플로우 당 자원을 예약할 수 있도록 해줌
문제
IPv4 → IPv6로 전환하는 방법 3가지
1. Dual Stack
- 라우터가 IPv4와 IPv6 둘 다 지원할 때
- header에서 version 필드를 보고 IPv4인지 IPv6인지 확인
- 같은 버전끼리 데이터 송수신 가능
- 문제점
- IPv4와 IPv6끼리는 데이터를 주고 받을 수 없음
2. Tunneling
: IPv4만 지원하는 라우터에서 IPv6 패킷을 전송하기 위한 개념

- IPv4 라우터가 IPv6 패킷을 전송할 때 IPv6도 지원하는 라우터를 소스 라우터와 목적지 목적지 라우터로 설정하고, IPv4 헤더를 붙여서 패킷을 전송
- IPv6를 지원하는 라우터는 이 IPv4 헤더를 제거하고 Host에게 전달

- IPv6 host와 IPv4 host끼리 통신하는 유일한 방법
- 하지만 매우 제한된 경우에만 사용 가능 (파일 데이터 전송) 왜? → 가장 큰 문제: Flow Label
- Flow Label은 v4에는 없는 컨셉이기 때문에 v6 → v4로 갈 때는 Flow Label을 뭉개야 함
- Flow Label은 QoS가 중요한 응용 (ex. 실시간 음성, 영상 스트리밍)에서 핵심적인 역할 → translation 시 Flow Label이 사라지면 QoS 정보 손실 → 오디오/비디오 품질 저하, 연결 불안정 등 문제 발생