개요

|

네트워크란 무엇인가? 통신장치를 서로 연결한 것을 네트워크라고 부른다.즉 컴퓨터와 컴퓨터가 연결된 조직을 네트워크라고 부른다.
여기서 네트워크와 네트워크를 이은 것을 internet(inter-network) 이라고 부른다. 여기서 이 internet들이 모여 거대해진 네트워크 조직을
고유명사로 Internet이라고 한다.(internet과 고유명사 Internet은 약간 다른 의미다.)

여기서 ISO기관에서 네트워크 표준을 정했는데, OSI 모델이라고 한다.이것은 프로토콜이 아니라 네트워크 구조를 설계하고 이해하기 위한 모델이다.
OSI 모델은 7계층 구조로 이루어져 OSI 7 layer라고도 불린다.

 

 

보편적으로 우리가 사용하는 프토로콜인 TCP/IP 프로토콜은 위 OSI 모델보다 먼저 개발되었다. TCP/IP는 OSI모델과 조금 차이가 있지만 큰 틀에서 크게 벗어나지 않는다.우리가 사용하는 Internet은 네트워크 간 연결에 TCP/IP를 사용한다.(물론 다른 네트워크 연결에는 다른 방법도 쓰인다.) 

 

TCP/IP모델에는 Presentation과 Session이 빠져있다.어쨌든 각 레이어는 정보의 전송에 관해 할 일을 모듈화 시켜놓은 것이다.

 


TCP/IP 프로토콜은 Packet Switching Network 방식이다. 이 방식은 데이터 전송 시 패킷 단위로 encapsulation해서 전송하되, 이 패킷은 전송시 순서나 경로가 모두 독립적이고 ,Control Office의 개념 없이 스스로 경로를 결정하는 방식이다.경로는 노드(라우터)마다 결정되고, 각 노드끼리 정보를 주고 받으며 Routing Table을 생성,공유해 경로를 결정한다. 위 그림을 보면, 보내는 쪽에서는 1,2,3,4 순서대로 전송을 하지만, 수신자가 패킷을 받기 전, 즉 네트워크를 통해 패킷이 이동할 때는 각기 다른 경로와 다른 순서로 수신자에게 도착하게 된다. 이는 TCP/IP 통신이 packet의 경로 결정을 중앙에서,혹은 송신-수신자가 연결을 할 때 미리 결정하는 것이 아니라 각 라우터로 분산처리한다.


이에 대비되는 방식은 Circuit Switching Network인데, 이 방식은 한 지점에서 다른 지점으로 전송 시 여러 경로 중 하나를 정하고 그 경로로만 데이터를 보내는 방식이다. 이 방식은 경로를 설정해주는 Control Office의 개념이 필요하게되는데,만일 이것이 제 기능을 하지 못하게 되면 망 전체를 쓸 수 없게 되어버린다.예로는 유선 전화망이 있겠다.


초기 Internet의 design goal은 1. 안정성 , 2.다수의 사용자가 같이 사용(Circuit은 임시 "전용선"이 되어버리므로 다른 사용자가 사용하지 못한다.)이므로, 자연스레 Packet Switching Network를 택하게 된 것이다.(Packet 방식은 사용하지 않는 선을 다른 사람이 사용할 수 있다.)물론 Circuit 방식에도 bandwidth 보장(QoS)같은 장점이 있어, Packet 방식과 Circuit 방식을 같이 사용하는 경우도 있다.
회선의 bandwidth가 모자란데도 계속 데이터를 보내면 어떻게 될까? Circuit 방식에서는 전용 경로이므로 모자랄 일이 없겠지만,packet 방식에서는 loss되어 버린다. 이를 대비해 신뢰성과 혼잡제어를 보완해주는 것이 TCP다.쉽게 말해, TCP/IP에서 TCP는 신뢰성과 혼잡제어를, IP는 경로를 담당한다고 볼 수 있다. 

어쨋든, 위 모델에서 각각의 레이어는 전송에 관해 할 일을 모듈화해서 정해놓은 것이다.(프로그래밍하기 쉬우니까)
레이어가 하단에 있을 수록 레이어를 거치면서 데이터가 첨가되어(각 레이어의 header가 붙어서) 점점 커지게 된다.각각의 레이어를 하나씩 보자면,

 

 




