본문 바로가기
내일배움캠프_게임서버(202410)/분반 수업 스텐다드

OSI 4계층 전송 계층(Transport Layer)

by GREEN나무 2024. 12. 18.
728x90

주제) :
전송 계층이란?
OSI 7계층 중 전송 계층에 대해 조사해주세요(아래 내용이 포함되면 좋을 것 같아요).
전송 계층의 개념
TCP / UDP
Handshaking

 


OSI 7계층 중 전송 계층 조사

전송 계층의 개념

전송 계층(Transport Layer)은 OSI 7계층 모델의 네 번째 계층으로, 애플리케이션 계층과 네트워크 계층 사이에서 데이터 전송의 신뢰성과 효율성을 보장하는 역할을 합니다. 이 계층은 네트워크를 통해 데이터를 송수신하는 동안 종단 간(end-to-end)의 연결을 관리하고, 데이터가 올바르게 전달되었는지 확인합니다.

전송 계층 프로토콜에는 전송 제어 프로토콜(TCP) 및 사용자 데이터그램 프로토콜(UDP) 있습니다.

 

주요 기능으로는 다음이 있습니다:

  • 데이터 분할 및 재조립: 상위 계층의 데이터를 작은 조각으로 나누고, 이를 전송 후 다시 재조립합니다.
  • 오류 검사: 데이터 전송 중 오류를 감지하고 복구합니다.
  • 흐름 제어: 데이터 전송 속도를 조절하여 송신자와 수신자의 처리 속도를 맞춥니다.
  • 다중화: 여러 애플리케이션 간의 데이터 흐름을 관리합니다.

TCP와 UDP

전송 계층에서 가장 널리 사용되는 프로토콜은 TCP(Transmission Control Protocol)와 UDP(User Datagram Protocol)입니다. 이 두 프로토콜은 서로 다른 특징과 용도로 사용됩니다.

 

※ 인터넷 프로토콜(IP)은 인터넷의 주소 체계로, 소스 장치에서 대상 장치로 정보 패킷을 전달하는 것이 핵심 기능입니다. IP는 패킷 순서 지정 또는 오류 검사를 처리하지 않습니다. (udp처럼 비연결성, 데이터에대한 신뢰성 보장X)

데이터의 각 단위는 개별적으로 주소가 지정되고 소스 장치로부터 대상 장치로 라우팅되며, 대상 장치는 이를 수신했다는 확인을 소스에 보내지 않습니다.

 

 

 

TCP (Transmission Control Protocol)

  • 특징:
    • 연결 지향적(Connection-oriented): 데이터 전송 전에 송신자와 수신자 간 연결이 설정됩니다.
    • 신뢰성 보장: 데이터가 순서대로 도착하도록 보장하며, 손실된 데이터는 재전송합니다.
    • 흐름 제어 및 혼잡 제어 지원
  • 장점:
    • 데이터 전송의 신뢰성과 정확성을 보장
    • 파일 다운로드, 이메일 등 데이터 손실이 허용되지 않는 애플리케이션에 적합
  • 단점:
    • 오버헤드가 크고, 속도가 느림

TCP/IP

TCP 통신에서 두 컴퓨터는 '핸드셰이크'라는 자동화된 프로세스를 통해 연결을 설정하는 것으로 시작합니다. 이 핸드셰이크가 완료된 후에만 실제로 데이터 패킷이 한 컴퓨터에서 다른 컴퓨터로 전송됩니다.

IP는 각 조각이 목적지 주소에 도착하도록 합니다. TCP 프로토콜은 반대쪽에서 (도착확인, 손실부분은 재전송 요청) 조각들을 올바른 순서로 맞추고, 누락된 조각은 재전송 요청하고, 발신자에게 조각을 받았음을 알려주는기능을 합니다.

TCP는 첫 번째 조각을 보내기 전부터 마지막 조각을 보낸 후까지 발신자와의 접속을 유지합니다.

 

 

 

 

UDP (User Datagram Protocol)

  • 특징:
    • 비연결형(Connectionless): 연결 설정 과정 없이 데이터를 전송
    • 신뢰성 비보장: 데이터가 손실되거나 순서가 뒤바뀔 수 있음
    • 간단하고 빠른 전송
  • 장점:
    • 속도가 빠르고, 오버헤드가 적음
    • 스트리밍, 온라인 게임 등 실시간성이 중요한 애플리케이션에 적합
  • 단점:
    • 데이터 손실이나 오류가 발생할 가능성이 있음
    • DDoS공격에 취약

 

UDP/IP

UDP( 사용자 데이터그램 프로토콜 )는 네트워크의 두 컴퓨터 간에 데이터를 전송하기 위한 표준화된 방법입니다.

UDP는 (비연결성) 먼저 연결을 설정하거나, (비신뢰성)해당 패킷의 순서를 표시하거나, 의도한 대로 도착했는지 여부를 확인하지 않고 패킷(데이터 전송 단위)을 대상 컴퓨터로 직접 보내는 간단한 방식으로 이 프로세스를 수행합니다.

