인터넷 5계층에서 애플리케이션 계층과 네트워크 계층 사이에 있는
'트랜트포트 계층'의 프로토콜에 대해서 알아보자
트랜스포트 계층 개요
트랜스포트 계층 프로토콜은 서로 다른 호스트에서 동작하는 애플리케이션 프로세스들 간의 논리적 통신을 제공한다. 논리적 통신은 애플리케이션의 관점에서 보면 프로세스들이 동작하는 다양한 호스트들이 직접 연결된 것처럼 보인다는 의미이다. 하지만 실제로 호스트들은 수많은 라우터와 다양한 형태의 물리 링크를 통해 연결된 지구상의 다른 지역에 있을 수 있다.
트랜스포트 계층 프로토콜은 네트워크 엣지에서 구현된다.
송신 측의 트랜스포트계층은 애플리케이션 프로세스로부터 받은 메시지를 세그먼트 패킷으로 변환한다. 세그먼트는 트랜스포트 계층의 헤더와 애플리케이션 계층의 메시지를 캡슐화 한 패킷을 부르는 용어이다. (앞으로 세그먼트는 트랜스포트 계층에서 추가된 다양한 정보를 칭하는 단어로 계속 사용된다.)
이렇게 만들어진 세그먼트는 네트워크 계층으로 전달되고, 네트워크 계층의 정보와 함께 캡슐화되어 데이터 그램이라는 이름으로 목적지로 전달된다. 전달 중간에 거치는 (네트워크) 라우터는 데이터 그램의 네트워크 계층 정보만 가지고 동작한다. 데이터 그램의 세그먼트 필드를 절대 검사하지 않는다. (계층이 분리된 이유).
데이터그램이 목적지 호스트에 도착하면 네트워크 계층은 데이터 그램 내부의 세그먼트를 추출해서 트랜스포트 계층으로 보낸다. 이제 트랜스포트 계층은 TCP또는 UDP 프로토콜을 통해서 전달받은 세그먼트를 처리하게 된다.
트랜스포트 계층과 네트워크 계층 사이의 관계
트랜트포트 계층은 네트워크 계층의 바로 상위에 존재한다. 트랜스포트 계층 프로토콜은 서로 다른 호스트에서 동작하는 프로세스들 사이의 논리적 통신을 제공하지만, 네트워크 계층 프로토콜은 호스트들 사이의 논리적 통신을 제공한다. 편한 이해를 위해 우편 서비스에 비교를 해보았다.
- 부모님(프로세스)이 우편(애플리케이션 메시지)을 작성한다.
- 작성된 우편들을 내가 빠뜨리지 않고 잘 수거((트랜스포트 프로토콜. ex>TCP or UDP))해서 집배원(네트워크 계층)에게 전달한다.
- 집배원은 목적지까지 우편을 전달한다.
- 친구는 우편을 받고 우편이 찢어지진 않았는지 확인을 하거나(TCP) 확인을 하지않고(UDP) 부모님에게 우편을 전달한다.
- 친구의 부모님(프로세스)은 우편을 받고 작업을 처리한다.
트랜스포트 계층인 나와 친구는 우편이 언제 도착하는지에 대해서는 관여할 수 없다. 이는 집배원의 수와 오토바이 성능(대역폭, 전송률)등에 의해 영향을 받기 때문이다. 하지만 우편이 찢어졌는지, 수상한 사람에게서 우편이 왔는지 등에 대해서 우편을 검수(신뢰성)할 수 있다.
트랜스포트 계층 프로토콜
트랜스포트 계층에는 2가지의 프로토콜이 있다. 바로 TCP와 UDP이다. UDP는 애플리케이션에게 비신뢰적이고 비연결형인 서비스를 제공하고, TCP는 신뢰적이고 연결지향형 서비스를 제공한다. 애플리케이션을 설계할 때 개발자는 해당 2가지 프로토콜 중 어떤 것을 사용할 지 반드시 명시해야 한다. TCP와 UDP를 사용하는 이유는 네트워크 계층의 호스트 대 호스트 IP 전달 서비스를 프로세스 대 프로세스 전달 서비스로 확장하기 위해서 이다. 이렇게 확장하는 것을 트랜스포트 다중화와 역다중화 라고 부른다. 두 용어에 대해서는 다음 포스팅에 상세히 설명이 되어있다.
UDP는 하나의 프로세스에 의해서 전송된 데이터가 손상되지 않고 목적지 프로세스에 도달하는것을 보장하지 않는다.(그냥 전송 자체를 의의로 둠).
반면 TCP 는 신뢰적인 데이터 전달을 제공한다. 흐름제어, 확인응답, 타이머 등을 사용함으로써 TCP는 송신하는 프로세스로부터 수신하는 프로세스에게 데이터가 순서대로 정확하게 전달되도록 보장한다. 또한 TCP는 혼잡제어를 사용하는데 이는 혼잡한 네트워크 링크에서 각 TCP 연결이 링크의 대역폭을 공평하게 공유하여 통과하도록 해 준다.
Next
'CS > Network' 카테고리의 다른 글
[Network] 트랜트포트 계층 : TCP 연결 (연결 지향형) (0) | 2021.09.24 |
---|---|
[Network] 트랜스포트 계층 : 다중화와 역다중화 (0) | 2021.09.17 |
[Network] 인터넷 프로토콜 계층과 캡슐화 (0) | 2021.09.09 |
[Network] 네트워크 코어 (0) | 2021.09.06 |
[Network] 인터넷이란? Intro (0) | 2021.09.06 |