※ 질문/내용오류/공유할 내용이 있다면 jinkilee73@gmail.com으로 메일 주세요 :-)


패킷 구조를 다시 공부해보자. 이전에도 말했듯이 아직은 패킷의 구조라는 것은 패킷이 만들어지는 순서이고 상위계층부터 하위계층 순으로 만들어진다고만 알아두기로 했다. 아래의 패킷을 다시 보자.



여기에 보이는 Address Resolution Protocol, Ethernet 등등에 있는 내용을 헤더라고 한다. 헤더란 각 계층이 포함하는 내용을 담고 있는 요약본이라고 보면 된다. 예를 들어, Address Resolution Protocol이 속해있는 계층에 포함되어있는 내용은 Hardware type, Protocol Type 등등이 있는 것이다. 즉, 통신에 필요한 정보들이 있는 것이다. 


위의 패킷에서는 ARP Header는 Hardware type 등등의 정보를 가지고 있는 것이다. 또한 그 아래 계층의 Ethernet Header는 Destination Source 등등의 정보를 가지고 있는 것이다.


이번 포스팅에서는 각각의 헤더가 의미하는 바를 알아보자.


그러기 전에 다시 한번 현재 상황을 정리해보자. PC A(192.168.6.2, 00:50:56:ea:ae:9d)가 PC B(192.168.6.128, 00:0c:29:8c:71:fa)와 통신을 하려고 하는데 A는 B의 IP만 알고 MAC은 모르는 상태이다. 따라서 A의 MAC을 알기 위해서 아래와 같은 패킷을 보내는데 그것을 우리는 ARP request 패킷이라고 하고 이 패킷은 하나의 LAN에 있는 모든 PC들에게 전달된다.



그러면 위의 패킷을 만드는 과정을 보자. 우선은 ARP header를 만들어야겠지? 만들어보자. 출발지 IP와 MAC은 자기가 알고 있으니까 집어 넣고 Target의 IP는 아니까 집어넣고 MAC은 모르니까 비워두고 Hardware type과 나머지 부분은 아래의 내용을 먼저 보고 만들어 보자.


Hardware type : LAN 카드의 종류이다. Ethernet LAN 카드냐? Token Ring LAN 카드냐? 그거다.

Protocol Type : 하드웨어가 사용할 주소(MAC)과 매칭되는 상위계층 주소가 무엇인지 묻는다. 요즘은 대부분 TCP/IP모델을 사용하기 때문에 거의 모든 MAC 주소는 IP 주소와 매핑된다고 봐도 무방하다.

Hardware Size : Hardware address(MAC) size를 바이트 단위로 표시한 것이다.

Protocol Size : 하드웨어가 사용할 주소와 매칭되는 상위층 주소의 사이즈를 묻는다. IP는 32 bit 즉 4바이트이기 때문에 대부분의 여러분이 캡쳐한 패킷은 이 부분이 4일 것이다.

Opcode : Operation code 이다. 이 부분은 request이냐 reply이냐 등등을 묻는 곳이다. 


각 필드가 무엇을 의미하는지 이제 알았으니까 다시 설명을 해보자. A와 B는 당연히 Ethernet 기반으로 통신을 하고 있기 때문에(LAN카드가 Ethernet LAN카드) Ethernet을 의미하는 값 1이 기록되어있다. 그리고 해당 Ethernet LAN 카드의 주소인 MAC 주소를 IP라는 상위 계층의 주소와 매핑할 것이기 때문에 IP를 의미하는 0x0800을 적는다. MAC과 IP 주소의 사이즈는 각각 6과 4이므로 그렇게 적는다. 자 이렇게 해서 하나의 ARP header 정보를 다 만들었다. 아래와 같다.


그 다음에 만들 과정은 Ethernet header이다. Ethernet header에는 무슨 정보가 있는지 확인해보자.


Destination : 도착지의 MAC 주소이다.

Source : 출발지의 MAC 주소이다.

Type : 바로 아래의 계층에 어떤 프로토콜이 만들어졌는지 알려준다. 0x8086은 ARP를 의미하는 숫자이며 일반적으로는 TCP/IP 를 많이 사용하므로 IP에 해당하는 0x0800이라는 값이 대부분이다.


Source와 Type은 그냥 보면 이해가 간다. 그런데 Destination이 조금 이상하다. ff:ff:ff:ff:ff:ff 라고 되어있다. 이건 뭐지? 정상적인 MAC 주소가 이렇게 f로 쭉 이어질수 있나? 이것은 broadcast를 의미하는 MAC주소이다. 무슨 말이냐?! Broadcast는 그 LAN에 속해있는 모든 PC에게 보내는 것이다. 그렇다고 n개의 pc가 있으면 똑같은 패킷을 n개 만들어서 보내나? 그렇지 않다. 그냥 ff:ff:ff:ff:ff:ff라고 찍어서 보내면 그거는 모든 PC가 받아보라고 이야기 하는 것과 같은 것이다. 그래서 broadcast MAC 주소는 무조건 ff:ff:ff:ff:ff:ff라고 약속되어 있다. Ethernet header도 다 만들었다. 그러면 이렇게 된다.



마지막 Frame 부분은 보지 않겠다. 워낙 low level이기도 하고 아직 공부를 못 했다.-_- 만들었다고 치자 그러면 아래와 같이 되겠지?



자 이렇게 패킷을 하나 만들어보니까 이제 어떤 기분이 드는가? PC A가 말하기를, "나는 이제 패킷을 보내야지~ 그니까 패킷을 만들어보자. 우선 내가 보낼 정보 ARP header를 만들고... 뚝딱!! 출발지 목적지 적어줘야겠군 Ethernet header 만들고... 뚝딱!! Frame header 만들고... 뚝딱!! 됐다!! 이제 보내자!!" 하면 위에 만들어 놓은 최종 결과물(11.......01001001010100101110.....001000101011001...01011)을 보내는 것이다. 디지털 회선에서는 이와 같이 0과 1의 조합으로 보내는 것이다.


이것을 받는 목적지는 Frame header부터 역순으로 header의 내용을 하나하나 까보는 것이다.

사실 이것이 계층 구조의 핵심 내용이다. 이 말이 이해가 안 가도 좋다. 앞으로 주구장창 이야기할 것이기 때문이다.


자 여기서 ARP에 대해서 하나 물어보자. ARP는 언제 쓰냐? MAC 주소를 알아올 때 쓴다!! 맞다!! 그런데 ARP도 여러 가지 종류가 있다. Reverse ARP, Inverse ARP, DHCP ARP 등등 여러 가지 변형이 있다. 각각의 변형에 대해서 알아보고 어떤 때 쓰이는 것인지 알아보자. 그리고 대망의 TCP/IP를 들어갈 생각이다.

'Computer Networks' 카테고리의 다른 글

[NW] Internet Protocol  (0) 2013.07.26
[NW] Use of ARP  (0) 2013.06.21
[NW] Address Resolution Protocol (ARP)  (2) 2013.06.13
[NW] Media Access Control (MAC)  (0) 2013.06.13
[NW] Hub, Bridge and Switch  (2) 2013.06.11
Posted by 빛나유
,