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


IP를 조금 더 자세하게 들여다 보자. 내가 좋아하는 위키피디아부터 찾아보도록 하자.


출처 http://en.wikipedia.org/wiki/Internet_Protocol

The Internet Protocol (IP) is the principal communications protocol in the Internet protocol suite for relaying datagrams across network boundaries. Its routing function enables internetworking, and essentially establishes the Internet.

IP, as the primary protocol in the Internet layer of the Internet protocol suite, has the task of delivering packets from the source host to the destination host solely based on the IP addresses. For this purpose, IP defines datagram structures that encapsulate the data to be delivered. It also defines addressing methods that are used to label the datagram with source and destination information.

Historically, IP was the connectionless datagram service in the original Transmission Control Program introduced by Vint Cerf and Bob Kahn in 1974; the other being the connection-oriented Transmission Control Protocol (TCP). The Internet protocol suite is therefore often referred to as TCP/IP.


아, 정말 어떻게 이렇게 간략하게 핵심만 뽑아서 설명해놨을까? 감탄을 안 할수가 없다. 위에 써있듯이, IP는 데이터 전송을 출발지와 목적지 IP 주소 그리고 라우팅을 이용하여 가능케한다.

IP의 역할을 아래의 네트워크에서 이해해보자.
우선 IP를 이용하지 않는 네트워크가 아래에 있다고 하자.

위의 네트워크에서 A와 B가 통신을 하려면 어떤 주소를 이용해서 할까? 제일 만만한건 MAC 주소이다. 그런데 도착지 MAC을 뭘로 정해야할 지 모르겠다. 중간에 거쳐가는 스위치의 MAC 주소를 도착지로하면 스위치까지만 갈꺼 아닌가? 그러면 뭔가 새로운 주소가 필요하다. 아래의 그림을 보자.

IP 주소는 가상의 주소라고 이해하는 것이 가장 정확한 것 같다. 서로 다른 네트워크끼리는 MAC 주소만으로는 도저히 통신이 불가능하기 때문에 가상으로 만들어놓은 주소인 것이다. 위와 같이 두 개의 주소를 가지면 A와 B는 통신은 아래와 같이 가능하다. 

위와 같은 개요를 가지고 통신을 하게 된다. 이제부터 A와 B가 통신하는데 필요한 정보들을 깔끔하게 보여주고 실제로 어떻게 통신하는지 자세하게 이야기하겠다.

A가 B에게 패킷을 보낼 때는 우선 A의 OS가 패킷을 만들어야 한다. 예를 들어 B에게 보내야할 내용이 '가나다'라고 하자. 그러면 아래와 같은 패킷이 A의 OS가 만들어낸다.

이 패킷을 보내려니까 누구한테 보내려는지에 대한 정보가 아직 없다. 그래서 그 정보를 OS가 또 붙인다. 이 때 붙여진 것을 IP header라고 한다. 아래와 같다.

자 이제 누구한테 보내야하는지는 안다. 다른 네트워크에 있는 B라는 컴퓨터에 보낼 거다. 그런데 그렇게 가기 위해서는 우선 누구한테 가야하는지는 아직 모른다. 그 정보를 PC A의 누군가가 아래와 같이 붙여준다. 이 때 붙여진 것을 MAC header 라고 한다.

이제 이 패킷은 A를 떠날 수 있다. MAC header를 보면 다음 목적지는 A의 네트워크가 붙어있는 라우터 인터페이스(LAN 카드)의 MAC 주소이다. 그런데 A를 떠날 때 필요한 것이 또 하나 더 있다. preamble이라는 것을 붙여야한다. 이것은 최초로 패킷을 받는 스위치로 하여금 '이 다음부터가 패킷이다'라고 알려주는 것이다. 

위와 같이 preamble은 8비트의 0과 1의 연속인데 11로 끝난다고 한다.(확실치 않다) 이 패킷이 제일 처음에 도착하는 A의 스위치에서는 저 8비트를 읽은 후 '아! 이 11 다음부터 MAC 헤더가 오겠구나?'라고 생각하는 것이다.


이 패킷이 A를 떠나서 처음 도착하는 곳은 어딜까? 즉, MAC header의 도착지는 어디로 세팅되어있을까? A가 속해있는 LAN이 붙어있는 라우터의 인터페이스이다. 인터페이스가 무엇인가? 랜카드라고 이해하면 편하다. 

