본문 바로가기

Coding Note

[Network] OSI 7 LAYER AND ROUTING (and MAC, IP address)

★ OSI 7 Layer가 필요한 이유가 뭘까?

다른 회사에 있는 사장에게 문서를 보내는 과정을 예로들어 보자.


박사장이 문서를 보내는 방법은 여러가지가 있다.
박사장이 직접 차를타고 김사장에게 가서 전해줘도 되고, 팩스를 통해 바로 전해줘도 된다.
하지만 가장 손쉬운 방법은..?    비서한테 "이거 김사장한테 보내"  라고 하면 끝이다

데이터가 전송되기 까지 층을 나누어서 생각하는 이유가 여기에 있다. 자기 층의 작업자가 해야할 일만 끝나고 다음 층으로 데이터를 넘기면 자기가 할 일은 끝나니 역할분담을 확실히 할 수 있고, 이를 설계하는데도 더 구체적으로 다가갈 수 있다.

그렇담 '역할분담' 을 생각하면서 위의 작업들을 다시 살펴보자.
어느 단계에서 다음단계로 내려갈때, 혹은 올라갈때, 자기 일 외엔 절대로 건드리지 않는다는것을 알 수 있다.
(만약 자기맘대로 뜯어보거나 한다면 아마 시말서를 쓰겠지..)
또 한가지 알 수 있는 사실은, 보내는 회사의 각 부서는 상대 회사의 같은 레벨의 부서에서 봉투에 쓰는 메세지를 확인할 것이라고 예상하며 문서를 봉투에 담을 것이다. 즉 Layer - to - layer communication 이 이루어지고 있는것이다. 

정리하면, 데이터의 전송에 층을 나눈 이유는, 데이터를 전송하는데 있어서 관련있는 역할끼리 묶어서 (흐름에 맞게) 층을 나눈것이고, 이를 나눈 여러 기준중에서 ISO (International Standardization Organization) 에서 발표한
OSI (Open Systems Interconnection) 7 Layer를 표준화된 층계로 따르는 것이다.

하지만 TCP/IP통신에서는 상위 계층을 묶어서 4계층으로 만들었고, 이를 TCP/IP Layer 또는 TCP/IP model 이라고 한다.


Application, Presentation, Session Layer 를 Application Layer로 묶었을 뿐 아래계층은 차이가 없다.

★ 패킷 전송 과정
패킷의 움직임은 아무렇게나 이루어지지 않는다. 두 PC간 데이터의 전송과정을 살펴보자.

일반적으로 다른 네트워크에 있느 PC에 데이터를 전송하기 위해 A PC에서 B PC 로 패킷이 움직일 때, 하나 이상의 라우터를 거쳐가게된다. 이렇게 패킷이 움직일 때 일련의 과정이 이루어 지는데 이를 계층구조간의 과정과 같이 살펴보자.

위 그림을 설명하기 전에 A PC에서 일어나는 일들을 다시 살펴보자.

                  PC에서 일어나는 일                                                                               회사에서 일어나는 일
Application layer : 응용프로그램에서 데이터를 만듬                                                박사장이 문서를 만듬
Transport layer   : 데이터가 어디 방으로 전송되야 할지 포트(port) 번호를 부여함        비서가 김사장의 방으로 가도록 표시
Network layer     : 데이터의 목적지를 표시 (IP address 부여)                                  배송부서가 김사장회사의 주소 표시
Data-link layer    : 데이터가 목적지로 가기위한 물리주소(MAC address 부여)            우체국에서 김사장네로 가기위한 가장 가                                                                                                                        까운 우체국의 주소로 편지 배송
Physical layer    : 데이터를 전기적 신호로 변환 및 전송                                          편지의 전달과정 


이런 작업에 걸쳐서 완성된 패킷을 A PC에서 R1로 전송하게 된다.
그런데 위의 작업 중 data-link 계층의 작업을 자세히 보자. 박사장의 회사와 김사장의 회사가 물리적으로 가깝다면 우체국에서 바로 김사장네로 보내겠지만, 만약에 엄청 먼 거리라고 생각을 해보자. 이렇게 되면 편지를 박사장 회사의 근처에 있는 우체국에서 바로 김사장 회사의 근처 우체국으로 배송할 수 없고, 중간에 있는 다른 우체국으로 먼저 배송한 후 그 우체국에서 다시 김사장 회사 근처의 우체국으로 편지가 배송되길 예상한다.

이런 과정이 실제로 네트워크상에서 일어나며, 이때 우체국의 역할을 하는 기계가 라우터(Router) 이다.
그렇기 때문에 A PC에서는 바로 B PC의 MAC주소를 적는게 아니라 R1의 물리주소 (MAC address)를 담아 R1으로 전송하게 되며, R1에서 다시 근처의 라우터인 R2의 MAC주소로 패킷을 고쳐서 R2로 보내게 된다. 이런 과정을 거쳐서 패킷은 B PC로 전송되는것이다.
 그림을 보면 이해하는데 도움이 될 것 같다.



