전송 계층 프로토콜

Bzarre·2024년 10월 28일

TIL

목록 보기
8/8
post-thumbnail

전송 계층 프로토콜

컴퓨터 처리와 전자 통신에서 전송 계층(Transport layer)은 계층 구조의 네트워크 구성요소와 프로토콜 내에서 송신자와 수신자를 연결하는 통신 서비스를 제공한다.
Wikipedia

대표적인 전송 계층 프로토콜로는 TCP, UDP, SCTP가 존재한다

TCP(전송 제어 프로토콜)

Transmission Control Protocol은 주로 Internet Protocol과 함께 사용되어 TCP/IP로 불린다
TCP는 근거리 통신망이나 인트라넷, 인터넷에 연결된 컴퓨터에서 실행되는 프로그램 간에 일련의 옥텟을 안정적으로, 순서대로, 에러없이 교환할 수 있게 한다

TCP 헤더의 구성은 다음과 같이 이루어져 있다
TCP 헤더

  • Source Port (16 비트)
    세그먼트를 송신하는 호스트 응용 프로그램 포트번호 정의
  • Destination port (16 비트)
    세그먼트를 수신하는 호스트 응용 프로그램 포트번호 정의
  • Sequence number (32 비트)
    세그먼트에 포함된 첫번째 데이터 바이트에 할당된 번호 정의
  • Acknowledgment number (32 비트)
    세그먼트의 송신자가 받기를 기대하는 비트
  • Data offset (4 비트)
    32-bit 워드 단위로 나타낸 TCP 헤더 크기값
  • Reserved (3 비트)
    미래에 사용하기 위해 남겨둔 예비 필드
  • Flags (9 bits) (혹은 Control bits)
    • NS (1 비트) – ECN-nonce 은폐 보호
    • CWR (1 비트) – 혼잡 윈도 축소(Congestion Window Reduced) 플래그는 송신측 호스트에 의해 설정되는 것으로, 호스트가 ECE 플래그가 포함된 TCP 세그먼트를 수신했으며 혼잡 제어 메커니즘에 의해 응답했음을 알리는 역할
    • ECE (1 비트) – ECN-Echo는 SYN 플래그의 값에 따라 의미가 달라지는데 (1)로 설정된 경우, TCP 상대가 명시적 혼잡 통지(Explicit Congestion Notification, ECN)의 가능함을 의미하고, (0)으로 해제된 경우, IP 헤더 셋에 혼잡 경험(Congestion Experienced) 플래그가 설정된 패킷이 정상적인 전송 중에 수신되었다는 것을 의미
    • URG (1 비트) – Urgent pointer 필드의 값이 유효함 의미
    • ACK (1 비트) – Acknowledgment 필드의 값이 유효함 의미
    • PSH (1 비트) – 푸시 기능. 수신 애플리케이션에 버퍼링된 데이터를 푸시해 줄지 여부를 질의하는 역할
    • RST (1 비트) – 커넥션 리셋
    • SYN (1 비트) – 동기화 시퀀스 번호
    • FIN (1 비트) – 남은 송신측 데이터 없음
  • Window size (16 비트)
    수신 윈도의 크기. 해당 세그먼트의 송신측이 현재 수신하고자 하는 윈도 크기(기본 단위는 바이트). acknowledgment 필드의 시퀀스 번호보다 큰 값
  • Checksum (16 비트)
    헤더 및 데이터의 에러 확인을 위해 사용되는 16 비트 체크섬 필드
  • Urgent pointer (16 비트)
    URG 플래그가 설정된 경우, 이 16 비트 필드는 시퀀스 번호로부터의 오프셋
  • Option 및 Padding

UDP(사용자 데이터그램 프로토콜)

UDP의 전송 방식은 너무 단순해서 서비스의 신뢰성이 낮고, 데이터그램 도착 순서가 바뀌거나, 중복되거나, 심지어는 통보 없이 누락시키기도 한다

UDP 헤더의 구성은 다음과 같이 이루어져 있다

  • Source Port (16 비트)
    세그먼트를 송신하는 호스트 응용 프로그램 포트번호 정의
  • Destination port (16 비트)
    세그먼트를 수신하는 호스트 응용 프로그램 포트번호 정의
  • length (16 비트)
    UDP 헤더와 데이터 필드를 포함한 전체 패킷의 길이
  • checksum (16 비트)
    데이터 오류 검출을 위한 값

0개의 댓글