[DCN] Ep.3 Network Models

GLICO·2024년 6월 24일

DCN

목록 보기
3/10

Data Communications and Networking, 5th Edition By Behrouz .A Forouzan, McGraw-Hill Education

이 챕터에서는 일반적인 네트워크 모델과 TCP/IP 프로토콜에 대해서 얘기할 것이다.
2가지 모델이 컴퓨터 네트워크 운영(Operation)을 위해 고안되었다 : TCP/IP프로토콜과 OSI모델.
위 두 모델에서 사용되는 일반적인 주제(subject), 프로토콜 계층화에 대해서 얘기해보고,
TCP/IP를 중점적으로 알아보면서 OSI모델은 TCP/IP와의 비교를 위해 간략하게 짚고 넘어가자.

2.1 프로토콜 계층화(Protocol Layering)

데이터 통신과 네트워크에서
프로토콜은 효율적으로 통신하기 위해서 송, 수신자 모두가 지켜야만 하는 룰을 정의한다.
통신이 간단하다면 하나의 단순한 프로토콜만이 필요하다.
하지만, 통신이 복잡하다면, 작업을 여러 레이어로 나눌 필요가 있고.우리는 각 레이어에 대해서 프로토콜 계층화(Protocol Layering)이 필요하다.

2.1.1 시나리오(Scenarios)

다음 2가지 시나리오를 통해 프로토콜 계층화에 대해서 이해해보자.

첫 번째 시나리오

해당 시나리오는 오직 하나의 레이어에서 발생하는 아주 간단한 통신이다.
Maria와 Ann이 하나의 레이어에 있고, 같은 언어로 직접적으로 얘기를 한다고 생각하자.

우리는 이 간단한 예시에도 다양한 규칙들을 볼 수 있다.
1. Maria와 Ann은 그들이 만났을 때, 서로 인사해야한다는 것을 안다.
2. 그들은 어휘를 우정 수준으로 제한해야 한다는 것을 알고 있다.
3. 각 당사자는 다른 사람이 말을 하고 있을 때, 자신은 말을 하면 안된다는 것을 알고 있다.
4. 각 당사자는 대화는 독백이 아니라 대화가 되어야 함을 알고 있다.
5. 그들은 떠날 때에도 괜찮은 말을(some nice words) 서로 나눠야 한다는 것을 알고 있다.

우리는 Maria와 Ann이 사용한 프로토콜이 강의실에서 교수와 학생들 간에 사용되는 것과 다르다는 것을 알 수 있다.
교수와 학생간의 대화에서는 꽤 독백적(Monolog)으로 진행된다.
대부분의 시간을 학생들의 질문이 없다면, 교수 혼자 이야기 한다.

두 번째 시나리오

해당 시나리오에서는 Ann이 그녀의 회사에서 높은 직급에 제안받았지만, Maria와 먼 도시에 위치해 있는 지점으로 이사해야한다고 가정해보자.

그들은 서로 중요한 프로젝트를 시작했기 때문에, 우편을 통해 계속해서 대화를 하기로 결정했다.
하지만, 그 둘은 메일이 중간에 가로쳐졌을 때, 내용이 공개되고 싶어 하지 않기 때문에, 암/복호화를 적용하기로 했다.
우리는 여기서 다음과 같은 레이어를 생각해볼 수 있다.

각 레이어에 해당 업무를 처리하는 로봇이 있다고 가정해보자.

  • Maria는 Ann에게 첫 메시지를 보내기 위해서 Layer3에 있는 로봇을 Ann이라고 생각하고 말을 하고 있다.
    해당 로봇은 평문(Plaintext)을 생성하고 이를 다음 레이어에게 전달한다.
  • 2계층 로봇은 평문을 전달 받고, 이를 암호화 하여 암호문(Ciphertext)을 생성한다.
    해당 로봇은 암호문을 다음 레이어에게 전달한다.
  • 1계층 로봇은 전달받은 암호문을 봉투에 넣고 송/수신자의 주소를 추가한 다음 메일을 보낸다.

Ann의 입장에서의 각 계층의 로봇들은 반대로 행동할 것이 예상되므로 생략하겠다.