※IP와 MAC 그리고 PORT
위에서 아무 설명도 없이 막 썻는데 이 세개가 뭔지 잠깐 살펴보자.
IP 주소 : 데이터 전송을 위한 구별되는 주소(세계에서 유일). IP주소를 관리해주는 
MAC 주소 : Media Access Control 의 약자로 이더넷 카드의 고유식별번호이다.
PORT 번호 : 여러개의 응용프로그램들 중에서 데이터를 어디로 보내야하는지를 결정해주는 일종의 방번호.

아, 한가지 특이한 점은 Router의 IP, MAC 주소는 두개인데, 그 이유는 패킷이 들어오면 자신의 IP, MAC주소와 비교해서 보낸 PC와 받을 PC가 동일한 네트워크 상에 있는지 확인하기 위해서라고 한다.

★ Network Layer, more detail
이번학기는 다른 레이어들 보다 Network layer와 data-link layer는 보다 자세히 다룬다.
그 중 첫번째인 네트워크 레이어를 보자.

패킷의 전송방식인 switching 은 circuit switching 과 packet switching이 있다고 했다. TCP통신에서는 일반적으로 packet switching의 방법을 사용하고, 네트워크 레이어는 이 전송방식에 맞게 일을 한다. 마찬가지로 UDP방식에서도 packet switching 방식의 패킷전송을 한다. 즉 패킷을 다루기 쉬운 크기로 분할한 후(일반적으로 이를 Datagram이라 부른다.) 목적지로 보내게 된다. 그리고 받는측은 이런 분할된 패킷을 순서에 맞게 재조합한 후 데이터를 읽는것이다.
 그런데 packet switching 전송방식의 경우, 패킷이 따로따로 전달되기 때문에 나눠진 패킷 하나하나를 전송하기 위해 계속해서 라우터끼리 정보를 교환하며 최적의 경로를 동적으로 설정해줘야한다. 물론 대부분의 패킷들이 같은경로로 가겠지만 상황에 따라 다른 경로로 보내지는 패킷이 있고, 이런 일들이 패킷의 받는 순서를 다르게 만든다.
(뭬야? 패킷의 순서가 다르게 도착한다고? 그러면 받는측의 데이터는 이리저리 뒤죽박죽된 데이터인가? 다행이 그렇진 않다. 보내는 측에선 미리 패킷의 순서를 적어서 보내게되고 받는측은 받은패킷의 순서를 따라서 조합하기 때문이다.)

그렇다면 packet switching 방식으로 데이터를 보낼 때 데이터의 전송시간은 어떻게 될까? circuit switching 방식과 비교해보면서 아래그림을 보자.


라우터에서 계속해서 경로탐색을 해야하기 때문에 processing time이 들고, 계속해서 다른 패킷이 도착하니 queuing delay가 있다. 그리고 노드 사이의 케이블을 따라 데이터가 전송되는 시간이 있기 때문에 propogation delay도 고려한다.
 아 잠깐, propogation delay는 광케이블, 100Mbps 케이블 등 무지빠른 케이블을 연결하면 줄일 수 있다. 그러면 우리집 인터넷 속도가 100메가 광랜이다 라고 해서 정말로 인터넷 속도가 빨라질까? 안타깝게도 그렇진 않다. 우리집 인터넷케이블 속도는 무지 빠르지만, 그건 어디까지나 근처의 라우터까지만 해당되는 속도이고, 100메가 광랜의 네트워크를 넘어선 패킷은 그쪽 네트워크 상태에 따라 속도가 변하기 때문에 정말로 100메가바이트의 전송속도가 나올지는 미지수이다.
 
 잠깐 옆으로 새버렸는데, 다음으로 circuit switching 방식의 전송시간을 보자.


circuit switching은 처음에 회선을 구축하는 과적이 있기때문에 초기 데이터전송은 느리다. 하지만 한번 경로가 만들어지고 난 다음에는 packet switching처럼 waiting time 이 없다.
그림상으론 별 차이 없어보인다. 하지만 실제 네트워크에서 데이터의 전송속도를 결정짓는 요소는 Waiting time 특히 queuing time이다. 때문에 회선을 먼저 구축해두는 circuit switching은 무지빠른 속도로 데이터를 전달할 수 있다.
(하지만 여러가지 측면에서 packet switching이 좋다고 판단했는지 현재의 인터넷은 대부분 패킷스위칭이다.) 

network layer는 다음주에 조금 더 설명하고 이번주는 이렇게 마무리하겠다.

주절주절 쓴거같은데.. 교수님께서 너무 많은 내용을 부어주셨지만 정리하기가 힘들었다..(분량이 너무 많다)

ps. 좀 더 추가하자면, TCP는 packet switching 방식의 전송프로토콜이지만, 동시에 연결지향형(connection oriented)이다. 조금 혼동이 오겠지만, switching방식과 연결지향 및 비연결지향은 1대1관계가 아니라, 데이터의 물리적 흐름에는 switching으로 구분을 하고, 논리적으로 데이터가 어떻게 흘러가는지는 어떤 방식을 지향하는지로 구분하면 되겠다.

'Coding Note' 카테고리의 다른 글

[Network] Supernetting & Classless addressing  (0) 2011.10.26
[Network] IPv4 Address & classful addressing  (0) 2011.09.23
[Network] 네트워크란?  (1) 2011.09.07
[Data Structure] Queue  (0) 2011.08.12
[Data Structure] Stack  (2) 2011.08.04