UDP 데이터그램이 전송 중에 손실되면 다시 전송되지 않습니다. 따라서 UDP를 사용하는 애플리케이션은 오류, 손실, 중복을 허용할 수 있어야 합니다.

UDP는 빠른 데이터 전송을 위해 간단한 패킷 기반의 전송 방식을 채택합니다. (UDP를 도착여부확인 안함)

UDP는 비연결형 프로토콜이므로 핸드셰이킹 과정이 없습니다.

 

UDP 패킷 : 데이터그램

 

DDoS 공격

 

일반적인 UDP 폭주 공격은 많은 개수의 UDP 데이터그램을 대상 컴퓨터의 임의 포트로 보냅니다. 그에 따라 대상이 똑같이 많은 개수의 ICMP 패킷으로 응답하게 되며, 이는 해당 포트에 연결할 수 없음을 나타냅니다. 각 사기성 데이터그램에 응답하는 데 필요한 컴퓨팅 리소스 때문에 대상이 소진되어 합법적인 트래픽에 대한 서비스 거부가 발생할 수 있습니다. 

대부분의 운영 체제에서는 ICMP 패킷의 응답 속도를 부분적으로 제한하여 ICMP 응답이 필요한 DDoS 공격을 차단합니다. 


TCP/IP와 UDP/IP 비교

TCP (Transmission Control Protocol)UDP (User Datagram Protocol)

OSI 참조 모델 TCP UDP
연결 형태 연결 지향 (연결을 설정하고 유지) 비연결 지향 (연결 설정 없이 데이터 전송)
기능 신뢰성 보장, 데이터 재조립 신뢰성 보장하지 않음, 패킷 전달만 수행
데이터 전송 세션 설정 후 데이터 전송, 연결 확립 연결 설정 없이 데이터 전송
전송 단위 스트림 데이터 전송 패킷 단위 전송 (재조립 서비스 제공 안 함)
신뢰성 데이터 신뢰성 보장 신뢰성 없음, 패킷 손실 가능성 존재
데이터그램 패킷을 여러 개의 작은 조각으로 나누고 재조립 패킷을 그대로 전송, 순서 보장하지 않음
흐름 제어 연결 설정 후 흐름 제어 유지 흐름 제어 없음, 일방적 데이터 전송
오류 체크 오류 체크 및 연결 상태 확인 오류 체크, 접속 체크 없음 (추가 코드로 구현 가능)
속도 vs. 안정성 안정성 높음, 속도 느림 속도 빠름, 안정성 낮음

 

 


Handshaking

핸드셰이킹(Handshaking)은 두 장치 간의 데이터 통신을 시작하기 전에 연결을 설정하는 과정을 의미합니다. 전송 계층에서 주로 사용되는 핸드셰이킹 프로세스는 TCP의 3-way Handshake와 관련이 있습니다.

연결 끊을 때는 4-way Handshake

TCP 3-way Handshake ( 연결 )

TCP에서 신뢰할 수 있는 연결을 설정하기 위해 사용하는 3 단계의 절차입니다:

  1. SYN (Synchronize): 클라이언트가 서버에 연결 요청(SYN 패킷)을 보냅니다.
    클라이언트는  SYN/ACK 응답을 기다리는SYN_SENT 상태.
  2. SYN-ACK (Synchronize-Acknowledge): 서버가 요청을 수락하고 응답(SYN-ACK 패킷)을 보냅니다.
    서버는 SYN_RECEIVED 상태
  3. ACK (Acknowledge): 클라이언트가 서버의 응답을 확인하고 연결이 설정됩니다.
    이후로 데이터가 오가갈 수 있습니다.
    서버 상태 ESTABLISHED 

 

 

 

송수신자가 데이터 전송할 준비가 되었음을 보장.

초기 순서 번호를 교환하여 데이터 패킷 정렬 및 신뢰성 확보.

 

 

 

 

 

 

TCP 4-way Handshake ( 연결 종료 ) 

TCP에서 연결을 끊기위해( 세션을 종료 )사용하는 4 단계의 절차 입니다.

 

 

  1. FIN (Finish) : 클라이언트가 연결 종료 요청(FIN 플래그 전송).
  2. ACK (Acknowledge) : 서버는 FIN을 확인하고 응답(ACK) 전송 후 통신이 끝날 때까지 대기.
    서버 상태: TIME_WAIT.
  3. FIN (Finish) : 서버가 자신의 데이터 전송이 완료되었음을 알리기 위해 FIN 전송.
  4. ACK (Acknowledge) : 클라이언트가 서버의 FIN을 확인하고 응답.

 TIME_WAIT: 서버의 FIN 이전에 지연된 패킷이 도착할 경우, 데이터 유실을 방지하기 위해 일정시간(디폴트 240초) 동안 세션을 남겨놓고 잉여 패킷을 기다리는 과정

 

 

 


참고

  1. https://www.cloudflare.com/ko-kr/learning/ddos/glossary/open-systems-interconnection-model-osi/
  2. https://www.cloudflare.com/ko-kr/learning/ddos/glossary/tcp-ip/
  3. https://www.cloudflare.com/ko-kr/learning/ddos/glossary/user-datagram-protocol-udp/
  4. https://ashen99.tistory.com/428