Physical 레이어(사진에는 글자가 누락되어 있지만 가장 마지막 단)는 가장 하단의 레이어이며 전송 시 비트 단위로 전송된다.이 레이어는 개개의 비트들을 한 노드에서 다음 노드로 전달하는 책임을 갖는다.즉 실제 전송은 이 레벨에서 이루어지게 된다.말 그대로 물리적인 전송을 의미한다.

Data link 레이어는 물리 레이어의 비트를 frame이라는 데이터 단위로 나눈다.여기에,네트워크 레이어에서 내려온 데이터에 헤더를 추가하게 되는데, 이 헤더에는 "프레임의" 발신지와 목적지를 포함한다.(source와 final destination이 아니라, 한 라우터에서 다른 라우터로 갈 때 - 이를 hop to hop delivery를 제공한다고 한다.) 이것은 TCP/IP에서는 MAC 주소로 표현된다.MAC 주소는 Network Interface Card에 부여되고,네트워크 레이어에서 IP주소를 보고 데이터 링크 레이어로 내려오기 때문에 이 물리 주소는 LAN안에서만 다르면 된다.한 노드(호스트나 패킷 스위치)에서 다른 노드로 패킷을 이동시키기 위해서는 이 계층 서비스가 필요하다.이 레이어는 한 LAN에서의 전송을 책임진다고 보면 된다.

Network 레이어는 데이터가 발신 지점에서 최종 목적지까지 갈 수 있도록 목적지의 주소를 기억한다.이것은 TCP/IP에서 IP주소의 형태로 기억된다.데이터가 전송 중 유실되지 않기 위해서 이 주소는 Internet 상에서 유일해야 한다.이 계층의 통신 단위는 Datagram이라고 불린다.데이터 링크 레이어에서는 물리 주소(맥 어드레스)가 노드 대 노드로 가면서 계속 바뀌는 반면 데이터그램의 주소는 최종 목적지의 정보이므로 끝에 도착할 때까지 바뀌지 않는다.즉 데이터 링크가 hop to hop이라면 네트워크 레이어는 source to destination이다. 네트워크 레이어를 가진 모든 인터넷 요소는 IP 프로토콜을 수행해야 한다.이 프로토콜은 데이터그램이 이동하는 경로를 결정하는 라우팅 프로토콜을 포함하고 있다.

Transport 레이어는 process간 전송을 책임진다.(process to process)이 계층은 어떤 프로세스에게 패킷이 전달되어야 할 지 책임진다.이 계층의 헤더에는 port 번호가 들어있는데, 이 번호를 기반으로 전달받을 프로세스에게 패킷을 전달할 수 있도록 한다.즉 시스템 안에서 app나 프로토콜을 구분하기 위한 숫자가 포트 번호다.이 계층의 전송 단위는 Segment인데(UDP에서는 user datagram이라고 한다.),이 안에는 순서번호가 있어 패킷이 전송 중 손실되거나했을 때 식별을 가능하게 해준다.(한 세그먼트는 여러 데이터그램으로 이루어지는데, 이 각각의 데이터그램은 서로 다른 경로를 갖고 있을 수 있으므로 순서가 바뀌어 도착하거나 유실될 수 있다.)
참고로, 서버와 클라이언트의 포트 번호는 서로 다르다.클라이언트의 포트 번호는 보통 시스템이 임시 포트 번호를 할당해준다.예를 들어 http 포트는 80번인데, 서버에는 80번 포트로 접속하지만,(destination port) 클라이언트에서 보내는 포트(source port)는 80번이 아니다.
이 레이어에서 데이터를 어떻게 단위화하는지에 따라 프로토콜이 나뉘는데,종류로써는 TCP나 UDP등이 있다.  간단히 말해서 TCP는 긴 메시지를 짧게 나누고, 혼잡 제어나 흐름 제어, 신뢰성을 보장하는 반면, UDP는 데이터의 경계가 없고 신뢰,흐름제어, 혼잡제어를 제공하지 않는 비연결성 서비스로, 더 간단하다.