여기서 잠깐 라우터와 스위치의 역할을 비교해서 이야기해볼까?
라우터라는 것은 여러 개의 서로 다른 네트워크들이 연결되어 있는 장비이다. 그렇기 때문에 라우터 자체가 여러개의 인터페이스(LAN 카드)를 갖고 있는 것은 당연한 이야기이다. 그 중 A의 네트워크가 꽂혀있는 인터페이스의 MAC 주소가 적혀있는 것이다. A와 B의 통신이 가능하려면 중간에 라우터는 A로부터 패킷을 받고 B로 패킷을 보내야 한다. 각각의 패킷은 아래와 같다.

A로부터 받은 패킷


B로 보내는 패킷

여기서 중요한 것은 가운데 있는 IP header의 내용은 변하지 않는다는 것이다. 이게 변해버리면 그건 해킹이나 다름없다. 왜냐하면 A가 보내려는 패킷이 A가 모르게 다른 곳으로 전달되어버리는 샘이니까.


라우터의 역할을 위에서 잠깐 이야기했다. 스위치의 역할은 같은 네트워크에 있는 두 개의 end point(여기에서는 A와 A가 속해있는 네트워크가 연결되어있는 라우터의 한 쪽) 간의 데이터 전송을 담당한다. 즉 스위치는 MAC header만을 보고 데이터를 전송해주는 장비이며 MAC header를 읽기만 할 뿐 변경하지는 않는다. 이 문장은 굉장히 중요한 부분이다. 계속 이야기 해보자. 스위치에 의해서 라우터로 잘 도착했다. 이 상황에서 라우터는 어떤 일을 하는지 알아보자. 라우터는 MAC header를 보니까 자기의 MAC 주소가 안에 있네? 즉, 자기한테 온 패킷이네? 그래서 조금 더 데이터를 읽어본다. 그러니까 IP header가 나온다.(이 말은 곧 IP header를 본다는 것이다.) 

IP header를 보고 목적지 IP를 읽은 라우터는 자기가 가지고 있는 라우팅 테이블의 정보를 기반으로 라우팅을 해준다. '어? 이 IP는? 가만 보자.. 라우팅 테이블을 보면... 오 그래! 저 쪽 인터페이스로 보내면 되는 패킷이구낭?' 

이 때 중요한 일이 일어난다. 라우터는 MAC header 내용을 변경할 수 밖에 없다. 그래야 B가 속해있는 네트워크가 연결되어있는 라우터의 인터페이스에서 최종적으로 B로 갈 수 있다. 그런데 이 때도 IP header 내용은 그대로이다. 당연하다. A가 보내려는 최종 목적지는 변하지 않기 때문이다.

지금까지 IP가 어떻게 작동하는지 이야기했다. 몇 개의 LAN을 거쳐서 동작하는 IP의 그림을 보면 아래와 같다. 

출처 : Data Communications and Networking by Behrouz A.Forouzan


지금 제발 바라는 것은, 지금까지 열심히 읽어준 독자들이 위의 그림을 이해할 수 있기를 바라는 것이다. 위에서 나오는 AP는 출발지 도착지 IP를 의미하고 그 왼쪽에 보라색 바탕에 써있는 숫자들은 인터페이스의 MAC 주소를 의미한다. 이렇게 생각해보고 위의 그림을 보면 반드시 이해가 가야한다. 이것을 이해 못 하면 IP를 이해했다고 할 수 없다.


이번 포스팅에서는 IP에서 가장 중요한 이야기를 했다. 다음 포스팅은 IP의 헤더를 이야기해보려고 한다.


※ 패킷이 PC에 도착하기만 하면 뭐하냐? 그 PC의 어떤 프로세스가 데이터를 사용할꺼냐? 이런 질문을 하는 독자들이 있다면 올바른 질문을 하고 있는 것이다. 이것에 대해서는 추후에 TCP/UDP를 다룰 때 이야기를 하려고 한다.


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

[NW] Type of Service (Differentiated Service)  (2) 2013.08.21
[NW] IP header  (5) 2013.07.30
[NW] Internet Protocol  (0) 2013.07.26
[NW] Use of ARP  (0) 2013.06.21
[NW] Packet structure  (0) 2013.06.16
Posted by 빛나유
,