포스트

컴퓨터 네트워크 #21


목차 - 전송계층 프로토콜

  1. 연결 지향 수송 프로토콜
  2. TCP
  3. UDP

TCP

TCP란 IP 프로토콜 위에서 연결형 서비스를 지원하는 전송 계층 프로토콜이다. 비연결형 프로토콜은 UDP 이다.

TCP는 전이중 방식의 양방향 가상회선과, 신뢰성을 제공하고, 가변 크기의 세그먼트를 갖는다.

Desktop View

  1. TCP헤더

    Desktop View

    • 포트 : 송수신 호스트에서 실행되는 프로세스에 할당되는 네트워크 자원
    • 순서 번호(Sequence Number)

      최대 $2^{32}$ 개로 최소 데이터 전송 시 임의의 순서 번호를 선택한다.

      SYN 플래그가 설정된 경우를 제외하면, 세그먼트의 첫 번째 데이터 옥텟의 순서 번호를 나타낸다.

    • Data offset : TCP 세그먼트가 시작되는 위치를 기준으로 데이터 시작 위치를 표시한다. 이를 통해 TCP 헤더 크기를 알 수 있다.
    • 긴급 포인터(Urgent pointer)

      긴급 데이터를 처리하기 위한 것으로, URG 플래그 비트가 지정된 경우에 유효하다.

      SN = 2000 , UP = 100 인 경우 SN 2000~2099 는 긴급 데이터로 전송되고, 2100이후는 정상 데이터로 전송된다.

    • ACK : AN이 유효한 지를 나타낸다.(확인응답필드 표시)
    • PSH(Push)

      현재 세그먼트에 포함된 데이터를 버퍼에 쌓지 않고 상위 계층에 즉시 전달하도록 지시할 때 사용한다.

      일반적인 TCP의 경우 상위 계층으로부터 전달받은 데이터를 버퍼에 쌓아두었다가, 버퍼가 다 차면 전송하는 방식을 사용한다.

    • RST(Reset): 연결 재시작 or 유효하지 않은 세그먼트에 대한 응답 필드이다.
    • SYN(Synchronize) : 연결 설정 요구
    • FIN

      송신자로부터 더 이상의 데이터가 없다는 의미로 연결 종료 의사를 표시한다.

      양쪽 프로세스 모두 FIN 플래그를 전송함으로써 연결이 해제된다.( 현재 전송중인 데이터는 전송이 완료된다.)

    • ECE(explicit congestion notification echo) : 명시적 혼잡 알림
    • CWR(congestion window reduced) : ECE를 수신한 송신 프로세스가 송신 윈도우 크기를 줄였음을 통지하는 필드
    • Checksum : 의사헤더와 세그먼트로 이루어지는 모든 16비트 단어의 1의 보수 합에 대한 1의 보수이다.(책 6장)
    • 선택 사항(Option/Padding) : 사용 가능한 최대 세그먼트 크기를 규정하는 선택사항으로, 생략 가능한 필드이다.
    • 플래그(Flag)

      ECE ~ FIN필드를 지칭하는 말이며, 비트가 1이면 해당 사항임을 뜻하고 0 이면 무시하면 된다.

      예를들어 FIN 필드가 1이면 , 연결 종료 의사를 표시한다는 뜻이고, 0 이면 아무런 의미가 없다는 뜻이다.


    TCP 헤더의 캡슐화

    Desktop View

  2. TCP 매커니즘(연결 설정)

    TCP 의 연결 설정은 항상 3방향 핸드쉐이크(3-way handshake) 기법을 이용한다.

    A 프로세스에서 연결하기 위해 SYNSeq(=SN) = X 를 전송하는데, X는 초기 순서 번호이다.

    수신자(B프로세스)는 SYNACK플래그 양쪽 모두를 설정(1)하고, SN = Y, AN = X+1 로 설정해 응답한다.

    마지막으로 B 프로세스는 AN = Y+1, SN = X+1 로 응답한다.

    Desktop View

    다음과 같이 연결설정이 이루어진다.

    TCP 연결 설정

    1. A 프로세스는 SN = 10 = X(임의지정), SYN 을 전송한다.
    2. B 프로세스는 위 메시지를 받으면 SYNACK를 모두 설정하고, SN = 50 = Y(임의지정), AN = 11 = X+1 로 회신한다.
    3. A 프로세스는 회신 메시지를 받고 SN = X+1, AN = Y+1 로 설정해 응답한다.

    TCP 의 전이중 통신은, 전송 데이터와 응답 데이터를 함께 전송하는 피기배킹(piggybacking) 기능을 사용할 수 있다.

    데이터 전송 과정은 다음과 같이 이루어진다.

    아래 그림은 3단계 연결과정을 데이터 전송으로 대체한 모습이다.

    TCP 데이터 전송

    Desktop View

    TCP 연결 해제

    Desktop View

    TCP 혼잡 제어

    Desktop View

    Desktop View

    TCP 의 혼잡제어는 위 그림과 같이 이루어진다.

    ECN 기능 사용을 위해서는 TCP 연결 설정 단계에서 협상이 필요하다.

    IP헤더의 ECN 필드는 2비트로 00 / 01 / 10 / 11 이다.

    00 일 경우 혼잡없음, 01, 10 의 경우 ECT, 11일 경우 CE를 나타낸다.

    라우터는 IP까지만 지원하고 TCP는 지원하지 않는다.


UDP

UDP 는 비연결형 서비스를 제공한다.

비연결형 서비스는 전송한 데이터그램이 목적지에 제대로 도착했는지 확인하지 않는다.

그렇다면 신뢰성이 있는 연결형 서비스인 TCP 대신 왜 UDP 를 사용할까?

이는 UDP가 더 적합한 서비스가 있기 때문이다.

예를 들면 하위계층에서는 비연결 서비스가 더 견고하다.

UDP 는 신뢰성이 없는 대신 빨리 도착하는 구조로, 서비스가 손실이 발생하더라도 전송이 빠른게 우선이라면 UDP를 사용한다.

실시간 응용 서비스들이 대체로 이러하다.

실시간 서비스인 화상 회의의 경우 화면이 조금 깨지고, 음성이 손실날지라도 빨리 도착하는게 가장 중요한 원칙이다.

위 특성에 따라 UDP의 흐름제어와 오류 유형은 다음과 같다.

  • 흐름제어를 하지 않는다.
  • 오류 유형 : 데이터 그램의 분실 혹은 도착 순서의 변경 → UDP를 사용하는 응용 프로그램에서 자체적으로 순서 번호 기능을 구현하여 해결이 가능하다.

UDP 헤더 구조

Desktop View

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.