6. 전송 계층

전송 계층은 Linux 네트워킹의 기본 구성 요소로, 서로 다른 호스트 간의 애플리케이션 간의 종단 간 통신 및 안정적인 데이터 전송을 담당합니다. 이 계층은 데이터를 구조화되고 관리 가능한 방식으로 네트워크를 통해 전송할 수 있도록 준비합니다.

데이터 분할 (Data Segmentation)

전송 계층의 주요 기능 중 하나는 데이터 분할입니다. 이는 대량의 데이터를 세그먼트 (segment) 라고 불리는 더 작고 관리하기 쉬운 덩어리로 나눕니다. 이 과정은 데이터 전송을 더 효율적이고 복원력 있게 만듭니다. 전송 중에 세그먼트가 손실되거나 손상되면 전체 데이터 세트가 아닌 해당 작은 조각만 재전송하면 됩니다. 세그먼트가 목적지에 도착하면 전송 계층은 이를 올바른 순서로 재조립합니다.

네트워크 포트 이해하기 (Understanding Network Ports)

IP 주소는 네트워크에서 올바른 호스트를 식별하지만, 어떤 애플리케이션이나 서비스가 데이터를 수신해야 하는지는 지정하지 않습니다. 이때 네트워크 포트가 사용됩니다. HTTP(웹 트래픽) 또는 SMTP(이메일) 와 같은 서비스는 특정 잘 알려진 포트에서 대기합니다. 예를 들어, HTTP 는 일반적으로 포트 80 을 사용합니다. 전송 계층은 각 세그먼트에 소스 및 대상 포트 번호를 첨부하여 데이터가 수신 호스트의 올바른 프로세스로 전달되도록 보장합니다.

핵심 전송 프로토콜 TCP 와 UDP

현대 네트워크에서 사용되는 두 가지 주요 전송 프로토콜은 TCP(Transmission Control Protocol) 와 UDP(User Datagram Protocol) 입니다. 여기서는 UDP 를 간략하게 살펴본 후, 안정적인 통신에 가장 널리 사용되는 TCP 에 중점을 둘 것입니다.

UDP (User Datagram Protocol)

UDP 는 빠르지만 신뢰할 수 없는 데이터 전송 방식을 제공하는 비연결형 프로토콜입니다. 모든 세그먼트가 도착하거나 올바른 순서로 도착한다는 것을 보장하지 않습니다. 이는 단점으로 보일 수 있지만, UDP 는 실시간 비디오 스트리밍이나 온라인 게임과 같이 속도가 정확성보다 더 중요한 애플리케이션에 매우 효과적입니다. 비디오 프레임 몇 개가 손실되는 것은 더 부드럽고 빠른 스트림을 얻기 위한 허용 가능한 절충안인 경우가 많습니다.

TCP (Transmission Control Protocol)

TCP 는 안정적인 연결 지향 데이터 스트림을 제공합니다. 데이터를 교환하기 전에 TCP 는 양쪽 호스트가 통신할 준비가 되었는지 확인하기 위해 공식적인 연결을 설정합니다.

TCP 핸드셰이크 (The TCP Handshake)

연결을 설정하기 위해 TCP 는 3 방향 핸드셰이크 (three-way handshake) 라는 프로세스를 사용합니다.

  1. SYN: 클라이언트가 연결을 시작하기 위해 서버에 SYN(동기화) 세그먼트를 보냅니다.
  2. SYN-ACK: 서버는 클라이언트의 요청을 승인하는 SYN-ACK(동기화 - 승인) 세그먼트로 응답합니다.
  3. ACK: 클라이언트가 서버로 ACK(승인) 세그먼트를 다시 보내 연결이 설정되었음을 확인합니다.

핸드셰이크가 완료되면 데이터를 안정적으로 교환할 수 있습니다. TCP 는 시퀀스 번호를 사용하여 각 세그먼트를 추적하므로, 수신 호스트는 이를 올바른 순서로 재조립하고 누락된 세그먼트의 재전송을 요청할 수 있습니다. 이메일 예시에서 전송 계층은 각 세그먼트에 SMTP(포트 25) 의 대상 포트와 클라이언트 호스트의 소스 포트를 첨부하게 됩니다.

로그인하여 학습 진행 상황을 저장하세요

로그인

연습 문제

이 주제에 대한 특정 실습은 없지만, 관련 Linux 기술 및 개념을 연습하려면 포괄적인 Linux 학습 경로를 살펴보는 것을 권장합니다.

퀴즈

안정적인 전송 프로토콜은 무엇입니까? (답변은 영어여야 하며 대소문자를 구분합니다)