Intro

이 글은 OSI 7 layer 중 4계층인 트랜스포트 레이어에 대해서 다룹니다.


트랜스포트 레이어란?

트랜스포트 레이어는 엔드 투 엔드(end to end) 프로토콜에 해당한다. 3계층 간(physical, datalink, network)의 커뮤니케이션은 사용자 간의 커뮤니케이션에는 해당 되지 않음.
4계층이 사용자간 소통에 해당 된다.
기본적으로 4계층은 ‘커넥션 베이스드(connection based) 프로토콜’로 시작됨. 이 프로토콜은 연결을 맺은 상태에서 데이터를 주고 받는 것을 원칙으로 함.

LISTEN: 상대방의 데이터를 받을 때까지 대기(아무것도 안함, 그래서 멀티태스킹이 가능한 환경이 되어야 함. 멀티 프로세싱 운영체제가 있어야 함)
CONNECT: 상대방과 연결
SEND: 데이터를 보냄
RECEIVE: 데이터를 받음
DISCONNECT: 연결을 끊음


트랜스포트 계층의 특징

네트워크 계층에는 전송과 수신만 존재하고 커넥션을 맺는 것이 없지만, 4계층은 가상적인 링크가 있다고 보면 된다.
2계층(datalink)은 물리적 연결이 되어 있으며 3계층(network)은 물리적 연결이 없는 상태에서 패킷을 보내는 것이고 4계층(transport)은 실질적인 커넥션이 없음에도 불구하고 가상적으로 연결이 되어 있다고 생각하고 데이터를 보낸다고 생각.
3계층까지는 패킷의 상태에 관해서는 관심이 없음. 전송할 컴퓨터의 주소만 상관있음.
4계층은 어플리케이션에 관한 정보(번호)를 통해 알맞은 포트로 데이터를 전송함. (파일 전송인지, 메일 전송인지, 스트리밍인지 등을 구분)
메일의 경우 SMTP에 패킷을 보냄. 웹 브라우저의 경우 HTTP로 패킷 보냄.

트랜스포트 레이어에서는 커넥트 맺는 것과 커넥트 끊는 것이 중요.

CR: Connection Request
CR은 라우팅 프로토콜 상황에 따라 전송되는데 오래 걸릴 수 있음.
아주 옛날에 보낸 CR이 상대방에 도착하면 Acknowledgement code(ACK)이 전송됨.
라우팅 상황에 따라서 상당한 다양한 케이스가 발생할 수 있음.


Two-Army Problem

The Two-army problem

img

:메시지가 갈 수 있는 길이 하나 일 때 한 측이 보낸 메시지가 반대 측에 잘 전송되었다는 확인을 어떻게 명확하게 할 수 있을까?
받았다는 답장을 해 줌으로써 확인을 해 줄 수 있다면 이 답장에 대한 확인, 답장에 대한 확인의 확인….등 계속 확인하는 과정이 이루어져야 한다. 결국 자신이 보낸 메시지가 확실하게 보내졌는지 확실하게 검증할 수 있는 방법은 없다는 것이 이 비유의 핵심이라고 할 수 있다.

이 문제를 해결하기 위해 컴퓨터에서는 타이머를 이용한다. 응답이 없는 상태가 일정 시간이 경과하면 자동적으로 연결을 끊는 것이다.

데이터를 보내는 데에 있어서 데이터 링크 계층은 프레임 단위로 데이터를 보낸다.
네트워크 계층은 패킷 단위로 데이터를 끊어서 보낸다. (라우터가 패킷 단위로 데이터를 전송)
트랜스포터 계층은 데이터의 단위가 없이 쭉 연결되어 있는 바이트로 데이터를 보낸다.
각각의 계층마다 전송하는 단위가 다르다.
받는 쪽에서는 데이터가 얼만큼 오는지 알 수 없다. 그렇기에 버퍼를 무한정으로 잡을 수 없다. 내가 가진 데이터의 버퍼가 가득 차 더 이상 데이터를 받을 수 없는 상황이 발생할 수 있기에 상대방과의 협상(negotiation)이 이루어진다.


흐름제어(flow control)

img

슬라이딩 윈도우: 흐름 제어의 한 방법

flow control(흐름제어): 버퍼가 비어있지만 상대방 측에 버퍼가 비어있지 않다고 신호를 줌으로써 상대방이 내 쪽에 데이터를 보낼 수 없게 한다. 그리고 이것은 슬라이딩 윈도우 사이즈를 가지고 이루어짐.
데이터를 받을 수 있는 여분의 공간이 존재하지만 데이터를 받을 수 없다고 보냄으로서 일종의 흐름에 제어를 하는 것.

트랜스 포트 계층에서는 포트 주소가 중요한데, 각 역할별로 포트 주소가 할당되어 있어서 데이터 전송 시 목적에 맞는 포트의 넘버로 데이터가 전송되게 된다.