오늘은 OSI 7계층 모델에서 전송 계층에 대해 알아보겠습니다. 이 계층은 데이터가 안전하고 신뢰성 있게 전송될 수 있도록 돕는 역할을 합니다. 그럼 전송 계층이 무엇인지, 그리고 TCP와 UDP의 차이점에 대해 자세히 알아보겠습니다.
전송 계층은 OSI 모델에서 응용 계층과 네트워크 계층 사이에 위치하고 있습니다. 이 계층은 데이터의 신뢰성과 무결성을 보장하는 역할을 수행합니다. 전송 계층은 상위 계층에서 전달받은 데이터를 적절한 크기로 나누고, 수신 측에서 이를 재조립하는 세그멘테이션(Segmentation)과 재조립(Reassembly) 기능을 제공합니다.
전송 계층의 주요 기능은 다음과 같습니다 :
전송 계층에서 가장 많이 사용되는 두 가지 프로토콜은 TCP(Transmission Control Protocol)와 UDP(User Datagram Protocol)입니다. 이 둘은 데이터 전송 방식에서 큰 차이를 보입니다.
TCP는 연결 지향형 프로토콜로, 데이터 전송 전에 송신자와 수신자 간의 연결을 설정합니다. 이 과정에서 몇 가지 중요한 기능을 수행합니다 :

신뢰성 보장: TCP는 데이터의 순서와 무결성을 보장합니다. 각 데이터 세그먼트에는 시퀀스 번호가 매겨져 있어, 수신 측에서 올바른 순서로 재조립할 수 있습니다. 또한, 체크섬을 통해 데이터의 무결성을 확인하고, 오류가 발생할 경우 재전송을 요청합니다.
흐름 제어 및 혼잡 제어: TCP는 수신 측의 버퍼 크기를 고려하여 송신 속도를 조절합니다. 이를 통해 데이터 손실을 방지하고, 네트워크의 혼잡 상태에 따라 전송량을 조절하여 효율성을 높입니다.
TCP는 웹 브라우징, 이메일 전송, 파일 전송 등 데이터 전송의 신뢰성이 중요한 애플리케이션에서 주로 사용됩니다.

UDP는 비연결형 프로토콜로, 데이터 전송을 위해 연결 설정 과정을 거치지 않습니다. 이로 인해 TCP보다 간단하고 빠르지만, 신뢰성은 낮습니다. UDP의 특징은 다음과 같습니다:
비연결형: UDP는 데이터를 전송하기 전에 연결을 설정하지 않기 때문에, 오버헤드가 적고 빠른 데이터 전송이 가능합니다. 그러나 이로 인해 데이터 전송 중 오류가 발생할 경우, 이를 처리할 수 있는 메커니즘이 부족합니다.
데이터그램 단위 전송: UDP는 데이터를 개별 데이터그램 단위로 전송합니다. 각 데이터그램은 독립적으로 처리되며, 순서 보장이나 재전송 메커니즘이 없습니다. 따라서 데이터 손실이나 순서가 바뀔 수 있습니다.
실시간 애플리케이션에 적합: UDP는 지연 시간이 중요한 실시간 애플리케이션에서 많이 사용됩니다. 예를 들어, 온라인 게임, 비디오 스트리밍, VoIP(Voice over Internet Protocol) 등에서 UDP가 많이 활용됩니다.
네트워크 통신에서 포트는 데이터가 가야 할 '주소' 같은 역할을 해요. 각 프로세스는 고유한 포트 번호를 가지고 있어, 이를 통해 서로 다른 프로세스 간의 통신이 가능합니다.
잘 알려진 포트 번호: 0부터 1023까지의 포트 번호는 특정 서비스나 프로토콜에 예약되어 있습니다. 예를 들어, 웹 서비스는 80번 포트를 사용하고, HTTPS는 443번 포트를 사용합니다. 이러한 포트 번호는 표준화되어 있어 클라이언트가 해당 서비스에 쉽게 접근할 수 있도록 돕습니다.
동적 포트 번호: 1024번 이상의 포트 번호는 임의의 프로세스에 의해 동적으로 할당됩니다. 클라이언트 프로세스는 이러한 임시 포트 번호를 할당받아 서버와 통신하게 됩니다.

전송 계층은 우리의 데이터를 안전하게 전송하는 역할을 합니다. TCP는 신뢰성 높은 데이터 전송을 보장하지만 속도가 느리며, UDP는 빠르지만 데이터 손실이 발생할 수 있습니다. 따라서 애플리케이션의 필요에 따라 적절한 프로토콜을 선택해야 합니다.