순간이 영원해 지는 곳
패킷의 여행 본문
패킷의 여행이라고 하여 대단한 내용은 아니고, 내가 네트워크관련 공부를 하면서 패킷하나가 송신지부터 수신지까지 이동되는 동안 일어나는 일들에 대해 정리한 것이다.
PC1(End Host) 에서 패킷이 하나 만들어 진다. PC1의 IP 주소는 192.168.0.2 이다.
패킷의 목적지 IP 주소는 192.168.0.3이다.
PC1은 ARP(Address Resolution Protocol) 브로드캐스트를 통해 같은 네트워크(192.168.0.0)에 목적지 IP주소에 해당하는 호스트가 있는지 확인한다.
ARP는 IP주소를 가지고 MAC 주소를 알고 싶을 때 사용되는 프로토콜이다.
호스트가 같은 네트워크 안에 존재할 경우 해당 호스트는 NIC(Network Interface Card) 또는 LAN 카드 의 MAC 주소를 알려준다. 이 호스트를 PC2라 하면 PC1은 보내려는 패킷을 프레임으로 캡슐화 할때 목적지 MAC 주소를 ARP를 통해 전달받은 MAC 주소로 입력하여 전송한다.
MAC 주소는 다른 호스트가 MAC 주소를 알아내기 위해 ARP 브로드캐스트를 사용할때도 학습되며 이는 ARP 캐시에 저장된다.
대부분의 운영체제에서 arp -a 명령을 통해 ARP 캐시의 내용을 볼 수 있다.
PC2는 전송된 패킷의 목적지 MAC 주소를 확인하여 자신의 MAC 주소와 비교, 일치를 확인하고 프레임 헤더와 트레일러를 벗기고 패킷을 얻는다.
프레임 트레일러에는 FCS라는 항목이 있는데 이는 전송과정에서 프레임에 오류가 발생했는지 판단하는 용도로 사용된다. 만일 프레임에 오류가 발생한 것으로 판단될 경우 프레임을 버린다. 이 경우 패킷이 제대로 전송이 안 된것이 된다.
그러나 만일 전송계층에서 TCP를 사용할 경우 패킷이 잘 전송됐는지 여부를 확인하고 그렇지 않은 경우 패킷을 재전송하여 신뢰성 있는(reliable) 통신을 보장한다.
만일 패킷의 목적지 IP 주소가 121.0.0.3 라면 같은 네트워크에 존재하는 호스트가 아니기 때문에 ARP를 호출해도 MAC 주소를 얻지 못하게 된다. (다른 네트워크가 목적지일 경우 ARP를 호출하지 않는다.)
이때 게이트웨이가 설정되어 있을 경우 게이트웨이의 IP 주소(192.168.0.1)를 가지고 ARP를 호출한다.
패킷에 입력된 목적지IP주소는 여전히 121.0.0.3이라는 것이 중요하다. 게이트웨이의 IP 주소는 오직 ARP호출을 통해 게이트웨이 장비의 MAC 주소를 얻어내는 용도로 사용된다.
게이트웨이에 해당하는 장비(라우터나 인터넷 공유기)는 자신의 MAC 주소를 전달한다.
PC1은 패킷의 목적지 IP주소는 그대로 121.0.0.3으로 두고 프레임으로 캡슐화 할때 목적지 MAC 주소를 게이트웨이의 MAC 주소를 입력하여 전송한다.
게이트웨이는 마찬가지로 프레임의 목적지 MAC 주소를 확인한뒤 패킷을 얻는다.
이때 게이트웨이가 라우터라면 라우팅 테이블을 참고하여 패킷의 목적지 IP주소로 패킷이 전달될 수 있도록 다른 포트 또는 인터페이스로 패킷을 전달한다.
라우터에서 다른 라우터로 패킷이 전달되는 경우 Ethernet처럼 Frame-Relay, PPP, HDLC와 같은 방식에 맞는 프레임 헤더와 트레일러를 붙여서 프레임형태로 전달이 된다. (구간마다 데이터 링크층의 프로토콜이 다르다.)
이 프레임의 송신지 MAC 주소는 송신 라우터의 MAC 주소가 목적지 MAC 주소는 반대편 라우터의 MAC 주소가 입력된다.
이런식으로 목적지 IP 네트워크 121.0.0.0에 도달할때까지 프레임의 송신지와 목적지 MAC 주소가 바뀌면서 전달된다.
프레임이 121.0.0.0 네트워크에 도달했을때 목적지 MAC 주소는 121.0.0.3의 IP를 가진 호스트의 NIC MAC 주소가 입력되어 있을 것이다. 그래서 최종적으로 프레임이 121.0.0.3의 IP를 가진 호스트에게 전달되고 그 호스트는 프레임의 헤더와 트레일러를 벗기고 패킷을 얻게 된다.
여기서 데이터링크계층에서는 MAC 주소를 쓰는 Ethernet 방식을 사용한다고 가정한다.
* 기본적으로 패킷을 프레임헤더와 트레일러로 감싸는 것을 캡슐화 한다고 한다.
* <네트워크 구성도> 그림은 "Packet Tracer 5.0" 을 이용한 것이며 빨간점은 제대로 커넥션이 이뤄지지 않았다는 뜻인데 설명을 도우려는 그림이므로 연결구성만 보시면 되겠다.
'통신 & 네트워크' 카테고리의 다른 글
WFQ 동작 과정 (패킷 처리 예제) (5) | 2009.08.17 |
---|---|
CSMA, CSMA/CD, CSMA/CA 정리 (31) | 2009.08.16 |
Go-back-N ARQ, Selective Repeat ARQ 프로토콜 정리 (23) | 2009.03.02 |
쉽게 설명한 라우팅(Routing)과 포워딩(Forwarding) (29) | 2009.01.01 |
Link-State Routing Algorithm에 사용되는 Dijkstra's algorithm (3) | 2008.12.28 |