컴퓨터네트워크

[컴퓨터네트워크] Transport Layer / 4계층 / OSI 7 Layer / 전반적인 개념 정리

깅강이 2023. 11. 27. 21:55

Transport Layer

process to process 통신 레이어.
쉽게 말하면 프로그램과 프로그램 간의 통신을 관장하는 레이어이다.
process와 process 간의 통신을 위해서는 local host address, local process address , remote host address, remote process address를 알면 된다.
즉 컴퓨터 1의 주소, 컴퓨터 1 속 프로그램의 주소, 컴퓨터 2의 주소, 컴퓨터 2 속 프로그램의 주소를 알면 된다.

 

 

 

1계층부터 4 계층까지의 통신 과정

1. Data link layer (2 계층)의 frame은 MAC address가 필요하므로 MAC address를 찾는다.

2. Network layer (3계층)은 IP address가 필요하다. 3 계층은 host를 찾아 IP address를 찾는다.

3. Transport layr (4계층)은 transport layer address, 즉 포트 넘버를 통해 여러 process 중 나의 목적지를 찾는다.

 

 

통신 과정

 

4 계층 header에는 port number가 들어간다. 이 포트넘버로 프로그램을 식별할 수 있다.

 

port number

운영체제가 프로그램에게 사용할 수 있는 구멍을 하나 뚫어서 할당해 준다.

이를 포트 번호라고 한다. 

한 컴퓨터 내에서 포트 번호는 0~ 6553까지의 16bit int를 사용한다.

서버에 사용하는 universal port 번호는 0~1023을 고정 값으로 사용한다.

이외의 유명한 프로그램의 포트 번호는 고유의 번호처럼 사용되기도 한다. 

ex) HTTP (Hypertext Transfer Protocol): 80번 포트

 

 

일반적인 4 계층의 형태

server - client ( 서버 - 클라이언트 )

한쪽이 local host이면 다른 한쪽을 remote host라고 한다. 

 

Socket Address

4 계층 이상에서 프로그램을 작성할 때는 ip address와 port number를 묶어서 설명한다. 이 둘의 조합을 소켓 주소라고 한다.

 

Multiplexing & Demultiplexing

하나의 운영체제 위에서 여러 process가 돌아가고 있다면 결국 하나의 ip 프로토콜에 의해 여러 가지 process( 프로그램 )가 동작하게 된다. ip address는 하나의 컴퓨터만 식별할 뿐 내부의 프로그램을 식별하지는 못하기 때문이다. 이때 여러 개의 process ( 프로그램 )이 하나의 ip address를 사용하기 위해 multiplexer와 demultiplexer가 사용된다.

multiplexer는 여러개의 process에서 나온 데이터를 ip address 하나로 전송 가능하도록 가공한다. 반대로 demultiplexer가 하나의 데이터를 수신해 각각 process에 해당하는 데이터를 쪼개서 전달해 준다. 

 


 

4 계층 통신 방법의 분류

connection oriented vs connectionless  - 연결 설정을 하는가?

connection oriented 방식은 연결 설정 후 통신을 한다. 대표적으로 TCP와 STCP 등이 있다.
connectionless  방식은 연결 설정을 하지 않고 필요할 때 필요한 걸 전송하는 방식이다. 대표적으로 UDP가 있다.

 

Reliable vs Unreliable - 신뢰성이 보장되는가?

reliable 하다는 건 신뢰성이 보장된다는 뜻이다. 신뢰할만하려면 연결 설정 후 통신해야 한다. 따라서 TCP 등이 reliable 하다. TCP는 에러검출 및 복구, 혼잡 제어, 흐름제어까지 한다. 따라서 속도는 늦을 수밖에 없다. 따라서 초고속 서비스는 TCP를 사용할 때 고민을 많이 해보아야 한다.
unreliable 하다는 건 신뢰성이 보장되지 않는다는 뜻이다. 연결 설정이 별도로 필요 없는 UDP 등이 unreliable 하다.
UDP는 에러 검출 및 복구, 혼잡 제어, 흐름 제어를 하지 않는다. 즉 빠르다. 따라서 real time application 등에 많이 사용된다.

 

 

그렇다면 2 계층에서 신뢰성을 보장했을 때, 4 계층에서도 신뢰성을 보장해야 할까?

정답은 yes이다.

 

통신 과정에서 트래픽, 소위 전송되는 데이터가 한 곳으로 몰려 동시에 처리가 불가능할 경우 이들은 버퍼에 저장되어 전달될 순서를 기다리게 된다. 이때 버퍼의 크기가 한정되어 있다면 버퍼에 들어가지 못한 데이터는 손실된다. 따라서 2 계층에서 데이터가 손실될 수 있으므로 신뢰성을 보장해야 한다.

2 계층의 초고속 인터넷과 무선랜 등은 제한적으로 신뢰성을 보장하며

특히 3 계층에서 가장 많이 쓰이는 프로토콜인 ip 프로토콜은 신뢰성을 보장하지 못한다. (virtual circuit도 마찬가지) 

따라서 4 계층의 신뢰성 보장은 필수적이다. 물론 이는 신뢰성 보장이 필요한 상황에서의 이야기이다. 신뢰성 보장이 필요하지 않은 경우도 있으며 이때에는 해당되지 않는 이야기이다. 

 

이렇게 어떻게 동작할지 잘 모르는 1,2 계층을 감안해서 만든 것이 전통적인 TCP이다. OSI 7 layer의 철학에 따라 각 layer의 독립성을 유지하고 있다고 볼 수 있다. 

 

 

다음 포스트에서는 UDP에 대해 자세히 알아본다.