DCN-전송 제어 프로토콜

전송 제어 프로토콜 (TCP)은 인터넷 프로토콜 제품군에서 가장 중요한 프로토콜 중 하나입니다. 인터넷과 같은 통신망에서 데이터 전송을 위해 가장 널리 사용되는 프로토콜입니다.

풍모

  • TCP는 신뢰할 수있는 프로토콜입니다. 즉, 수신자는 항상 데이터 패킷에 대한 긍정적 또는 부정적 승인을 보낸 사람에게 보내므로 보낸 사람은 항상 데이터 패킷이 대상에 도달했는지 아니면 다시 보내야하는지에 대한 명확한 단서를 갖게됩니다.

  • TCP는 데이터가 전송 된 순서대로 의도 한 대상에 도달하도록합니다.

  • TCP는 연결 지향적입니다. TCP는 실제 데이터를 보내기 전에 두 원격 지점 간의 연결을 설정해야합니다.

  • TCP는 오류 검사 및 복구 메커니즘을 제공합니다.

  • TCP는 종단 간 통신을 제공합니다.

  • TCP는 흐름 제어 및 서비스 품질을 제공합니다.

  • TCP는 클라이언트 / 서버 지점 간 모드에서 작동합니다.

  • TCP는 전이중 서버를 제공합니다. 즉 수신자와 발신자 역할을 모두 수행 할 수 있습니다.

머리글

TCP 헤더의 길이는 최소 20 바이트, 최대 60 바이트입니다.

  • Source Port (16-bits)  -송신 장치에서 응용 프로세스의 소스 포트를 식별합니다.

  • Destination Port (16-bits) -수신 장치에서 응용 프로세스의 대상 포트를 식별합니다.

  • Sequence Number (32-bits) -세션에서 세그먼트의 데이터 바이트 시퀀스 번호.

  • Acknowledgement Number (32-bits)  -ACK 플래그가 설정되면이 번호는 예상되는 데이터 바이트의 다음 시퀀스 번호를 포함하며 이전에 수신 된 데이터에 대한 승인으로 작동합니다.

  • Data Offset (4-bits)  -이 필드는 TCP 헤더의 크기 (32 비트 워드)와 전체 TCP 세그먼트에서 현재 패킷의 데이터 오프셋을 모두 의미합니다.

  • Reserved (3-bits)  -향후 사용을 위해 예약되어 있으며 기본적으로 모두 0으로 설정됩니다.

  • Flags (1-bit each)

    • NS -Nonce Sum 비트는 Explicit Congestion Notification 시그널링 프로세스에서 사용됩니다.

    • CWR -호스트가 ECE 비트가 설정된 패킷을 수신하면 ECE가 수신되었음을 확인하도록 Congestion Windows Reduced를 설정합니다.

    • ECE -두 가지 의미가 있습니다.

      • SYN 비트가 0으로 클리어되면 ECE는 IP 패킷에 CE (혼잡 경험) 비트 세트가 있음을 의미합니다.

      • SYN 비트가 1로 설정되면 ECE는 장치가 ECT 가능함을 의미합니다.

    • URG -긴급 포인터 필드에 중요한 데이터가있어 처리해야 함을 나타냅니다.

    • ACK-Acknowledgment 필드가 의미가 있음을 나타냅니다. ACK가 0으로 해제되면 패킷에 승인이 없음을 나타냅니다.

    • PSH -설정된 경우, 버퍼링없이 수신 애플리케이션에 데이터를 PUSH (오자마자)하도록 수신 스테이션에 요청합니다.

    • RST -리셋 플래그에는 다음과 같은 기능이 있습니다.

      • 들어오는 연결을 거부하는 데 사용됩니다.

      • 세그먼트를 거부하는 데 사용됩니다.

      • 연결을 다시 시작하는 데 사용됩니다.

    • SYN -이 플래그는 호스트 간의 연결을 설정하는 데 사용됩니다.

    • FIN-이 플래그는 연결을 해제하는 데 사용되며 이후 더 이상 데이터가 교환되지 않습니다. SYN 및 FIN 플래그가있는 패킷에는 시퀀스 번호가 있으므로 올바른 순서로 처리됩니다.

  • Windows Size  -이 필드는 두 스테이션 간의 흐름 제어에 사용되며 수신기가 세그먼트에 할당 한 버퍼의 양 (바이트)을 나타냅니다. 즉, 수신기가 예상하는 데이터 양을 나타냅니다.

  • Checksum -이 필드에는 헤더, 데이터 및 의사 헤더의 체크섬이 포함됩니다.

  • Urgent Pointer  -URG 플래그가 1로 설정되면 긴급 데이터 바이트를 가리 킵니다.

  • Options  -일반 헤더에서 다루지 않는 추가 옵션을 용이하게합니다. 옵션 필드는 항상 32 비트 단어로 설명됩니다. 이 필드에 32 비트 미만의 데이터가 포함 된 경우 32 비트 경계에 도달하기 위해 나머지 비트를 덮는 데 패딩이 사용됩니다.

