본문 바로가기

IT/network

[네트워크] L3(network layer) 프로토콜

네트워크 계층 프로토콜

네트워크 계층 프로토콜은 IP, ARP, ICMP, IGMP로 구성된다.

network layer

protocol

IP

ARP

ICMP

IGMP

 

네트워크 계층의 데이터는 IP 헤더를 추가한 IP 데이터그램으로 동작한다.

상위 계층의 패킷에 IP 주소 정보를 캡슐화(encapsulation)하여 하위 계층으로 전달하고, 하위 계층에서는 패킷의 헤더 정보를 확인 후 헤더를 제거하는 역캡슐화(decapsulation)하여 상위 계층에 전송한다.

 

ARP(주소 변환 프로토콜)란 무엇인가?

ARPAddress Resolution Protocol의 약자로, 논리 주소인 IP주소를 물리 주소인 MAC주소와 매칭하는 것을 의미한다.

예를 들어 보자.

 

H1 이라는 호스트가 H2라는 호스트에게 데이터를 보낸다고 하자.

<ARP Request>

1) 데이터를 전달하기 위해서는 H2MAC주소를 알아야 한다. ARP 캐시는 자신이 통신했던 호스트들의 MAC 주소를 저장해놓은 ARP table이 있는데, 만일 ARP tableH2MAC 주소가 없으면 알아내야 한다.

<실제 ARP table 사진>

2) H1ARPH2MAC 주소를 알아내기 위해 모든 호스트에게 ARP Request(브로드 캐스트)를 보내 192.168.1.2IP 주소를 사용하는 호스트의 MAC 주소를 알아낸다.

3) H1을 제외한 나머지 호스트들은 ARP Request를 보고 자신의 IP 주소가 아니면 버리고, 자신의 IP 주소인 경우 H1에게 자신의 MAC 주소를 보낸다.(ARP Response)

4) H1ARP는 응답받은 ARP Response에 있는 H2MAC 주소를 ARP Table에 저장한다.

5) 다음 통신부터는 ARP Request를 보내지 않아도 ARP tableH2MAC 주소가 저장되어 있으므로 바로 통신이 가능해진다.(한번 저장하면 컴퓨터를 버릴 때까지 저장되는 것이 아닌, 윈도의 ARP의 캐시 수명기준 120초간 저장된다)

 

RARP(역주소 변환 프로토콜)란 무엇인가?

ARP는 상대방의 IP 주소는 알지만 MAC주소(물리 주소)를 모를 때 사용한다. RARP(Reverse Address Resolution Protocol)는 반대로 상대방의 MAC주소는 알지만 IP 주소를 모를 경우 사용한다.

<RARP가 필요한 이유>

RARP는 컴퓨터에 네트워크를 처음 연결할 때 주로 사용한다. RARP Request를 브로드 캐스팅하여 해당 MAC 주소를 가지고 있는 호스트의 IP 주소를 추적한다. RARP Response가 유니캐스트 되었다면 S1은 라우팅 테이블에 해당 정보를 기록한다.

 

ICMP란 무엇인가?

ICMPInternet Control Message Protocol의 약자로, 라우터(TCP/IP)에서 IP 패킷을 처리하는 도중 발생한 문제를 알리거나, 진단하는 등의 기능을 수행하기 위해 사용되는 프로토콜이다.

<ICMP Header>

ICMP 헤더는 타입, 코드, 검사 합(Checksum), 그리고 데이터로 구성이 되는데 데이터는 타입과 코드의 값에 따라 변경된다.

- 타입 : ICMP 메시지의 종류

- 코드 : 메시지 종류를 더욱 세분화

- 검사합(Checksum) : 오류 검사용

 

ICMP는 질의 메시지를 통해 정보를 구한다. 질의 메시지는 다음과 같다.

1) 에코 요청 및 응답 : ping을 할 때 사용하는 메시지

2) 타임 스탬프 요청 및 응답 : 호스트 혹은 라우터에서 현재 시간을 가르쳐주는 메시지

시간의 경과를 측정할 때 사용하며, 를 통해 RTT(Round Trip Time : 호스트A에서 호스트 B를 갔다가 다시 호스트 A에 돌아오는데 걸리는 시간)를 결정

3) 주소 마스크 요청 및 응답 : 서브넷 마스크를 알아볼 때 사용

4) 라우터 요청 및 응답 : 다른 네트워크에게 데이터 전송 시 자신의 네트워크에 연결된 라우터 주소를 요청할 때 사용

 

