Araina’s Blog

6. 전송 계층 (TCP) 본문

Develop Study/Network

6. 전송 계층 (TCP)

Araina 2023. 5. 17. 00:40


 

 

1. 전송 계층

네트워크 계층에서 다른 네트워크로 데이터를 전송하기 위해서는 라우터가 요구된다.

라우터를 통한 라우팅 과정 중에 라우팅 정보에 오류가 있거나, 패킷이 손상되면 데이터가 제대로 전달될 수 없다.

네트워크 계층, 물리 계층, 데이터 링크 계층은 데이터를 전송하는 역할을 수행할 수 있지만, 전송되는 데이터의 안전을 보장하지는 못한다.

전송 계층은 신뢰할 수 있든 데이터를 전송하기 위해 필요한 계층이다.

오류를 점검하여 데이터가 손상되었는지를 판별하고, 오류가 발생했을 경우 해당 데이터를 재전송해 달라고 요청할 수 있다.

또한 전송된 데이터의 수신지가 어떤 애플리케이션인지를 판별하기도 한다.

수신지에 데이터가 도착했을 때, 해당 데이터가 어떤 애플리케이션이 요청한 것인지를 알아야 제대로 데이터를 전달해 줄 수 있기 때문이다.

TCP/UDP는 현재 가장 많이 쓰이는 전송 계층의 예시이다.

송신 측에서는 데이터를 패킷으로 분리, 수신 측에서는 분리된 패킷을 결합한다.

네트워크 계층은 각 패킷의 전송을 담당하지만 패킷 간의 관계를 인지하지 못하기 때문에 별개의 데이터처럼 취급한다.

전송 계층은 전송하려는 데이터를 올바르게 전송하려는 특성이 있기 때문에 데이터의 순서, 패킷 간의 관계 등을 인지한다.

또한 오류가 있는 패킷이 감지될 경우, 해당 패킷을 재전송하는 작업도 수행한다.

 

1.1) 전송 계층의 데이터 단위

네트워크 계층은 전송해야 하는 시스템에 각 패킷을 전송하는 역할을 한다.

전송 계층은 해당 시스템의 응용 프로그램(애플리케이션)에 데이터를 전송하는 역할을 한다.

전송 계층의 데이터 헤더에는 포트 주소, 소켓 주소, 순서 번호 등이 포함된다.

 

1.2) 전송 계층의 통신 방식

전송 계층은 데이터를 수신지까지 문제없이 빠르고 효율적으로 전송해야 한다.

신뢰할 수 있지만 상대적으로 속도가 느린 통신을 연결형 통신(TCP), 신뢰할 수 없지만 상대적으로 속도가 빠른 통신을 비연결형 통신(UDP)이라고 부른다.

동영상처럼 중간에 화질이 열화 되거나 끊어지더라도 별 상관없는 경우에는 비연결형 통신을 주로 사용한다.

 


 

2. TCP

연결형 통신에 해당하는 TCP는 신뢰성에 집중한 프로토콜이다.

응용 프로그램이 서로 통신을 하기 전에 우선 TCP 연결을 확립해야 하며, 성공적으로 데이터를 수신하였는지를 검사하여 오류가 있을 경우에는 재전송하는 절차를 추가로 거친다.

이 때문에 데이터를 확실하게 주고받을 수 있으며(신뢰성 보장), 속도가 비연결형 통신보다 느리다.

 

2.1) TCP 연결형 데이터 서비스

TCP 전송 계층은 송신 측 TCP 포트에서 수신층 TCP 포트로 바이트 스트림을 전송하는 연결형 데이터 전달 서비스를 제공한다.

즉, 처음부터 무작정 상대방 컴퓨터를 향해 데이터를 전송하는 것이 아니라, 두 컴퓨터가 상호 작용을 거쳐 연결 회선을 설정한 뒤에 데이터를 전달하는 것이다.

이는 전화를 연결하는 방식과 매우 유사하다.

이렇게 생성된 회선은 통신을 종료할 때까지 연결 상태를 유지하게 되며, 전송한 데이터가 제대로 전송되었는지를 확인하는 작업도 이루어진다.

 

2.2) 포트 번호

포트는 상위 계층으로 데이터를 전송하거나, 상위 계층에서 전송 계층으로 데이터를 전송할 때 상호 간에 사용하는 데이터 이동 통로를 뜻한다.

예를 들어 웹 브라우저는 80번 포트를, FTP 파일 다운로드 프로그램은 21번 포트를 쓴다고 가정해 보자.

이 경우, 각각의 애플리케이션들은 응용 계층에서 동작하기 때문에 전송 계층 상위에 존재한다.

두 애플리케이션이 동시에 전송 계층을 통해 통신하기 위해서는 개별적인 통신 회선이 필요하다.

즉, 웹 브라우저의 80번 포트를 위한 전용 회선 1개와 FTP 파일 다운로드 프로그램의 21번 포트를 위한 전용 회선 1개를 각각 구축한 뒤, 해당 포트를 통해서 필요한 데이터를 개별적으로 송수신하는 것이다.

사용하는 인터넷 서비스의 종류에 따라 자주 쓰이는 포트들이 정해져 있다.

0 ~ 1023번까지는 일반적으로 서버 측 애플리케이션에서 사용하며, 1025번 이상은 랜덤 포트로써, 클라이언트 측의 송신 포트로 쓰인다.

포트 번호를 쓰지 않으면 데이터가 수신은 되지만 애플리케이션이 해당 데이터를 받아볼 수가 없다.

