OneDay Network
Wireshark 네트워크 계층(Network layer) 분석 본문
1.1 네트워크 계층(Network layer) 정의
OSI 7 layer에서 3계층에 속하며, 라우터를 통해 목적지로 패킷을 보내기 위한 라우팅(Routing)을 담당하는 계층이다.
쉽게 말하면, 네트워크 계층(Network layer)은 어떤 경로로 패킷이 가야 더 효율적인지 판단하여 해당하는 경로로 패킷을 보내는 역할을 수행하는 계층이다. 대표적인 프로토콜로 IPv4/IPv6와 ICMP, IGMP, ARP등 네트워크 계층에서 추구하는 메커니즘을 수행하기 위해 많은 프로토콜들이 존재한다.
1.2 네트워크 계층(Network layer) 프로토콜 분석
가. IPv4(Internet Protocol version 4)
[그림 1] Wireshark IP 패킷
Version필드는 IP의 버전을 나타내는 필드로, IPv4와 IPv6가 존재한다. 4인 것을 보아 IPv4버전임을 알 수 있다.
Header length는 IP헤더의 크기를 나타내는 필드로, 길이가 가변적이지만 아무런 옵션이 붙지 않는다면 20Byte이다.
Differentiated Services Field는 패킷의 중요도를 나타내는 필드이다.
Flags는 패킷 분할을 하기 위한 필드이다. MTU라는 단위를 통해 패킷을 분할하게 되는데, 보내야 할 패킷이 MTU보다 높다면 분할이 일어난다. 이러한 과정을 IP 단편화라고 한다.
Don’t Fragment는 패킷의 분할과 관련된 비트로 1이 set되면 패킷의 분할을 허용하지 않는다는 뜻이고, 0이면 패킷의 분할이 가능하다.
More Fragment는 분할된 패킷이 계속 이어지는지 여부를 알 수 있는 비트이다. 0이 set되면 분할된 패킷이 더 이상 없다는 뜻이고, 1이 set되면 분할된 패킷이 계속 이어진다는 뜻이다.
Fragment offset은 분할된 패킷 내에서 현재 패킷의 위치를 나타내는 필드로, 0이면 첫 번째 패킷을 말한다.
Time To Live는 패킷의 수명을 나타내는 필드로, 라우터를 지나갈 때 TTL값이 1씩 줄어들며, 값이 0이 되면 더 이상 패킷이 네트워크 상에 떠도는 것을 방지하기 위해 패킷을 폐기한다.
Protocol필드는 상위 계층의 프로토콜 타입을 말한다. [그림 1]의 Protocol필드를 보면 다음에 TCP헤더가 이어질 것이다.
다.
나. ARP(Address Resolution Protocol )
ARP프로토콜은 주소 결정 프로토콜로써, IP를 통해 MAC Address를 알아내는 역할을 수행한다.
[그림 1] Wireshark ARP 패킷
ARP 헤더 구조는 Hardware Type, Protocol Type, Hardware Length, Protocol Length, Operation Code, Sender Hardware Address, Sender Protocol Address, Target Hardware Address, Target Protocol Address로 구성되어 있다.
[그림 2] ARP Request
위에서 설명했듯이, ARP의 헤더는 이와 같이 구성되어있다.
Hardware type필드가 1인 것으로 보아 Ethernet임을 알 수 있다.
또한, Protocol type필드가 IPv4인 것을 확인 할 수 있다.
Hardware size필드가 6인 이유는 MAC Address가 48Bit로 이루어져 있기 때문이다.
또한 Protocol size필드가 4인 이유는 IPv4의 주소 체계가 4옥텟(Octet)으로 이루어져 한 옥텟은 8Bit로, 총 32Bit로 이루어져
있기 때문이다.
Opcode필드는 ARP의 동작 상태를 나타내는 필드로, 0부터 8까지 존재한다. 이 패킷에서 볼 수 있는 Opcode는 1과 2이다.
[그림 2]의 패킷은 Opcode필드가 1이다. [그림 2] 패킷을 보면 Target MAC Address필드가 00:00:00:00:00:00인 것을 볼 수 있다. 그 이유는 MAC Address를 아직 학습하지 못하여 브로드캐스트(Broadcast)를 통해 MAC Address를 요청한 것이다.
[그림 3] ARP Reply
다른 필드들은 [그림 2]와 같지만 다른 것이 몇가지 있다. 먼저 Opcode 부분이 2로 바뀌었다. 이는 ARP요청에 응답한 것이다. 게이트웨이에서 ARP응답을 통해 자신의 MAC Address를 알렸다. 따라서 PC는 게이트웨이(192.168.32.2)의 MAC Address의 학습을 통해 게이트웨이와 통신을 할 수 있게 되었다. 게이트웨이의 MAC Address 학습이 필요한 경우는, 라우터를 거쳐 외부와 통신하기 위해서 PC는 게이트웨이로 요청을 보내기 때문이다.
[그림 4] ipconfig/all 실행 화면
다. ICMP(Internet Control Message Protocol)
ICMP는 인터넷 제어 프로토콜로써, IP동작에서 진단 또는 제어, 오류에 대한
응답을 수행하는 프로토콜이다.
[그림 1] Wireshark ICMP 패킷
PC1(192.168.32.134)에서 PC2(192.168.32.128)로 ping명령을 통해 ICMP패킷을 발생시켰다.
ICMP 헤더는 기본적으로 Type, Code, Checksum, Data로 이루어져 있고, 가변적으로 ICMP메시지는 변한다.
Type필드는 ICMP의 메시지 유형을 나타내는 필드로, 숫자를 통해 나타낸다. 0은 Ping Reply, 8은 Ping Request, 3은 목적지 도달 불가 등 많은 메시지 유형이 존재한다.
Code필드는 Type 3과 11이 가지고 있는 값이다. Type 필드가 3으로 되어있다면, Code필드에서 목적지에 도달하지 못한 이유를 자세히 나타낸다. 0번은 Network unreachable, 1은 Host unreachable 등이 있다.
Checksum은 계산을 통해 ICMP 헤더의 손상 여부를 판단할 때 사용하는 필드이다. 계산 결과 0이면 오류가 없는 것이고, 0이 아닌 다른 수라면 ICMP헤더 일부분이 손상된 것이다. [그림 2]를 보면 Type이 8인 것으로 보아 Request를 보낸 것을 알 수 있다.
[그림 2] Wireshark ICMP Request
[그림 3] Wireshark ICMP Reply
[그림 2]와 비슷하지만 [그림 3]에서는 Type필드가 0으로 바뀐 것을 볼 수 있다.
따라서 ICMP Request에 응답함으로, 두 PC간의 통신에 오류가 없다는 것을 확인 할 수 있다.
'Network' 카테고리의 다른 글
Wireshark 응용계층(Application layer) 분석 (0) | 2019.03.11 |
---|---|
Wireshark 전송계층(Transport layer) 분석 (0) | 2019.03.08 |
Wireshark 데이터링크 계층(Data link layer) 분석 (1) | 2019.03.06 |
OSI 7 Layer란? (0) | 2019.03.06 |
scapy를 활용한 비정상 패킷 전송 (0) | 2018.05.26 |