주소 지정

두 원격 호스트 간의 TCP 통신은 포트 번호 (TSAP)를 통해 수행됩니다. 포트 번호의 범위는 0-65535이며 다음과 같이 나뉩니다.

  • 시스템 포트 (0 – 1023)
  • 사용자 포트 (1024 – 49151)
  • 개인 / 동적 포트 (49152 – 65535)

연결 관리

TCP 통신은 서버 / 클라이언트 모델에서 작동합니다. 클라이언트는 연결을 시작하고 서버는 연결을 수락하거나 거부합니다. 연결 관리에는 3 방향 핸드 셰이 킹이 사용됩니다.

설립

클라이언트는 연결을 시작하고 시퀀스 번호와 함께 세그먼트를 보냅니다. 서버는 자신의 시퀀스 번호와 클라이언트의 시퀀스 번호보다 하나 더 많은 클라이언트 세그먼트의 ACK로 다시 확인합니다. 해당 세그먼트의 ACK를받은 클라이언트는 서버의 응답에 대한 승인을 보냅니다.

해제

FIN 플래그가 1로 설정된 상태에서 서버와 클라이언트 모두 TCP 세그먼트를 보낼 수 있습니다. 수신 측이 FIN을 ACKnowledging FIN으로 응답하면 해당 TCP 통신 방향이 닫히고 연결이 해제됩니다.

대역폭 관리

TCP는 대역폭 관리의 필요성을 수용하기 위해 창 크기 개념을 사용합니다. 창 크기는 원격 끝의 송신자에게이 끝의 수신자가 수신 할 수있는 데이터 바이트 세그먼트의 수를 알려줍니다. TCP는 창 크기 1을 사용하여 느린 시작 단계를 사용하고 각 성공적인 통신 후에 창 크기를 기하 급수적으로 증가시킵니다.

예를 들어 클라이언트는 Windows 크기 2를 사용하고 2 바이트의 데이터를 보냅니다. 이 세그먼트의 승인이 수신되면 창 크기는 4로 두 배가되고 다음에 전송되는 세그먼트는 4 데이터 바이트 길이가됩니다. 4 바이트 데이터 세그먼트의 승인이 수신되면 클라이언트는 창 크기를 8 등으로 설정합니다.

승인이 누락 된 경우 (예 : 전송 네트워크에서 데이터 손실 또는 NACK 수신) 창 크기가 절반으로 줄어들고 느린 시작 단계가 다시 시작됩니다.

오류 제어 및 흐름 제어

TCP는 포트 번호를 사용하여 데이터 세그먼트를 전달하는 데 필요한 애플리케이션 프로세스를 파악합니다. 이와 함께 시퀀스 번호를 사용하여 원격 호스트와 동기화합니다. 모든 데이터 세그먼트는 시퀀스 번호와 함께 송수신됩니다. 송신자는 ACK를받을 때 수신자가 수신 한 마지막 데이터 세그먼트를 알고 있습니다. 수신자는 최근 수신 된 패킷의 시퀀스 번호를 참조하여 Sender가 보낸 마지막 세그먼트를 알고 있습니다.

최근 수신 된 세그먼트의 시퀀스 번호가 수신자가 예상 한 시퀀스 번호와 일치하지 않으면 폐기되고 NACK가 다시 전송됩니다. 두 세그먼트가 동일한 시퀀스 번호로 도착하면 TCP 타임 스탬프 값을 비교하여 결정을 내립니다.