TCP/IP의 Application 레이어는 OSI 모델의 상위 3개 레이어인 Session, Presentation, Application 레이어를 합친 것과 같다. 이 계층에서는 사용자(S/W나 사람같은)가 네트워크에 접속하는 것을 가능하게 한다.이계층에서는 HTTP,전자우편,파일 전송,WWW등의 많은 프로토콜이 규정되어 있고,통신 단위는 Message다.
송신 쪽에서는 이런 레이어들의 스택(이를 프로토콜 스택이라고 한다)의 아래로 데이터를 보내고,중간 과정에서는 스택의 위,아래로 보냈다가 최종적으로는 스택의 꼭대기까지 거치게 된다.

여기서 잠깐,frame(데이터 링크 레이어),datagram(네트워크 레이어),segment(전송 레이어)가 담고 있는 주소에 대해 정리하자면,
일단 frame에서는 물리 주소를 사용한다.즉 사용하는 주소 형태는 MAC 주소다.
datagram에서는 논리 주소를 사용한다.즉 IP주소를 사용한다.
segment에서는 프로세스의 포트 주소를 사용한다.

이 레이어들은 서로 각자 할 일을 분업화해서 수행하므로, 다른 레이어의 역할에 대해서는 전혀 신경쓰지 않아도 된다.

이제 이 정보를 토대로 TCP/IP에서 데이터 전송이 어떻게 이루어지는지 개략적으로 살펴보자.

일단 physical layer는 건너뛰고, Data link layer를 살펴보면,



 

PC위에 있는 숫자는 MAC 주소다. MAC주소는 한 LAN안에서 쓰이는 주소다. 앞서 말한대로 Data link layer는 한 LAN에서의 전송을 책임진다. Sender의 MAC주소는 10, Receiver의 MAC 주소는 87이다. Frame을 생성할 때, 보내는 쪽 MAC주소와 받는 쪽 MAC주소를 함께 싣는다.
여기서 스위치는 해당 Frame을 보고 87 MAC 주소가 어떤 물리 포트에 물려있는지 알고 있다면, 그쪽으로 바로 보낸다. 하지만 이를 모른다면,연결되어 있는 모든 PC에 다 보내게 된다.(한 LAN안의 모든 구성원들에게 전부 보내는 것을 boradcasting이라고 한다.) 28,53 MAC주소를 가진 PC는 해당 Frame을 보고, source address가 자신이 아니므로 해당 Frame을 폐기한다. 


다음은 Data link Layer에 Network Layer, 즉 IP주소까지 같이 보는 예제다.

 

20 | 10 / A | P 에서, 앞의 숫자는 물리 주소(맥 주소), 뒤의 알파벳은 논리 주소(IP주소)를 뜻한다. 물론 실제로는 전부 숫자다.
각 장치(PC나 라우터)는 한 쌍의 주소(물리와 논리)를 가진다. 컴퓨터는 단지 하나의 링크에만 연결되어 있기 때문에 한 쌍의 주소만 갖지만, 라우터는 여러개의 NIC를 갖고 있어서, 각 속해있는 LAN마다 주소쌍을 가진다. 예로 라우터 1은 LAN1에서는 F / 20을 할당받고, LAN2에서는 T/99를 할당 받았다. 출발지의 주소 쌍은 물리 : 10, 논리 : A값이다.(도착|출발/출발|도착.) 이때 나가는 패킷의 정보의 출발지의 물리 주소는 10, 도착지는 바로 다음 hop의 라우터의 값인 20, 물리 주소는 A,도착지는 P다. 다음 라우터 1번에서는 받은 패킷을 뜯어보는데,

* 그림에서 가운데 있는 네모난 것은 브릿지 혹은 리피터다.이는 단순히 신호를 증폭시켜주기만 한다.이후 다른 그림에서 네모에 다른 링크가 이어져 있다면 스위치다.스위치는 LAN 안에서 MAC 어드레스 테이블을 가지고 패킷을 모든 노드에 보내는 것이 아니라 해당하는 맥 주소에만 보낼 수 있도록 필터링해준다.라우터는 네트워크 간 전송을 맡고,스위치는 한 네트워크 안의 전송을 맡는다. 요즘은 스위치가 라우터의 기능을 갖거나 라우터가 스위치의 기능을 갖는 제품들이 나오고 있다고 한다.*



 

