COMPUTER NETWORKING A Top-Down app 8th

[Network] 3-1. 전송계층 서비스 및 개요

patrick-star 2023. 9. 5. 22:21
728x90

전송 계층(transport layer)에 대해서 다뤘던 내용을 간략하게 살펴보도록 하자.

전송계층 프로토콜은 서로 다른 host에서 동작하는 애플리케이션 프로세스간에 논리적 통신(logical communication)을 제공한다.
논리적 통신이란 애플리케이션 관점에서 보면 프로세스들이 동작하고 있는 호스트들이 직접 연결된 것 처럼 보인다는 것을 의미한다. 실제로 host 들은 서로 다른 지역에 있기 때문에 물리적으로는 직접적으로 연결 될 수 없다.

애플리케이션 프로세스는 메시지 운반에 사용되는 물리적 인프라의 세부사항에 관계없이 서로 메시지를 송/수신하기 위해 전송 계층에서 제공하는 논리적 통신을 사용한다.

  • 논리적 통신의 개념 그림

위 그림과 같이 전송 계층 프로토콜종단 시스템(end system)에서 구현된다.

대략적인 과정을 살펴보면 다음과 같다.

1) 송신 측 전송 계층은 송신 애플리케이션 프로세스로부터 수신한 메시지를 전송계층 패킷(전송계층 segment)으로 변환한다.
- 이 과정은 애플리케이션 메시지전송계층 segment로 만들기 위해 작은 조각으로 분할 & 각 조각에 전송계층 헤더를 추가함으로써 수행된다.

2) 그 다음에 송신 측 전송계층은 송신 종단 시스템에 있는 네트워크 계층으로 segment를 전달한다.
- 이때, segment가 네트워크 계층 패킷(datagram) 안에 캡슐화되어 목적지로 전달된다.
- 네트워크 라우터는 오로지 데이터그램의 네트워크 계층 필드에 대해서만 동작한다. (즉, 캡슐화된 전송 계층 segment의 필드를 별도로 검사하지 않는다)

3) 수신 측의 네트워크 계층은 datagram으로 부터 전송계층 segment를 추출하고 전송계층으로 segment를 보낸다.
4) 전송계층은 수신 측 애플리케이션이 segment 내부에 있는 데이터를 이용할 수 있도록 수신된 segment를 처리한다.

1. 전송 계층과 네트워크 계층 사이의 관계

전송계층은 프로토콜 스택에서 네트워크 계층 바로 위에 있다. 둘의 차이점을 살펴보면

  • 전송계층 프로토콜 : 서로 다른 호스트에서 동작하는 프로세스들 사이의 논리적 통신을 제공
  • 네트워크 계층 프로토콜 : host 사이의 논리적 통신을 제공

ex) 두 집안의 아이가 각각 12명씩 있다고 하자. A 집에는 희수 / B 집에는 지수가 있다고하자.

  • 두 집간의 편지 교환 ⇒ host 사이의 논리적 통신
  • A 집의 희수와 B 집의 지수끼리 편지 교환 ⇒ 서로 다른 host의 프로세스들 사이의 논리적 통신

여기서 두 집 사이에서 통신할 때 누가 통신을 담당하느냐에 따라 서로 다른 서비스를 제공하게 된다.
(ex. A집의 희수가 통신을 담당할 때와 A집의 성모가 통신을 담당할 때 각각 다른 것 처럼)

마찬가지로 컴퓨터 네트워크는 애플리케이션에서 서로 다른 서비스를 제공하도록 개별 프로토콜을 갖는 다양한 전송계층 프로토콜을 만들 수 있게 한다.

A집의 희수와 B 집의 지수가 서로 편지를 주고받을 때, 우편 서비스에 의해 소요되는 최대 지연 시간을 정해주지 않는다
희수와 지수가 서로 우편물 주고 받을 때 최대 지연을 보장할 수 있는 방법이 없다.