프로토콜 계층화의 장점

  1. 우리는 이 상황에서 2계층에 암/복호화 로봇만 다른 것으로 변경하고 싶다. 우리는 이것을 모듈성(modularity)라고 말할 수 있다.

  2. 또다른 장점은, 계층화는 우리를 구현(Implementation)과 서비스(Service)를 분리하도록 한다.
    계층은 하위 계층으로부터 많은 양의 서비스들을 받을 수 있어야 하고 상위 계층으로 그것을 전달해야 할 필요가 있다.
    1계층에서 로봇 대신에 Maria가 직접 메일을 송부하는 과정을 거친다고 하더라도(Implementation) 작업은 잘 작동한다!

  3. 프로토콜 계층화가 없다면, 우리는 중간 시스템을 훨씬 더 복잡하게 만들어야 했을 것이다. 이는 곧 프로그램이 비싸지는(expensive) 결과를 초래함

2.1.2 프로토콜 계층화 원칙(Priciples of Protocol Layering)

1번 원칙

첫 번째는 우리가 양방향 통신을 원한다면, 우리는 각 레이어를 각각의 방향에서 서로 반대되는 각자의 업무를 처리하도록 만들어야 한다.

The first principle dictates that if we want bidirectional communication, we need to make each layer so that it is able to perform two opposite tasks, one in each direction.

예를 들어서, 3계층은 듣고(in one direction), 말해야 한다(in the other direction).
2계층은 암호화 해야 하고, 복호화 해야한다.
1계층은 메일을 보내야 하고, 받아야 한다.

2번 원칙

두 번째는 양쪽의 각 레이어에서 두 객체들은 서로 동일해야 한다는 것이다.
예를 들어서 양쪽의 3계층에 존재하는 객체들은 모두 평문 편지이어야 할 것이다.

2.1.3 논리적 연결(Logical Connections)

논리적 연결이란, layer-to-layer 통신을 의미한다.
해당 계층에서 생성된 개체들을 각 레이어를 통해서 전송할 수 있다라는 논리적 연결을 상상해 볼 수 있다...

정확한 의미는 잘 모르겠음.. 레이어에서 다른 레이어로 send/receive가 가능하다는 뜻으로 해석함.
After following the above two principles, we can think about logical connection between each layer as shown in Figure 2.3. This means that we have layer-to-layer communication. Maria and Ann can think that there is a logical (imaginary) connection at each layer through which they can send the object created from that layer.

2.2 TCP/IP 프로토콜 모음 (TCP/IP Protocol Suite)

TCP/IP(Transmission Control Protocol/Internet Protocol)에 대해서 알아보자.
해당 프로토콜은 계층적 구조로 각각 특정한 기능들을 제공하는 상호작용 모듈들로 구성되어 있다.
여기서 계층적(Hierarchical)이란, 각 상위 레벨 프로토콜은 하나 이상의 하위 레벨 프로토콜이 제공하는 서비스들에 의해 지원된다는 것이다.

2.2.1 계층적 구조(Layered Architecture)

TCP/IP구조가 두 호스트들 사이에서의 통신에 어떻게 추가되었는지 알아보기 위해서 다음과 같은 예시를 들어보자.

A가 B와 통신한다고 가정해보자.
이 때 5개의 통신 기기들이 필요하다

  • source Host : Computer A
  • link-layer switch : Link 1
  • the router
  • link-layer switch : Link 2
  • destination Host : Computer B

두 호스트들은 모든 5가지의 계층에 포함되어 있다.
A는 Application계층에서 메시지를 생성하고 B에게 물리적으로 전송되기 위해서 하위 계층으로 전송 해야한다.
B는 Physical 계층에서의 통신을 받은 후, 상위 계층으로 전달할 필요가 있다.

라우터는 오직 3개의 계층만을 포함하고 있다.
반면에, 스위치는 2개의 계층만을 포함하고 있다.

위 사진에서의 라우터는 3개의 링크와 물려있다. 이는 곧 각기 다른 3쌍의 프로토콜을 가져야한다는 것이고, 반면에 스위치는 동일한 링크에 속해있기 때문에 오직 한 쌍의 프로토콜만을 가지면 된다.

2.2.2 TCP/IP 프로토콜에서의 계층(Layers in the TCP/IP Protocol Suite)


논리적 연결을 사용하는 것은 각 레이어의 역할에 대해서 이해하기 쉬워진다.

첫 번째로 생각해보면,
위 사진을 통해 상위 3개의 계층의 의무는 end-to-end이고.
하위 2개의 계층의 의무는 hop-to-hop이라는 것을 알 수 있다.
(hop이란, 라우터나 호스트를 의미함)
즉, 상위 3계층은 인터넷의 영역이고 하위 2계층은 링크의 영역이다.