이런 순으로 뜯어보게 된다. 물리 레이어에서 전송된 패킷을 받아 데이터 링크 레이어에서 뜯어 맥 주소를 확인하고,목적지의 맥 주소와 자신의 맥 주소가 같다면(다르면 폐기한다) 패킷에서 헤더와 트레일러(끝부분 - 보통 오류 검출에 필요한 추가비트를 포함함)를 뜯어 버리고 상위 계층(네트워크 레이어)로 전달한다.
네트워크 레이어에서는 목적지의 IP주소를 참조하여  라우팅 테이블(라우터마다 갖고 있으며,목적지에 도착하기 위해 가야 할 다음 hop의 IP 주소를 담고 있다.1번 라우터에서는 P로 가기 위한 다음 지점에 대한 IP를 갖고 있다. 즉 목적지의 IP와 그 목적지로 가기 위한 다음 hop의 IP가 mapping되어 있다.)을 참조하여 다음 hop의 IP주소를 찾고, 또 ARP를 참조하여 다음 hop의 IP주소에 해당하는 MAC 주소를 찾는다. 그후 다시 데이터 링크 레이어로 해당 MAC주소를 내려보내 다시 캡슐화 한다.

위의 예제에서는 패킷의 물리 주소 10을 보고 라우터 1이 받아 패킷의 목적지 P를 보고, 라우팅 테이블과 ARP를 통해 다음 라우터인 라우터2로 패킷을 다시 포장해 보낸다. 이 때 보내는 물리 주소는 라우터의 99와 33으로 변경되는 반면, IP주소는 바뀌지 않는다. 
다시 재포장된 패킷은 다음 목적지인 라우터 2로 향한다. 여기서도 마찬가지로 데이터링크 레이어까지 뜯어 맥주소를 보고 목적지 주소가 자신과 일치하는지 보고,맞다면 네트워크 레이어에서 목적지의 IP주소를 토대로 라우팅 테이블에서 다음 목적지를 찾고 해당 목적지의 맥 주소를 ARP cache table에서 찾아 데이터 레이어에 보내 다시 캡슐화 시킨다. 이렇게 해서 목적지에 패킷이 도달하면 패킷의 헤더가 벗겨져 상위 레이어로 전달된다.
중요한 포인트는, hop에서 hop으로 갈 때마다 물리 주소(맥 주소)는 변경되지만, 논리 주소(IP주소)는 변경되지 않는다는 점이다.(포트 주소도 변하지 않는다.) 또한 라우터에서 라우터로 갈 때 물리 - 데이터링크 - 전송 레이어까지 뜯어보고 다음 목적지를 정하지만 그 이상의 레이어는 뜯어보지 않는다는 점이다.(물론 방화벽같은 특수한 상황에서는 더 뜯을 수 있다)

목적지에 도착한 데이터는 이제 특정 프로세스에게 전달이 되어야 하는데,  이때 전송 레이어의 포트 번호가 쓰이게 된다. 전송 레이어의 세그먼트에는 보내는 쪽 프로세스의 포트 주소와,받는 쪽 프로세스의 포트 주소가 포함되어 있다.이 번호도 논리 주소와 마찬가지로 도착할 때까지 변하지 않는다.

이렇게 레이어마다 데이터가 캡슐화 되어 전송되는 과정을 그림으로 요약하자면,

 

이렇게 된다. 중요한 점은 TCP/IP에서는 하위 레이어로 갈 수록 정보가 추가가 된다는 점이다.

'ComputerEngineering > Network' 카테고리의 다른 글

Sticky client  (0) 2017.08.10
TSPEC  (0) 2017.08.10
BitTorrent  (0) 2016.12.16
TCP  (0) 2014.05.09
Transport Layer  (0) 2014.04.27
개요  (0) 2014.04.26
trackback 0 And comment 0
prev | 1 | 2 | 3 | 4 | 5 | 6 | next