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 패킷에 캡슐화되어 전송