여러 애플리케이션 중에서 어떤 포트를 쓰는 애플리케이션으로 데이터를 전달해야 하는지 알 수 있는 방법이 없기 때문이다.

 

2.3) TCP 세그먼트

TCP는 바이트 스트림을 세그먼트 단위로 나눈다.

TCP 헤더는 수신지까지 데이터를 제대로 전송하기 위해 요구되는 정보를 가지고 있다.

송신지 포트 번호, 수신지 포트 번호, 순서 번호, 확인 응답 번호, 헤더 길이 등이 그것이다.

TCP는 송수신지 사이에 연결이 확립되어야 통신이 이루어지는 연결형 통신 방식이기 때문에 수신 측 컴퓨터에게 통신 연결이 가능한지를 물어보는 연결 확립 과정이 존재한다.

이 과정을 3-way 핸드셰이킹 과정이라고 부른다.

 

2.4) TCP 연결 관리

UDP는 포트 번호만 가지고 애플리케이션을 판별하지만, TCP는 TCP 연결을 통해서 애플리케이션을 판별한다.

3-way 핸드셰이킹 과정을 거치면, 통신에 사용하는 순서 번호, 확인 응답 번호가 결정된다.

순서 번호는 지금 전송하는 데이터의 1번째 바이트 번호이며, 확인 응답 번호는 다음에 전송할 데이터의 1번째 바이트 번호이다.

이 두 번호를 가지고 데이터를 송수신할 때 몇 번째 데이터에 오류가 발생했는지, 다음에 어떤 데이터를 받아야 하는지, 데이터의 순서는 어떻게 되는지 등을 파악할 수 있다.

 

2.5) TCP 흐름 제어

데이터를 전달할 때 패킷 단위로 분할하여 전달하기 때문에 데이터를 읽기 위해서는 재결합 과정이 필요하다.

패킷을 전송할 때 네트워크 상태에 따라서 패킷이 유실 또는 손상되거나, 순서가 바뀔 수도 있다.

이 때문에 TCP는 패킷 번호를 사용하여 도착한 패킷들을 순차적으로 나열하여 재결합한다.

 

- 윈도우 크기

수신 측 컴퓨터로 데이터를 대량으로 전달할 때, 한 번에 얼마나 많은 데이터를 받을 수 있는지를 나타낸다.

즉, 확인 응답을 반복하지 않고 연속적으로 송수신할 수 있는 데이터의 용량을 의미한다.

윈도우 크기가 크면 한 번에 여러 패킷을 전달할 수 있으며, 윈도우 크기는 고정되어 있지 않다.

윈도우 크기는 3-way 핸드셰이킹 과정에서 초기값이 판단된다.

 

- 슬라이딩 윈도우

송신 측 컴퓨터에서 한 번에 전송할 송신 윈도우 크기가 패킷 4개 크기라고 가정해 보자.

1번 패킷 ~ 4번 패킷까지 전송이 끝나면, 송신 측 컴퓨터는 5번 패킷 ~ 8번 패킷을 전달하기 위해 송신 윈도우를 옮길 것이다.

이처럼 송신 버퍼 역할을 하기 위해 송신 윈도우를 이동하는 과정을 반복하는 형태로 패킷을 전달하는 방식을 '슬라이딩 윈도우'라고 부른다.

 


 

3. UDP

UDP는 TCP와 다르게 비연결형 통신 방식을 사용한다.

즉, 패킷의 안정성을 보장하지 않는다.

하지만 TCP 헤더보다 UDP 헤더의 구성이 더 간단하기 때문에 통신 과부하가 적으며, 속도가 더 빠르다.

UDP는 독립적인 제어 메시지를 쓰지 않고, 요청 메시지와 응답 메시지만으로 구성된다.

DNS, DHCP, SNMP가 대표적인 UDP를 사용하는 응용 계층 프로토콜이다.

UDP는 TCP처럼 신뢰성을 보장하지 않기 때문에 전송 데이터의 양이 적거나, 신뢰성이 그다지 중요하지 않은 경우에 유용하다.

동영상 스트리밍이 대표적인 사례라고 볼 수 있다.

 


 

4. 전송 계층 프로토콜

전송 계층 프로토콜은 네트워크 계층, 응용 계층 사이에 위치하여 최종 호스트에서 동작하는 응용 프로그램 간의 논리적 통신을 제공한다.

데이터 송수신 시에는 TCP, UDP 어느 것을 사용해도 무관하지만, 그 용도와 특성을 파악하여 사용하는 것이 권장된다.

전송 계층 프로토콜은 TCP, UDP 외에도 SPX, NCP 등이 존재한다.

 

- SPX

연결 지향 프로토콜로써 TCP와 유사한 기능을 제공하며, 프린트 서버와 프린트 간의 통신에서 주로 사용된다.

인터넷 통신에서는 잘 사용하지 않는다.

 

- NCP

NCP는 클라이언트와 서버 간의 파일 공유를 비롯한 다양한 네트워크 기능을 담당한다.

기능이 워낙 다양하여 OSI 계층 하나로 규정하기는 어렵다.

클라이언트의 서버 로그인, 파일 전송 등의 다양한 역할을 함께 수행하기 때문이다.

TCP/UDP, SPX와는 다른 별도의 포맷을 사용한다.

 


 


수고하셨습니다!


'Develop Study > Network' 카테고리의 다른 글

8. 네트워크 서비스  (0) 2023.05.17
7. 응용 계층  (0) 2023.05.17
5. 네트워크 계층 (IP)  (0) 2023.05.17
4. OSI 참조 모델  (0) 2023.05.16
3. 네트워크 통신  (0) 2023.05.09
Comments