Transport Layer - 앱 계층과 네트워크 계층 사이의 서비스

Dong-Hyeon Park·2023년 10월 17일
0

Network

목록 보기
4/8
post-thumbnail

본 글은 Computer Networking: a Top Down Approach의 전송 계층 챕터를 정리한 글입니다.

🟢 개요

  • Application Layer와 Network Layer사이에서, Transport Layer는 네트워크 구조에서 중추적인 역할을 한다.

  • 여러 호스트들에 의해 실행되는 앱 프로세스들에게 논리적인 통신(communication)을 제공한다.

  • 논리적인 통신이란, 실제로는 수많은 라우터와 링크에 의해 연결 돼있음에도, 앱의 관점에서는 호스트들이 직접적으로 연결된 느낌을 받는다는 것이다.

  • 덕분에 앱 프로세스들은 실제 물리적인 인프라 구조가 어떻게 구성되어 있는지 이해할 필요 없이, 서로 통신 메시지를 주고 받을 수 있다.

  • Transport Layer는 끝단(end)의 시스템에서 구현되는 것이지, 라우터에 구현되어 있지 않다.

🟢 Transport Layer: 통신 계층

🟡 Transport Layer가 하는 일

🟠 송신

  • 결과적으로 Transport Layer는 Application Layer의 송신 메시지를 Segment(Transport Layer 통신 패킷)로 변환한다.

  • 송신 메시지는 Transport Layer 헤더가 추가된 여러 개의 chunk(segment)로 분해된다.

  • 이후 Transport Layer는 여러 개의 segment를 송신 end system에 존재하는 Network Layer에게 넘기는데, segment는 datagram이라는 Network Layer 패킷으로 캡슐화되고, 목적지로 전송된다.

  • 네트워크 라우터가 오직 datagram의 network-layer 속성에만 작용하고, 캡슐화된 segment의 transport-layer 속성에는 아무 작용도 하지 않는 것에 주목하자.

🟠 수신

  • 수신 장소(패킷의 목적지)의 network layer는 datagram을 풀어헤쳐 segment를 추출해내고, transport layer에게 전달한다.

  • Transport layer는 segment에 담긴 데이터를 어플리케이션에게 전달할 수 있도록 가공한다.

Transport Layer 프로토콜은 네트워크 어플리케이션에 여러 개 존재할 수 있다. 예시로 인터넷은 TCP와 UDP 프로토콜을 가지며, 각 프로토콜은 어플리케이션에게 다른 transport layer를 제공한다.

🟡 Transport Layer와 Network Layer의 관계

  • 전송 계층이 서로 다른 호스트에 실행되는 프로세스 간에 논리적인 통신을 제공해주는 반면, 네트워크 계층은 호스트 간에 논리적인 통신을 제공해준다.

🟠 예제 1 - 전송 계층과 네트워크 계층

  • 동부와 서부에 가정이 하나씩 있고, 그곳에는 각각 12명의 아이가 존재한다고 가정

  • 아이들은 매주 타지역 아이들 모두에게 편지를 보냄

  • 그래서 각 집마다 144통의 편지가 발송됨

  • 동부는 철수가 편지를 모으고, 부치는 일을 도맡아서 함.
    우체부에게 편지를 받는 것도 철수가 혼자서 하고, 다른 형제들에게 나눠줌.

  • 서부는 짱구가 똑같은 일을 함.

  • 여기서 우체국동부 가정과 서부 가정에게 논리적인 통신을 제공했다고 할 수 있음.

  • 그리고 철수와 짱구는 각 집안의 형제들에게 논리적인 통신을 제공했다고 할 수 있음. 그리고 끝단(end) 에 존재함.

  • 이 예제에서 우체국은 네트워크 계층, 철수와 짱구는 전송 계층이라고 볼 수 있다.

어플리케이션의 메시지 = 편지
프로세스 = 형제들
호스트 = 가정
전송 계층 = 철수와 짱구
네트워크 계층 = 우체국(우편 서비스)
  • 이 예제를 통해 더 주목해야 될 사실은, 철수와 짱구는 오직 그들의 가정에서만 할 일을 한다는 것이다. 철수나 짱구가 우체국에 가서 메일을 분류하거나 우편을 운송하지 않는다.

  • 같은 의미로, 전송 계층은 end system에 존재하며 프로세스의 메시지를 받아 네트워크 계층에 넘겨주는 일만 할 뿐이다. 네트워크 상으로 메시지가 어떻게 전달될 지는 신경쓰지 않는다.

  • 실제로 중간 라우터는 전송 계층이 메시지에 추가한 정보에는 어떠한 작업도 하지 않는다.