다음으로는,
논리적 연결에 대해서 생각하는 다른 방법은 각 레이어에서 생성되는 데이터에 대해서 생각하는 것이다.

상위3가지 레이어에서는 패킷들이 다른 라우터나 링크-레이어 스위치로부터 변경 되서는 안된다.
하위 2가지 레이어에서는 호스트에 의해 생성된 패킷은 오직 라우터에의해서만 변경 가능하다.


위 그림에서는 두 호스트간 + 두 hops간의 통신만을 표현하고 있다.
각 호스트의 각 계층에서는 서로 동일한 Identical object를 가짐을 알 수 있다.
두 홉(hops)들 간의 링크는 해당 오브젝트를 변경하지 않는다

2.2.3 각 레이어들에 대한 설명(Description of Each Layer)

각 레이어들에 대해서 아주 간략하게만 알고 넘어가보자

Physical Layer

Identical objects : bits

피지컬 레이어에서는 링크를 통해 프레임(Frame: 2계층 단위)에 있는 각 비트들을 전달하는 역할을 한다.
두 기기들은 전송매체들(케이블이나 대기 중)에 의해 연결된다.
해당 전송 매체들은 비트들을 보내는 것이 아닌, 전기나 광학 신호(Electrical or Optical Signals)를 보낸다는 것을 알아야 한다.
비트를 신호로 변경하는 여러 프로토콜에 대해서는 추후에 알아보자

Identical objects : frames

인터넷은 라우터들에 의해 연결되어지는 여러가지 링크들(LANs and WANs)로 구성되어진다는 것을 알고 있다.
라우터는 최적(Best)의 링크들을 선택하는 역할을 한다.
하지만, 라우터에 의해 다음 링크가 정해지면, 데이터-링크 레이어는 datagrams(3계층 단위)을 받아들이고 링크를 통해 이동하도록 한다.
링크는 링크-레이어 스위치를 통해 유선LAN이거나, 유선 WAN이거나 무선 WAN이 될 수 도 있다.
TCP/IP는 해당 레이어에 대한 어떠한 프로토콜도 정의하고 있지 않다. 해당 계층은 모든 표준과 프로토콜을 지원한다.

각 링크-레이어 프로토콜은 다양한 서비스를 지원한다.
몇몇 프로토콜은 에러 탐지와 수정(Detection and Correction)을 제공하지만, 몇몇 프로토콜은 오직 에러 수정만을 지원한다.

Network Layer

Identical objects : datagrams

네트워크 레이어는 두 호스트(src, dst)간의 연결을 생성하는 역할을 한다.
해당 레이어에서의 통신은 host-to-host이다. 하지만, 두 호스트간의 여러 라우터들이 존재할 수 있기 때문에 해당 라우터들은 각 패킷에 대한 최적의 경로를 선택하는 역할을 한다.
따라서, 네트워크 레이어는 host-to-host 통신과 최적의 패킷 라우팅을 위한 역할을 한다고 할 수 있다.
해당 레이어에서 왜 이 역할을 하는가?

  • 각 레이어와 담당 업무의 분리가 가능하다.
  • 라우터들은 Application과 Transport Layer가 불필요하기 때문이다.

업무들을 분리하는 것은 우리가 라우터들에 대한 더 적은 프로토콜들을 사용하게 한다.
해당 레이어에는 IP(Internet Protocol)이라고 불리는 프로토콜이 존재한다.

  • 패킷의 포맷(Datagram이라고 불리는)을 결정함.
  • 패킷 라우팅을 위한 역할을 함.

IP는 흐름제어(Flow Control)와 에러 관리(Error control), 혼잡 제어(Congestion control)를 제공하지 않는 비연결지향(Connectionless) 프로토콜임
=> 5계층(Application)에서 해당 기능이 필요하다면, 4계층(Transport)프로토콜에 의해 제공되어야 한다.

라우팅 프로토콜은 라우팅(IP프로토콜의 역할)에 직접적으로 참여하지는 않지만, 포워딩 테이블을 라우터에게 제공한다.
또한, IP를 도와주는 보조 프로토콜을 보유하고 있다.
ICMP(The Internet Control Message Protocol)는 라우팅할 때 발생하는 문제들에 대해서 report를 도와준다.
IGMP(The Internet Group Management Protocol)는 멀티태스킹에 있어서 IP를 도와준다.
DHCP(The Dynamic Host Configuration Protocol)는 IP가 호스트의 네트워크 레이어 주소를 얻는데에 도움을 준다.
ARP(The Address Resolution Protocol)는 주어진 네트워크 레이어 주소에 대한 링크 레이어 주소를 찾는 데에 도움을 준다.

