Simple is IT, 누구나 보고 누구나 깨닫는 IT

OSI 7 계층 별 설명_Network Layer (ARP&IPv4&ICMP, Routing, Packet) 본문

Simple is IT/Network

OSI 7 계층 별 설명_Network Layer (ARP&IPv4&ICMP, Routing, Packet)

currenjin 2020. 4. 25. 14:24

네트워크 계층 (Network Layer)

- 라우팅, 목적지까지 데이터를 효율적이게 제어, 전송하는 역할

주요 프로토콜

ARP(Address Resolution Protocol)

- 같은 네트워크 대역에서 통신을 위해선 상대방의 MAC주소가 필요하다. 그래서 IP를 이용해 알아오는 프로토콜이다.

ARP Header (28 byte)

Hardware type : DataLink 계층 프로토콜 타입( 보통 Ethernet타입 : 0x0001 )

- Address Resolution Protocol Parameters Hardware Types 확인

Protocol type : Network 계층 프로토콜 타입( 보통 IPv4타입 : 0x0800 )

- Address Resolution Protocol Parameters Protocol Types 확인

Hardware Address Length : MAC주소 길이

Protocol Address Length : IP주소 길이

Opcode : 0001 = 질의, 0002 = 응답

- Address Resolution Protocol Parameters Operation Codes 확인

Source Hardware Address : 출발지 MAC주소 (6 byte)

Source Protocol Address : 출발지 IPv4 (4 byte)

Destination Hardware Address : 목적지 MAC주소

Destination Protocol Address : 목적지 IPv4

ARP프로토콜의 과정

요청

1. 목적지의 MAC주소를 모르기 때문에 00 00 00 00 00 00 으로 작성 후 요청한다.

2. Ethernet Header에서는 목적지를 Broadcast ( FF FF FF FF FF FF )로 작성

3. 해당 네트워크의 모든 Host들은 각자 요청을 받는다.

확인

1. 요청을 받은 모든 Host들은 각자 Decapsulation을 진행

2. 누가 자신의 MAC을 요청하는지 확인 한 Host는 Payload의 MAC을 작성

3. 다른 모든 Host는 해당 요청을 파기

응답

1. 자신의 MAC을 작성한 Host는 응답을 송신 (해당 MAC은 알기 때문에 정확히 작성)

2. 해당 MAC을 받게된 요청자는 Decapsulation 후 학습하여 ARP Cache Table에 기록

* arp cache table arp -a로 확인 가능

wireshark 패킷 캡쳐 실습

1. arp 테이블 확인 후 패킷 분석

2. arp 테이블 제거 후 ping 날린 패킷 분석

프레임의 최소 단위 : 60 byte, 최대 단위 : 1514( 유동적 )

padding : 최소단위 맞춰줌 (0000으로, 안들어간 경우 캡쳐가 되지 않은 것)

information tab : 물음표 = 요청

IPv4 프로토콜(Internet Protocol Version 4)

- 네트워크 상 데이터를 교환하기 위한 프로토콜 ( 전달 보장X, 비신뢰성 )

IPv4 Header (20 byte 옵션제외)

Version : 4 (4 bit)

IHL( Header Length ) : 나누기 5 한 숫자 (4 bit) ex) 20byte면 5를 기록

TOS( Type of Service ) : 00 (1 byte)

Total Length : Header와 Payload의 전체 길이 (2 byte)

Identification : ID를 확인 해 조각화 된 패킷이 원래 하나였다는 것을 인식 (2 byte)

IP Flags : X / D : 조각화 안함 / M : 조각화 된 패킷이 더 있음을 알림 (3 bit)

Fragment Offset : 뒤죽박죽인 패킷의 순서를 나열 ( 패킷의 떨어져 있는 길이, 나누기 8 )

TTL( Time To Live ) : 패킷이 지날 수 있는 홉 수 지정 ( OS 마다 TTL 값 다름 )

Protocol : 상위 프로토콜 TCP/UDP, ICMP

Header Checksum : 오류 확인 ( 필드 값 수신측과 비교 )

Source Address : 출발지 IP Address

Destination Address : 목적지 IP Address

ICMP 프로토콜(Internet Control Message Protocol)

- 상대측과 통신을 확인하기 위해서 사용하는 프로토콜, PING 주로 사용

ICMP Header (8 byte)

Type : ICMP 타입 (1 byte)

0 - 정상적인 응답

3 - 목적지 도착 불능

8 - 요청

11 - 시간 초과

Code : 타입의 소분류

5 - 리다이렉트, 라우팅 테이블 수정

CheckSum : 해당 패킷의 오류를 확인하기 위한 값

나머지 : ICMP 프로토콜을 이용하는 프로그램에서 추가하고 싶은 기능을 추가

라우팅 테이블(Routing Table)

- 어디로 보내야 하는지를 설정되어 있는 테이블( 지도 )

ex) PC-A에서 PC-B로 ICMP 요청

1. PC-A에서 Routing Table 확인 ( MAC, IP 알고 있다는 가정으로 진행 )

2. 요청 프로토콜을 생성 후 IPv4 Header, Ethernet Header 작성

3. A측 공유기에서 Eternet Header Decapsulation 진행

4. 목적지 IP 확인 후 Routing Table 확인

5. Eternet Header 재작성 -> Router로 송신 -> Eternet Header Decapsulation -> 목적지 IP 확인 -> Ethernet Header Encapsulation -> 과정 반복

6. Decapsulation 후 PC-B의 MAC Address를 Ethernet Header에 작성

7. 수신된 패킷에 Decapsulation 후 ICMP 응답 메세지 작성

8. 4, 5번과 같은 방법으로 응답 메세지 PC-A로 송신

IPv4의 조각화

- 적은 MTU(Maximum Transmission Unit)를 갖는 링크를 통하여 전송되려면 여러개의 작은 패킷으로 조각화 되어 전송돼야 한다.

MTU : 최대 전송 유닛

패킷의 조각화

ex)

12000( IPv4 Header 포함 ) bytes

3300 byte의 MTU를 가진 상태라면

-> 각각 3280 + 20( IPv4 Header )

MoreFregment 1 : 내 뒤에 조각된 패킷이 있다.

Offset : 데이터의 나누기 8을 한 숫자

IPv4 Header가 붙고나서 MTU에 의해 필터

조각화 진행

ICMP 요청은 마지막 조각에 붙음

MTU필터 후 +EthernetHeader

실습

라우팅 테이블 확인 : netstat -r

- 네트워크 대상은 인터페이스에 연결 됨.

Wireshark 패킷 캡쳐 확인 : ping x.x.x.x -l 4800 ( 4800바이트 만큼 전송 )

ex) DATA : 4800

MTU : 1500

1. 1480 mf 1 offset 0

2. 1480 mf 1 offset 1480( 185, 0x00B9 )

3. 1480 mf 1 offset 2960( 370, 0x0172 )

4. 360 mf 0 offset 4440 ( 555, 0x022b )

!!

MAC 주소 : 특정 컴퓨터를 컴퓨터가 찾아갈 때 사용하는 주소

IP 주소 : 특정 네트워크 대역을 찾아가서 특정 컴퓨터를 찾아갈 때 사용하는 주소

포트 번호 : 특정 컴퓨터에서 동작하고 있는 특정 프로그램을 찾아가는 주소


Comments