멀티플렉싱

하나의 세션에서 둘 이상의 데이터 스트림을 결합하는 기술을 멀티플렉싱이라고합니다. TCP 클라이언트가 서버와의 연결을 초기화 할 때 항상 응용 프로그램 프로세스를 나타내는 잘 정의 된 포트 번호를 참조합니다. 클라이언트 자체는 개인 포트 번호 풀에서 임의로 생성 된 포트 번호를 사용합니다.

TCP 멀티플렉싱을 사용하여 클라이언트는 단일 세션에서 여러 다른 애플리케이션 프로세스와 통신 할 수 있습니다. 예를 들어 클라이언트가 다른 유형의 데이터 (HTTP, SMTP, FTP 등)를 포함하는 웹 페이지를 요청하면 TCP 세션 시간 초과가 증가하고 세션이 더 오래 열려 있으므로 3 방향 핸드 셰이크 오버 헤드가 발생할 수 있습니다. 피하십시오.

이를 통해 클라이언트 시스템은 단일 가상 연결을 통해 다중 연결을 수신 할 수 있습니다. 이러한 가상 연결은 시간 초과가 너무 긴 경우 서버에 적합하지 않습니다.

혼잡 제어

처리 할 수없는 시스템에 많은 양의 데이터가 공급되면 혼잡이 발생합니다. TCP는 Window 메커니즘을 통해 혼잡을 제어합니다. TCP는 보낼 데이터 세그먼트의 양을 다른 쪽 끝에 알려주는 창 크기를 설정합니다. TCP는 혼잡 제어를 위해 세 가지 알고리즘을 사용할 수 있습니다.

  • 덧셈 증가, 곱셈 감소

  • 느린 시작

  • 타임 아웃 반응

타이머 관리

TCP는 다양한 유형의 타이머를 사용하여 다양한 작업을 제어하고 관리합니다.

Keep-alive 타이머 :

  • 이 타이머는 연결의 무결성과 유효성을 확인하는 데 사용됩니다.

  • 연결 유지 시간이 만료되면 호스트는 연결이 여전히 존재하는지 확인하기 위해 프로브를 보냅니다.

재전송 타이머 :

  • 이 타이머는 전송 된 데이터의 상태 저장 세션을 유지합니다.

  • 전송 된 데이터의 승인이 재전송 시간 내에 수신되지 않으면 데이터 세그먼트가 다시 전송됩니다.

지속 타이머 :

  • TCP 세션은 Window Size 0을 전송하여 호스트 중 하나에 의해 일시 중지 될 수 있습니다.

  • 세션을 재개하려면 호스트가 더 큰 값으로 창 크기를 보내야합니다.

  • 이 세그먼트가 다른 쪽 끝에 도달하지 않으면 양쪽 끝이 무한한 시간 동안 서로를 기다릴 수 있습니다.

  • 지속 타이머가 만료되면 호스트는 창 크기를 다시 전송하여 상대방에게 알립니다.

  • 지속 타이머는 통신에서 교착 상태를 방지하는 데 도움이됩니다.

시간 제한 :

  • 연결을 해제 한 후 호스트 중 하나는 연결이 완전히 종료 될 때까지 Timed-Wait 시간을 기다립니다.

  • 이것은 다른 쪽 끝이 연결 종료 요청의 승인을 받았는지 확인하기위한 것입니다.

  • 제한 시간은 최대 240 초 (4 분)입니다.

충돌 복구

TCP는 매우 안정적인 프로토콜입니다. 세그먼트에서 전송되는 각 바이트에 시퀀스 번호를 제공합니다. 이것은 피드백 메커니즘을 제공합니다. 즉, 호스트가 패킷을 수신 할 때 예상되는 다음 시퀀스 번호를 갖는 패킷을 ACK에 바인딩합니다 (마지막 세그먼트가 아닌 경우).

TCP 서버가 중간 통신을 중단하고 프로세스를 다시 시작하면 모든 호스트에 TPDU 브로드 캐스트를 보냅니다. 그런 다음 호스트는 확인되지 않은 마지막 데이터 세그먼트를 전송하고 계속 진행할 수 있습니다.