Transport Layer

Identical objects : segments(in TCP) / user datagrams(in UDP)

전송 계층에서의 논리적 연결은 end-to-end이다.
Application layer로 부터 message를 받아서, segment 또는 user datagram이라고 불리는 전송 계층 패킷으로 캡슐화하여 전송한다.
즉, Application 프로그램으로 부터 메시지를 전달 받아서 목적지 호스트의 대응되는 프로그램에게 전송하는 역할을 한다.

주요 프로토콜로는
연결 지향적인(Connection-oriented)프로토콜인 TCP(Transmission Control Protocol)이 있다.

  • 흐름 제어 제공 : 목적지 호스트의 데이터 수신률과 전송지 호스트의 데이터 전송률을 제어한다.
  • 에러 제어 제공 : 에러 없이 목적지에 도착하는 것과 에러 발생 시 재전송을 보장함.
  • 혼잡 제어 제공 : 네트워크 혼잡 시 패킷 로스를 줄이기 위함.

비연결 지향적인(Connectionless)프로토콜인 UDP(User Datagram Protocol)이 있다.
=> 각각의 Datagram들은 서로간의 연관성이 없는 각각 독립적인 entity임.

SCTP(Stream Control Transmission Protocol)은 멀티미디어에서 출현하고 있는 새로운 애플리케이션에 대한 프로토콜이다.

Application Layer

Identical objects : messages

논리적 연결은 end-to-end

해당 레이어에서의 애플리케이션 통신은 두 프로세스들 사이에서 일어난다.
통신하기 위해서, 다른 프로세스들과 Request & Response를 주고 받는다.

  • HTTP(The Hypertext Transfer Protocol),
  • SMTP(The Simple Mail Transfer Protocol),
  • FTP(The File Transfer Protocol),
  • TELNET(The Terminal Network),
  • SSH(Secure Shell),
  • SNMP(The Simple Network Management Protocol),
  • DNS(The Domain Name System) 등의 프로토콜이 존재한다.

2.2.4 캡슐화와 역캡슐화(Encapsulation and Decapsulation)

프로토콜 계층화에 있어서 가장 중요한 개념중의 하나가 캡슐화와 역캡슐화이다.

(캡슐화 및 역캡슐화는 link-layer switch에서는 발생하지 않음)
source host에서는 캡슐화가, destination host에서는 역캡슐화가 진행됨을 볼 수 있다. (라우터에서는 2가지 모두)
각 레이어를 통해 패킷이 전달될 수록 헤더가 추가 되거나 제거 된다.

Source Host에서의 캡슐화

  • Application 레이어에서 데이터는 message라고 불리는 것으로 변환 되어 Transport 레이어로 전달 됨.
  • Transport 레이어는 payload로써 message를 받음. 해당 payload에 Transport 헤더를 추가함.
    => 해당 헤더에는 end-to-end 통신을 위해 필요한 약간의 정보(흐름, 혼잡, 에러 제어)와 출발지/목적지 정보가 포함되어 있음.
  • 이후 해당 패킷을 Network 레이어로 전달함.
  • Network 레이어 역시 해당 패킷에 자신의 헤더를 추가함.
    => 해당 헤더에는 출발지/목적지의 주소 정보와 헤더의 에러 체킹, 조각화(Fragmentation) 정보 등이 추가되어 있다.
  • Data-link 레이어로 해당 패킷을 전달함.
  • Data-link 레이어는 호스트나 다음 hop(router)의 link-layer 주소를 포함하고 있는 헤더를 추가하여 전송을 위해 Physical 레이어로 전달 됨.

Router에서의 캡슐화와 역캡술화

  • 비트 집합 들이 Data-link 레이어를 통해서 전달된 이후에, 해당 레이어는 Frame으로부터 datagram을 역캡슐화하여 Network 레이어로 전달한다.
  • Network 레이어는 오직 datagram 헤더에 있는 출발지/목적지 주소만을 조사하고, datagram이 전송될 다음 hop을 찾기 위해서 자신만의 forwarding table을 생각한다.
  • datagram의 내용은 패킷의 크기가 너무 커서 조각화(Fragmentation)가 필요하지 않는 한, 변경되어서는 안된다.
  • 다음 링크의 data-link 레이어는 해당 datagram을 frame으로 다시 캡슐화하고 전송을 위해서 Physical 레이어로 전송한다.