ICMP 오류 메시지는 네트워크 상에서 전송하는 도중 발생할 수 있는 오류 상태를 통보한다.

1) 목적지 도달 불가능 : 최종 목적지로 데이터를 전달할 수 없을 때 사용하며 경우는 다음과 같다.

- Network Unreachable(네트워크에 도달할 수 없음) : 라우팅 테이블이 손상되어 네트워크의 경로를 찾지 못하였거나, 없는 네트워크에 접속하려한 경우

- Host Unreachable(호스트에 도달할 수 없음) : 호스트를 찾지 못하였음

- Protocol Unreachable(프로토콜에 도달할 수 없음) : 수신자가 비표준 프로토콜을 사용했거나 프로토콜을 사용할 수 없는 환경에 있을 때 사용

- Port Unreachable(포트에 도달할 수 없음) : 수신지에서 특정 포트를 사용하지 않았을 때 발생하며 대부분 UDP 때문에 이 오류메시지가 발생한다. TCP3-way handshaking을 사용하기 때문에 해당 포트를 사용하는 응용 프로그램이 없으면 연결 요청을 거부하므로 오류 메시지가 발생하지 않는다.

- Source Route Failed(송신지 라우팅 수행 불가) : 다음 단계의 라우터가 없거나 동작할 수 없을 때 사용

2) 송신지 억제 : 이터를 보내는 사람이 과도한 데이터를 보내려고 한 경우 수신지에서는 ICMP Source Quench(송신지 억제) 오류 메시지를 보내 전송 속도를 줄이라고 지시한다. 송신 속도를 그대로 보낼 경우 처리 속도가 따라가지 못해 패킷이 손실될 가능성이 높아지기 때문이다. 수신지는 Source Quench를 통해 혼잡을 제어할 수 있다.

3) 재지정 : 송신 측에서 라우팅 경로를 설정했는데 해당 라우팅 경로가 적절치 않다고 판단되면 라우터에서 재지정 오류 메시지를 전송한다. 이 오류 메시지에는 지정 호스트 변경이나 네트워크를 변경하라고 명시한다.

4) 시간 초과 : 패킷을 보면 TTL(Time To Live)라는 필드가 있는데, 라우터에서 다음 라우터로 이동할 때 마다 TTL1씩 감소한다. 만일 TTL0인데 목적지에 도달하지 못한 경우 시간 초과 메시지를 보낸다. 시간 초과 오류 메시지는 2가지 종류가 있다.

- Time-to-live Exceeded in Transit : TTL이 다 돼서 재전송을 요청

- Fragment Reassembly Time Exceeded : 패킷의 크기가 너무 커 Fragmentation(단편화, 조각화)하여 보냈을 경우, 다음 Fragment가 정해진 시간 내에 도착하지 않는다면 없어졌다고 판단하고 재전송을 요청하는데 이때 오류메시지를 보낸다.

5) 매개변수 문제 : IP헤더의 매개변수에 문제가 생겼을 경우 오류 메시지를 보낸다.

 

ICMP 오류 메시지를 생성하지 않을 때

- 오류 메시지를 전송하는 데이터그램은 오류 메시지를 생성하지 않는다.(오류 메시지를 보내기 위해 보내는 데이터그램을 의미)

- 멀티캐스트 주소가 있는 데이터그램은 오류 메시지를 생성하지 않는다.

- 특수한 주소(127.0.0.0, 0.0.0.0)를 사용하는 데이터그램은 오류 메시지를 생성하지 않는다.

 

IGMP란 무엇인가?

IGMPInternet Group Message Protocol의 약자로, 인터넷에 연결한 컴퓨터가 멀티캐스트 그룹을 주위 라우터에게 알릴 수 있는 수단이 되는 프로토콜이다. IGMP는 멀티캐스트 라우터가 주기적으로 서브넷 호스트 컴퓨터 그룹에 IGMP 쿼리 메시지를 전송, 호스트 컴퓨터는 IGMP 쿼리 메시지에 응답한다. 호스트는 자신이 가입하려는 그룹 주소 정보를 IGMP 리포트 메시지를 통해 라우터에가 알려준다.

'IT > network' 카테고리의 다른 글

[네트워크] 응용 계층  (0) 2020.06.03
[네트워크] 전송 계층(TCP,UDP)  (0) 2020.06.03
[네트워크] IPv4와 IPv6  (0) 2020.05.09
[네트워크] 라우터에 대하여  (0) 2020.05.09
[네트워크] IP Protocol(아이피 프로토콜)  (0) 2020.05.05