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


이전에 사용한 그림을 재사용해보자.



6대가 연결되어있는 PC와 그 PC들의 주요 정보들이다. 각각의 PC들은 IP address와 MAC address를 가지고 있다. IP address도 PC를 구별할 identifier 같은 것이고 MAC address도 identifier이다. 이 6대의 PC는 기본적으로 LAN 카드를 가지고 있기 때문에 전원만 키면 PC는 자신의 MAC address를 알수 있다. 


하나의 PC가 통신을 하려면 상대방 주소와 내 주소를 알아야 한다. 그렇지? 그런데 우리가 가지고 있는 주소 Type은 두 가지가 있다. MAC address와 IP address이다. 


가령, PC0이 PC3에게 데이터를 보내려고 한다. 이 때 PC0이 아는 것은 다음과 같다.


PC0의 IP : 10.10.123.100

PC0의 MAC : 000A.4181.2029

PC3의 IP : 10.10.123.300


PC3의 MAC address은 아직 모르고 있다. PC0이 통신을 하려면 반드시 PC3의 MAC address도 알아야 하는데, 이 때 사용하는 것이 ARP이다. PC3의 MAC address를 알기 위해서 PC0은 자기가 속한 LAN에 있는 모든 PC들에게 이렇게 물어본다. 


"너희들중에 IP address가 10.10.123.300 인 PC의 MAC address가 뭐냐?"


(지금부터는 패킷이라는 단어를 데이터 대신 사용하겠다.) 이렇게 모든 PC들에게 패킷을 보내는 것을 broadcasting이라고 한다. 이렇게 물어봤을 때 모든 LAN에 있는 PC들은 자신의 IP와 비교해보고 자기의 IP가 맞을 경우에만 응답을 한다. PC3이 해당 패킷을 받았을 때는 자신의 IP와 맞으니까 응답을 하는 것이다. 


"내 IP가 10.10.123.300인데, 내 MAC은 0007.EC7C.C8B9야"


이 과정을 실제 패킷을 보고 이야기해보자. 이 과정부터 우리는 실제로 오가는 데이터를 보면서 로컬 네트워크에서 어떻게 패킷을 주고 받으며 통신을 하는지 확인해볼 것이다.


하나의 LAN에 있는 두 대의 PC A와 B가 있다.



PC A가 B와 통신을 시도하려고 한다. 이 상황에서 PC A는 자신의 IP와 MAC은 전부 알고 있다. A는 B의 IP만 알고 MAC은 모른다. A와 B가 통신을 하려면 A는 B의 MAC도 알아야 한다. 이 때 ARP가 쓰이는 것이다. 즉 본격적인 통신이 이루어지기 전에 사전에 이루어져야하는 작업 정도로 볼 수 있다. 아래의 패킷은 A가 보내는 ARP request이다.



패킷 캡쳐 프로그램을 이용하여 두 PC간의 ARP 패킷을 캡쳐한 것이다. 빨간 네모 안을 보면 목적지(B)의 MAC을 모르기 때문에 0으로 채워져있다. 이전의 포스팅에서 말했듯이 위와 같은 ARP request 패킷들은 broadcast 패킷이다. A가 속해있는 네트워크에 있는 모든 PC에 위와 같은 패킷이 전송된다. 각 PC들은 Target IP address 필드를 확인한 후 자신의 IP가 아니면 무조건 버린다. B가 해당 패킷을 받았을 경우, Target IP address가 자신의 IP와 일치한다는 것을 확인하고 자기의 MAC 주소를 A에게 알려준다. 아래와 같다.



ARP request 패킷과 달리 출발지와 목적지에 해당하는 MAC과 IP가 바뀌어있음을 알 수 있다. 당연하다. 위의 패킷은 B가 A에게 보내는 것이니까. 자 이제는 A와 B가 모두 서로의 IP와 MAC을 알고 있다. 따라서 통신이 가능하다. 


갑자기 캡쳐된 패킷들을 보니까 뭔말인가 싶을 것이다. 패킷에 대한 소개를 잠깐 하도록 하자. 패킷은 여러개의 헤더로 구성되어있다. 위의 패킷들은 3개의 헤더가 있다. Frame 113, Ethernet Ⅱ, Address Resolution Protocol 이 그것이다. 각각의 헤더는 계층 구조로 되어있다. 여기서 계층 구조란 무엇인가? 사실 계층 구조를 이해하려면 많은 공부가 필요하다. 간단하게 말하면 단계 같은 것이다. 공장에서 물건을 만들 때 물건을 만들어내는 순서가 다 있겠찌? 마찬가지로 보낼 패킷을 만드는데도 순서가 있다. 가장 먼저 만드는 패킷을 상위 계층 패킷이라고 하고 가장 나중에 만들어지는 패킷을 하위계층 패킷이라고 한다.


나중에 배우게 될 TCP/IP 계층 구조는 지금 현재의 통신과정에서 항상 쓰이는 구조이다. 그 구조에는 TCP라는 계층과 IP라는 계층이 있을 것이다. 아무튼 지금까지 계층구조는 그냥 이렇게 생각하자. 패킷이 만들어지는 순서이며 항상 상위 계층부터 만들어지고 하위계층이 나중에 만들어진다.


다음 포스팅에서는 Ethernet Ⅱ부분과 ARP 부분을 조금 더 자세하게 공부해보자.

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

[NW] Use of ARP  (0) 2013.06.21
[NW] Packet structure  (0) 2013.06.16
[NW] Media Access Control (MAC)  (0) 2013.06.13
[NW] Hub, Bridge and Switch  (2) 2013.06.11
[NW] CSMA/CD  (0) 2013.06.07
Posted by 빛나유
,