마찬가지로, 전송계층이 제공할 수 있는 서비스는 하위 네트워크 계층 프로토콜의 서비스 모델에 의해 제약받을 수 밖에 없다.

몇몇 서비스는 전송계층에서만 지원하는 서비스가 있다. 예를 들면 네트워크 프로토콜이 패킷을 분실하거나 손상시키는 등 신뢰할 수 없는 상태이더라도 애플리케이션에게 신뢰할 수 있는 전송 서비스를 제공할 수 있다.

2. 인터넷 전송계층의 개요

인터넷은 애플리케이션 계층에서 2가지 전송계층 프로토콜을 제공한다는 걸 배웠다.

  • UDP (User Datagram Protocol) : 비신뢰적이고 비연결형인 서비스를 요청하는 애플리케이션에게 제공하는 프로토콜
  • TCP (Transmission Control Protocol) : 신뢰적이로 연결지향형 서비스를 요청하는 애플리케이션에게 제공하는 프로토콜

용어를 통일하기 위해서 인터넷에서의 전송계층 패킷segment라고 하겠다.
(그러나 TCP에 대한 전송계층 패킷은 segment라고 하면서 UDP에 대한 패킷은 datagram으로 표현한다는 것도 알아두자)

이 책에서는 TCP, UDP 패킷을 모두 segment로 지칭해서 혼란을 줄이고 네트워크 계층 패킷에 대해 datagram이라고 지칭할 것이다.

인터넷의 네트워크 계층에 대한 정리 (자세한 내용은 4,5장에서)

1) 인터넷의 네트워크 계층 프로토콜은 인터넷 프로토콜(Internet Protocol, IP)라고 함
2) IP 서비스 모델은 호스트들 간에 논리적 통신을 제공하는 best-effort delivery service
- 이는 IP가 통신하는 host들 간에 segment를 전달하기 위해 최대한 노력하지만 어떤 보장도 하지 않는다는 것을 의미함
- IP는 segment가 순서대로 전달되는 것을 보장하지 않는다.
- IP는 segment 내부 데이터의 무결성(integrity)을 보장하지 않는다.
- 때문에 IP를 비신뢰적 서비스(unreliable service)라고 한다.
- 그리고 모든 host는 적어도 하나의 IP 주소로 불리는 네트워크 계층 주소를 갖는다.

UDP, TCP 서비스 모델

UDP의 기능

종단 시스템 사이의 IP 전달 서비스종단 시스템의 두 프로세스 간의 전달 서비스로 확장하는 것이다.

이를 host-to-host 전달process-to-proess 전달로 확장하는 것이라 하는데 이를 전송계층 다중화, 역다중화라고 부른다. 이에 대해서는 다음 절에서 살펴본다.

② 헤더에 오류 검출 필드를 포함함으로써 무결성 검사를 제공한다.

UDP는 이러한 2가지 서비스만 제공한다. 그리고 IP와 마찬가지로 비신뢰적(unreliable) 서비스이다. 관련내용은 3.3절에서 자세히 다룬다.

TCP의 기능

UDP가 제공하는 기능에 몇 가지 추가적인 서비스를 제공한다.

① 신뢰적인 데이터 전송(reliable data transfer) 제공

흐름 제어, 순서 번호, 확인 응답, 타이머를 사용함으로써
TCP는 송신 프로세스로 부터 수신 프로세스에게 데이터를 순서대로 정확하게 전달하도록 확실하게 보장한다.

② 혼잡 제어(Congestion Control)

TCP 연결이 과도한 양의 트래픽으로 통신하는 모든 호스트들 사이의 스위치와 링크를 혼잡하게 하는 것을 방지한다.

송신 측의 TCP가 네트워크에 보낼 수 있는 트래픽을 조절함으로써 각각의 TCP 연결이 링크의 대역폭을 공평하게 공유해서 통과하도록 해준다.

각각의 내용에 대한 건 3.4 ~ 3.7 절에서 자세하게 다룬다.