8장. 네트워크 계층 프로토콜
(3) 기타 네트워크 계층 프로토콜
강의 목표
- ARP/RARP의 필요성과 원리
- ICMP와 IP 제어
- IGMP와 멀티캐스트
ARP (Address Resolution Protocol)
- IP 주소와 MAC 주소 사이의 변환 기능 수행
- 
MAC 주소 - 송신 호스트의 MAC 주소: 송신 호스트의 LAN 카드에서 얻을 수 있음
- 수신 호스트의 MAC 주소: ARP 프로토콜이 제공
 
- 
ARP 프로토콜 - 특정 호스트의 IP 주소로부터 MAC 주소를 제공하는 프로토콜
- ARP request라는 특수 패킷을 브로드캐스팅 = “IP 주소 A에 해당하는 하드웨어 주소를 알려주세요”라고 방송(브로드캐스팅)
- IP 주소에 해당하는 호스트만 ARP reply로 MAC 주소를 회신
- 과도한 트래픽 유발 방지를 위해 캐시 기능 제공
- 
사용 예 - 일반 호스트: 같은 망에 엮인 하드웨어 -> 실제 MAC 주소 바로 전달
- 라우터: 다른 망에 있는, 먼 하드웨어면 응답할 호스트가 없기 때문에 라우터가 대신 응답
 
 
RARP(Reverse Address Resolution Protocol)
- 
특정 호스트의 MAC 주소로부터 IP 주소를 제공하는 프로토콜 - “내 하드웨어 주소(MAC 주소)는 이건데, 내 IP 알려줘”라고 방송
 
- 
하드디스크가 없는 시스템은 자신의 IP 주소를 알 수 없음 - ROM에 기본 프로토콜만 존재
- 서버에서 관련 정보를 받아 메모리에 저장
- 예 - X 터미널: 입출력 장치는 있지만 하드가 없음
 
BOOTP와 DHCP
- 
BOOTP(Bootstrap Protocol) - DHCP 전에 개발된 호스트 구성 프로토콜
- 부팅 시 기본 설정값 설정
 
- 
DHCP(Dynamic Host Configuration Protocol) - 동적으로 호스트 설정 가능
- BOOTP 바탕으로 개선되어 BOOTP가 갖고있는 특정 제한 해결
 
- 
BOOTP와 DHCP 유사점 - 
서버와 클라이언트 간에 메시지를 교환하는 데 사용하는 형식 구조 - 거의 동일한 요청 메시지와 응답 메시지
 
- 클라-서버 통신 포트로 잘 알려진 UDP 포트(67, 68) 사용
- 
구성 서비스의 필수적인 부분으로 IP 주소 배포 - 시작하는 동안 IP 주소를 클라이언트에 할당
 
 
- 
- BOOTP와 DHCP 차이점
DHCP

- 
DHCP 헤더 구성 - 
op - 1이면 BOOTREQUEST
- 2면 BOOTREPLY
 
- htype (hardware address type)
- hlen (hardware address length)
- 
hops - 클라이언트는 0으로 세팅
- relay agents에게 선택적으로 사용됨
 
- 
xid(Transaction IP) - 클라이언트가 임의의 숫자 선택
 
- 
secs - 클라이언트가 쓰는 초단위 시간
- 주소를 얻거나 갱신하기 위해 시작한 이후에 시간이 얼마나 지났는지 초단위로 표현
 
- 
flags - B: Broadcast flag
 
- ciaddr (Client IP address)
- yiaddr (‘your’ (client) IP address)
- 
siaddr (IP address of next server to use in bootstrap) - 부트스트랩에서 그 다음에 사용할 서버를 지칭하는 IP 주소
 
- giaddr (Relay agent IP address)
- sname (Optional server host name)
- file (Boot file name)
- options (Optional parameters field)
 
- 
- 
DHCP 기능 - 
설정 파라미터 저장소 - 서버에서 관련 정보를 가지고 있다가 요청이 오면 확인할 수 있도록 해주는 역학
 
- 
네트워크 주소 동적 할당 - 한정된 IP 주소를 가지고 많은 호스트에 할당했다가 다시 회수하는 방식으로 공유
- 주소 리스 개념
 
 
- 
- 
DHCP 메시지 - 
DHCPDISCOVER - 클라이언트 브로드캐스트로 사용할 서버 확인
 
- 
DHCPOFFER - 서버 -> 클라이언트에게 전달하는 정보 설정 방식을 오퍼
 
- 
DHCPREQUEST - 클라이언트 -> 서버에게 보내는 메시지
- 파라미터 요청
- 앞서 할당된 주소를 다시 확인
- 할당된 주소 리스 확장
 
- DHCPACK (Acknowledge)
- DHCPNACK (Negative Acknowledge)
- DHCPDECLINE
- DHCPRELEASE
- DHCPINFORM
 