2.2.5 주소지정(Addressing)

프로토콜 계층화와 관련된 다른 개념은 주소지정이다.
두 참여자 간의 어떠한 통신이던간에 출발지/목적지 주소가 필요하다.
각 레이어에서 필요한 주소들은 다음과 같다.

Names는 someorg.com과 같은 서비스를 제공하는 사이트의 이름이거나, e-mail주소 등이 된다.
Port numbers는 동시에 실행되는 다양한 프로그램들을 구분하는 local address이다.
Network Layer의 주소는 인터넷과 기기의 연결을 유일하게(Uniquely)정의한다.
Link-layer 주소는 종종 MAC주소라고 불린다. 이는 특정 호스트나 라우터를 정의하는 local address이다.

2.2.6 다중화와 역다중화

다중화(Mulitplexing)란, 한 계층에서의 프로토콜이 상위 레이어 프로토콜로부터 전달되는 패킷을 한 번에 하나 씩(one at a time) 캡슐화 할 수 있다는 것이다.
역다중화(Demultiplexing)란, 프로토콜이 역캡슐화되고 한 번에 하나 씩 다음 상위 계층의 프로토콜로 패킷이 전달될 수 있다는 것이다.

다중화와 역다중화가 가능하려면, 프로토콜은 그들의 헤더에 어떤 프로토콜이 캡슐화된 패킷을 가지고 있는지 식별할 수 있는 필드(출발지/목적지 포트번호, IP주소)가 필요하다.
전송 계층에서 TCP/UDP는 다양한 응용 계층으로부터 메시지를 받을 수 있다.
네트워크 계층에서, IP는 segment(TCP)나 user datagram(UDP)을 받을 수 있다.

2.3 OSI 모델

1970년, 국제표준기구(ISO, International Organizaion for Standardization)는 OSI(Open Systems Interconnection)모델을 공개했다.
OSI 모델의 목적은 서로 다른 시스템들이 하드웨어나 소프트웨어의 로직(logic)변경 없이도 용이한 통신을 하는 방법을 보이는 것이다.
즉, 유연한 네트워크 구조를 이해하고 설계하기 위한 개념적 모델이다.

2.3.1 OSI vs TCP/IP

두 모델을 비교할 때, TCP/IP모델에는 session, presentation 계층이 Application 계층과 합쳐졌다는 것을 알 수 있다.

OSI모델이 TCP/IP를 대체하지 못했던 이유
1. TCP/IP모델이 완전하게 정착한 이후에 개발되었고, 많은 시간과 돈이 든다.
2. OSI모델의 몇몇 계층은 완전하게 정의되지 않았다.
3. OSI가 구현되었을 때, TCP/IP에서 OSI모델로의 변경을 위한 높은 수준의 성능을 보이지 못했다.

2.4.3 Summary

  • 프로토콜이란, 통신을 합의하는 룰들의 집합이다.

  • 프로토콜 계층화에 있어서, 우리는 양방향 통신을 제공하기 위해서 2가지 원칙을 따라야 할 필요가 있다.
    1. 각 레이어는 두가지 반대되는 업무를 수행해야 한다. (다중화와 역다중화, 암호화와 복호화)
    2. 양측의 각 레이어에서의 두 오브젝트들은 서로 동일해야 한다. (Host A's datagram(3rd Layer) & Host B's datagram(3rd Layer))

  • logical connection : 같은 레이어에서의 2가지 프로토콜들은 논리적 연결을 가질 수 있다.

  • Physical connection : 오직 Physical Layer에서만 가능하다.

  • TCP/IP model
    1. Physical layer는 물리적 매체를 통해 bit 스트림을 전송한다.

    1. Data-link layer는 에러 없이 다음 스테이션으로 데이터를 전송한다.
    2. Network layer는 다양한 네트워크 링크를 가로질러 패킷을 전달한다.
    3. Transport layer는 전체 메시지를 process-to-process 전달한다.
    4. 유저들이 네트워크에 접근하도록 한다.
  • TCP/IP프로토콜에는 4가지 수준의 주소가 존재한다.

  1. 물리적(링크) 주소 : LAN or WAN에 의해 정의된 노드의 주소
  2. 논리적(IP) 주소 : 인터넷에서 호스트를 정의하는 유니크한 주소
  3. 포트 주소 : 호스트의 프로세스를 특정하는 주소
  4. 특정 주소(Specific addresses) : 사용자 친화적인 주소
profile
Its me Glico

0개의 댓글