🟠 예제 2 - 다양한 전송 프로토콜

  • 철수와 짱구가 여행을 가서, 맹구와 훈이가 역할을 도맡게 됐다고 하자.

  • 하지만 맹구와 훈이는 가끔씩 편지를 잃어버리는 실수를 한다.
    즉, 철수와 짱구만큼의 서비스를 제공하지 못하는 것이다.

  • 이처럼 네트워크에도 다양한 transport protocol이 존재하며,
    어플리케이션에게 각자 다른 서비스 모델을 제공할 수 있다.

🟠 예제 3 - 네트워크 프로토콜에 의해 제한되는 전송 프로토콜

  • 만약 우체국에서 우편 배달에 걸리는 시간을 무기한으로 공지했다고 가정해보자.

  • 그럼 철수와 짱구도 무기한으로 기다릴 수 밖에 없다.

  • 이처럼 전송 계층 프로토콜이 제공하는 서비스는 네트워크 계층 프로토콜에 의해 제약을 받는다.

  • 네트워크 계층 프로토콜이 대역폭이나 딜레이에 대한 보장을 해주지 않으면 전송 계층 프로토콜도 프로세스들에게 대역폭이나 딜레이에 대한 보장을 해줄 수 없다.

🟠 예제 4 - 전송 프로토콜이 독립적으로 제공할 수 있는 서비스

  • 그럼에도 불구하고 몇몇 서비스는 네트워크 계층 프로토콜이 제공해주지 않아도, 전송 계층에게서 제공받을 수가 있다.

  • 예시로, 전송 프로토콜은 네트워크 프로토콜이 비신뢰적이라도 신뢰적인 데이터 전송 서비스를 제공할 수 있다.

  • 또 다른 예시로는, 전송 프로토콜은 암호화를 사용하여 메시지가 침범당하지 않도록 할 수 있다. (네트워크 프로토콜에 보안 체계가 없더라도)

🟡 용어 정리: Segment & Datagram

  • 보통 TCP/UDP의 패킷은 모두 segment라고 부를 수 있다.

  • 하지만 UDP의 패킷datagram이라고도 부른다.

  • 하지만 네트워크 계층의 패킷 또한 datagram이라고 부르는 경우가 있기 때문에, 차이를 인지하고 사용해야 한다.

🟡 대표적인 전송 계층 프로토콜: TCP & UDP

  • 네트워크 앱을 설계할 때 앱 개발자는 두 전송 계층 프로토콜 중 하나를 선택해야 한다. (각 프로토콜에 대한 내용은 다른 글에서 자세히 알아보자)

  • TCP: 연결 지향적이며, 신뢰성 있는 데이터 전송을 제공한다. 링크와 라우터에 과도한 트래픽이 몰리는 것을 방지하는 혼잡 제어 기능 또한 제공한다.

  • UDP: 낮은 연결 딜레이와 패킷 오버헤드를 강점으로 갖는다.

🟡 Multiplexing & Demultiplexing

  • 전송 계층의 가장 기본적인 역할은 두 end system 간의 IP 서비스두 프로세스 간의 전송 서비스로 확장하는 것이다.

  • 이것을 멀티플렉싱 및 디멀티플렉싱이라고 한다. (이것도 자세한 내용은 다른 글에서 알아보자)

☑️ 요약

  • 전송 계층(Transport layer)는 App Layer와 Network Layer 사이에서
    서로 다른 end system에서 실행되는 두 프로세스에게 논리적인 통신을 제공한다.

  • 전송 계층은 오직 end system에만 존재하며,
    네트워크 상으로 메세지가 어떻게 전달될 지는 신경쓰지 않는다.

  • 전송 계층의 패킷(PDU)는 segment라고 부르며, UDP의 PDU를 datagram이라고 하기도 한다.
    그러나 네트워크 계층의 패킷도 datagram이라 부르는 경우가 있어 구분이 필요하다.

  • 본질적으로 전송 계층의 역할은 IP 서비스를 프로세스 간의 전송 서비스로 확장하는 것이고, 이런 확장을 멀티플렉싱과 디멀티플렉싱이라고 한다.

profile
Android 4 Life

0개의 댓글

관련 채용 정보