- 
- 
DHCP 프로토콜 동작 - 클라이언트가 DHCPDISCOVER를 브로드캐스트함
- 양쪽 서버에 도착
- 두 서버 모두 DHCPOFFER 보냄
- 클라이언트는 둘 중 먼저 들어온 오퍼에 응답해 DHCPREQUEST 보냄. 이때 선택받은 쪽이 selected가 됨
- 선택받지 않은 서버(Not selected)는 request를 받더라도 무시
- 선택받은 서버에서 Commit configuration을 응답(DHCPACK)
 
ICMP(Internet Control Message Protocol)
- 인터넷을 제어하는 메시지 전달 프로토콜
- 인터넷 환경에서 오류에 관한 처리를 지원
- 
ICMP 메시지 - 
ECHO REQUEST, ECHO REPLY: 해당 시스템이 살아있는지 확인 - 이 원리로 구현한 것이 ping 프로그램
 
- DESTINATION UNREACHABLE: 수신 호스트에 접근이 불가능
- SOURCE QUENCH: 네트워크에 필요한 자원 부족으로 패킷 폐기
- TIME EXCEEDED: 시간 초과로 패킷 폐기
- TIMESTAMP REQUEST, TIMESTAMP REPLY: 네트워크 지연 측정
 
- 
- 
ICMP 헤더 형식 - 처음 8바이트는 모든 메시지에 반드시 포함됨
- 8바이트보다 더 커질수도, 아닐 수도 있음
- Type: 메시지를 구분
- Code: 메시지 내용에 대한 자세한 정보
- Checksum: 전체 메시지 체크섬 기능
- ICMP 메시지 내용 1: 메시지 종류에 따라 값이 결정됨
- 
ICMP 메시지 내용 2 - 오류 원인을 제공한 IP 패킷의 헤더와 이어지는 8바이트의 정보가 포함됨
 
 
- 
ICMP 메시지 전송 - ICMP는 기능적으로 IP 프로토콜과 같은 계층의 역할 수행
- ICMP 메시지는 IP 프로토콜에 캡슐화되어 전송
 
IGMP(Internet Group Management Protocol)
- 그룹 관리 프로토콜
- 
멀티캐스트 - 특정 그룹에 속한 모든 호스트에게 메시지를 전송하는 방식
 
- 
그룹 관리 - 그룹의 생성/제거, 그룹 참가/멤버 탈퇴
 
- 
멀티캐스팅을 지원하기 위한 방안 - 다중 호스트를 표시하는 멀티캐스트 크룹 주소 표기 방법의 통일. IPv4, IPv6에서 이 형식 제공
- 
라우터가 멀티캐스트 주소와 이 그룹에 속하는 호스트 사이의 연관성 처리 - 라우터에서도 주솔르 받았을 때 관련 호스트에 전달할 수 있도록 연관성 처리. 특히 멤버를 동적으로 추가/삭제하는 환경 대응
 
 
- 
IGMP 헤더 형식 - 임의의 호스트가 멀티캐스트 그룹에 가입하거나 탈퇴할 때 사용
- 질의 메시지: 라우터에서 호스트로 전달
- 보고 메시지: 질의 메시지에 대한 응답으로 호스트가 회신
- 
Type - 0x11: 질의 메시지
- 0x16: 보고 메시지
- 0x17: 그룹 탈퇴에 관한 메시지
 
- 
Max Response Time - 질의 메시지에서 사용하며, 보고 메시지가 전송되어야 하는 최대 응답 시간
 
- 
Checksum - IP와 동일한 방식으로 적용
 
- 
Group Address - 질의 메시지: 0으로 채움
- 보고 메시지: 호스트가 가입을 원하는 그룹 주소 표기
 
 
- 
IGMP 동작 과정 - 
그룹 가입 시 호스트는 라우터에게 보고 메시지 전송 - 보고 메시지 내용: Type=0x16, Addr=Group Address(본인이 속한 그룹 주소)
 
- 
라우터에서는 해당 호스트가 그룹게 속해있는지 주기적으로 확인하기 위해 질의 메시지를 전송하고 호스트는 보고 메시지 전송 - 질의 메시지 내용: Type=0x11, Addr=0
- 보고 메시지 내용: Type=0x16, Addr=Group Address
 
- 
그룹 탈퇴 시 라우터에서 주기적으로 오는 확인 메시지에 호스트는 응답하지 않음 - 질의 메시지 내용: Type=0x11, Addr=0
- 보고 메시지 내용: 보고 메시지 없음
 
 
- 
- 
IGMP 메시지 전송 - IGMP는 IP 프로토콜과 동등한 계층의 기능 수행
- IP 패킷에 캡슐화되어 전송