계망: 운송층

본 문장 에서는 먼저 운송계층 프로토콜의 특징, 프로세스 간 통신, 포트 등 중요한 개념을 개괄적으로 설명한 다음 비교적 간단한 UDP 프로토콜을 설명합니다. 그런 다음 대기 프로토콜 중지 및 ARQ 프로토콜 등 복잡하지만 중요한 TCP 프로토콜 및 신뢰할 수 있는 전송의 작동 원리에 대해 논의합니다. TCP 메시지 세그먼트의 첫 번째 형식에 대해 자세히 설명한 후 TCP 의 세 가지 중요한 문제, 즉 슬라이딩 창, 흐름 제어 및 혼잡 제어 메커니즘에 대해 논의합니다. 마지막으로 TCP 연결 관리를 소개합니다. < P > 통신 및 정보 처리의 관점에서 볼 때, 운송 계층은 그 위에 있는 애플리케이션 계층에 통신 서비스를 제공합니다. 이 계층은 통신 부분을 향하는 최상층이자 사용자 기능 중 가장 낮은 계층입니다. < P > 네트워크의 가장자리 부분에 있는 두 호스트가 네트워크의 핵심 부분의 기능을 사용하여 전체 통신을 수행하는 경우 호스트의 스택에만 운송 계층이 있고, 네트워크 코어 부분에 있는 라우터는 그룹을 전달할 때 다음 세 계층의 기능만 사용합니다. < P > 운송 계층에는 중요한 기능 재사용 및 분할이 있습니다. < P > IP 계층에서는 통신의 양쪽 끝이 두 개의 호스트입니다. 그러나 실제로 실제로 통신하는 주체는 호스트 내의 프로세스이며, 이 호스트의 한 프로세스와 다른 호스트의 한 프로세스가 데이터를 교환하고 있습니다 (즉, 통신). 운송 계층은 적용 프로세스 간의 논리적 통신을 제공합니다. "논리적 통신" 이란 애플리케이션 계층에서 애플리케이션 계층 메시지를 아래의 운송 계층에 전달하면 운송 계층이 이 메시지를 상대방의 운송 계층으로 전송할 수 있다는 의미입니다. 그러나 사실 이 두 운송층 사이에는 수평 방향의 물리적 연결이 없다. 데이터의 전송은 그림의 점선 방향 (여러 계층을 통해) 을 따라 전송됩니다.

여기에서 네트워크 계층과 운송 계층 간에 분명한 차이가 있음을 알 수 있습니다. 네트워크 계층은 호스트 간에 논리적 통신을 제공하는 반면, 운송 계층은 적용 프로세스 간에 완벽한 논리적 통신을 제공합니다. < P > 운송 계층은 수신된 메시지에 대해서도 오류 감지를 수행하는 반면, 네트워크 계층에서 IP 데이터보 첫 번째 부분의 검사 및 필드는 첫 번째 부분에 오류가 있는지 여부만 확인하고 데이터 부분은 검사하지 않습니다.

애플리케이션 요구 사항에 따라 운송 계층에는 연결 지향 TCP 와 연결되지 않은 UDP 라는 두 가지 운송 프로토콜이 필요합니다. 이 두 가지 프로토콜은 이 장에서 논의할 주요 내용입니다. < P > 교통층이 접속 지향 TCP 프로토콜을 채택할 경우 아래 네트워크는 신뢰할 수 없지만 (최대한의 노력 서비스만 제공) 이 논리적 통신 채널은 전이중 신뢰할 수 있는 채널과 같습니다. 그러나 운송층이 연결되지 않은 UDP 프로토콜을 사용할 때 이 논리적 통신 채널은 여전히 신뢰할 수 없는 채널입니다.

TCP/IP 운송 계층의 두 가지 주요 프로토콜은 인터넷의 공식 표준입니다. < P > TCP/IP 시스템에서는 사용된 프로토콜이 TCP 인지 UDP 인지에 따라 TCP 메시지 세그먼트 또는 UDP 사용자 데이터그램이라고 합니다.

UDP 는 데이터를 전송하기 전에 연결을 설정할 필요가 없습니다. 원거리 호스트의 운송층은 UDP 메시지를 받은 후 어떠한 확인도 할 필요가 없다. UDP 는 신뢰할 수 있는 제공을 제공하지 않지만 UDP 가 가장 효과적인 작동 방식 중 하나인 경우도 있습니다.

TCP 는 접속 지향 서비스를 제공합니다. 데이터를 전송하기 전에 연결을 설정해야 하며, 데이터 전송이 끝나면 연결을 해제해야 합니다. TCP 는 브로드캐스트 또는 멀티캐스트 서비스를 제공하지 않습니다. TCP 는 신뢰할 수 있는 연결 지향 운송 서비스를 제공하기 때문에 불가피하게 많은 오버헤드를 증가시키고 많은 프로세서 자원을 사용합니다. < P > 앞서 이미 운송층의 재사용 및 분담 기능에 대해 언급했다. 애플리케이션 계층의 모든 적용 프로세스는 운송 계층을 통해 IP 계층 (네트워크 계층) 으로 재전송할 수 있습니다. 이것이 재사용입니다. 운송 계층은 IP 계층에서 각 적용 프로세스로 전송된 데이터를 수신한 후 지정된 각 적용 프로세스를 별도로 전달해야 합니다. 이것이 분담입니다. 분명히 애플리케이션 계층의 각 적용 프로세스에 매우 명확한 표시를 하는 것이 중요합니다.

서로 다른 운영 체제를 실행하는 컴퓨터의 적용 프로세스가 서로 통신할 수 있도록 TCP/IP 시스템의 적용 프로세스를 특정 운영 체제와 독립적으로 표시하는 통합 접근 방식을 사용해야 합니다.

이 문제를 해결하려면 운송층에서 프로토콜 포트 번호 또는 간단히 포트라고 합니다. 즉, 통신의 종점은 적용 프로세스이지만 전송된 메시지를 대상 호스트의 적절한 대상 포트에 전달하면 나머지 작업 (즉, 최종 전달 대상 프로세스) 은 TCP 또는 UDP 에 의해 수행됩니다.

스택 계층 간 추상 프로토콜 포트는 소프트웨어 포트이며 라우터나 스위치의 하드웨어 포트와는 완전히 다른 개념입니다. 소프트웨어 포트는 애플리케이션 계층의 다양한 프로토콜 프로세스가 운송 엔티티와의 계층 간 상호 작용을 위한 주소입니다.

TCP/IP 의 운송 계층은 16 비트 포트 번호로 포트를 표시합니다. 그러나 포트 번호는 지역적으로만 의미가 있으며, 이 컴퓨터 애플리케이션 계층의 각 프로세스가 운송 계층과 상호 작용할 때의 계층 간 인터페이스를 표시하기 위한 것입니다. 인터넷의 다른 컴퓨터에서는 같은 포트 번호가 연결되어 있지 않습니다. < P > 두 컴퓨터의 프로세스가 서로 통신하려면 상대방의 IP 주소 (상대방의 컴퓨터를 찾기 위해) 뿐만 아니라 상대방의 포트 번호 (상대방의 컴퓨터에서 적용 프로세스를 찾기 위해) 도 알아야 합니다. < P > 따라서 운송층의 포트 번호는 다음 두 가지 주요 범주로 나뉩니다. < P > 사용자 데이터그램 프로토콜 UDP 는 IP 의 데이터그램 서비스 위에 약간의 기능을 추가합니다. 이는 재사용 및 공유 기능 및 오류 감지 기능입니다.

UDP 의 주요 특징은 < P > 사용자 데이터그램 UDP 에는 데이터 필드와 첫 번째 필드의 두 필드가 있다는 것입니다. 첫 번째 필드는 8 바이트로 간단합니다. 각각 길이가 2 바이트인 4 개의 필드로 구성됩니다. 각 필드의 의미는 다음과 같습니다. < P > 운송층이 IP 계층에서 UDP 데이터를 수신하면 첫 번째 대상 포트에 따라 UDP 데이터를 해당 포트를 통해 최종 종점인 적용 프로세스를 제출합니다. < P > 수신 UDP 가 수신된 메시지의 대상 포트 번호가 정확하지 않은 경우 (즉, 해당 포트 번호에 해당하는 적용 프로세스가 없는 경우) 해당 메시지를 삭제하고 인터넷 제어 메시지 프로토콜 ICMP 에서 "포트 도달 불가" 오류 메시지를 발신자에게 보냅니다.

UDP 사용자 데이터보 첫 번째 검사 및 계산 방법은 다소 특별합니다. 검사 및 를 계산할 때 UDP 사용자 데이터그램 앞에 12 바이트의 의사 헤더를 추가해야 합니다. 이른바' 위첫' 은 이런 위부가 UDP 사용자 데이터보의 진정한 첫 번째가 아니기 때문이다. 다만 검사 및 계산 시 UDP 사용자 데이터그램 앞에 임시로 추가되어 임시 UDP 사용자 데이터그램을 얻을 수 있습니다. 검사와 는 이 임시 UDP 사용자 데이터보에 따라 계산됩니다. 의사 첫 번째는 < P > 를 전달하거나 위로 전달하지 않고 단지 검사와 계산을 위한 것이다.

UDP 계산 검사 합계 방법은 IP 데이터그램 첫 번째 검사 합계를 계산하는 방법과 유사합니다. 그러나 차이점은 IP 데이터보의 검사와 IP 데이터보의 첫 번째 검사이지만, UDP 의 검사와 데이터 부분을 함께 검사하는 것이다.

TCP 는 TCP/IP 아키텍처에서 매우 복잡한 프로토콜로, TCP 의 가장 중요한 특징은 다음과 같습니다. < P > 앞서 언급했듯이 각 TCP 연결에는 두 개의 끝점이 있고 TCP 연결의 끝을 소켓 또는 소켓이라고 합니다. 포트 번호를 IP 주소에 연결하면 소켓이 형성됩니다. < P > 따라서 소켓은 점 1 진수 IP 주소 뒤에 콜론이나 쉼표로 구분된 포트 번호를 쓰는 방식으로 표시됩니다. 예를 들어, < P > 각 TCP 연결은 통신의 양쪽 끝에 있는 두 끝점 (즉, 소켓 두 개) 에 의해 고유하게 결정됩니다. 예를 들어, < P > 여기서 IP1 과 IP2 는 각각 두 엔드포인트 호스트의 IP 주소이고, port1 과 port2 는 각각 두 엔드포인트 호스트의 포트 번호입니다. TCP 연결의 소켓 두 개는 소켓 1 과 소켓 2 입니다.

요약하면 TCP 접속은 프로토콜 소프트웨어가 제공하는 추상화입니다. < P > 때때로 편의를 위해 한 적용 프로세스와 다른 적용 프로세스 간에 TCP 접속이 설정되어 있다고 말할 수 있지만 TCP 접속의 끝점은 매우 추상적인 소켓 (IP 주소: 포트 번호) 이라는 점을 기억해야 합니다. < P > TCP 가 보낸 메시지 세그먼트는 IP 계층에 전달된다는 것을 알고 있습니다. 그러나 IP 계층은 최대한의 노력 서비스만 제공할 수 있습니다. 즉, TCP 아래의 네트워크는 신뢰할 수 없는 전송을 제공합니다. 따라서 TCP 는 두 운송 계층 간의 통신을 안정적으로 만들기 위해 적절한 조치를 취해야 합니다. < P > "대기 중지" 는 그룹 전송이 완료될 때마다 전송을 중지하고 상대방의 확인을 기다리는 것을 의미합니다. 확인을 받은 후 다음 그룹을 보냅니다.

대기 중지 프로토콜은 다음 네 가지 경우에 사용할 수 있습니다. < P > 대기 프로토콜 중지의 장점은 간단하지만 채널 활용도가 너무 낮다는 단점이 있습니다. < P > 채널 활용도 U 는 다음과 같은 공식을 사용하여 계산할 수 있습니다. < P > 전송 효율성을 높이기 위해 발신자는 비효율적인 중지 대기 프로토콜을 사용하지 않고 파이프 라인으로 전송할 수 있습니다. 이 전송 방식은 채널 활용도가 높습니다.

슬라이딩 윈도우 프로토콜은 복잡하며 TCP 프로토콜의 본질입니다. 여기에서는 먼저 연속적인 ARQ 프로토콜의 가장 기본적인 개념을 제시하지만, 많은 세부적인 문제는 다루지 않는다. < P > 발신자가 유지하는 전송 창은 상대방의 확인을 기다리지 않고 전송 창 내에 있는 그룹화를 연속적으로 보낼 수 있다는 의미입니다. 이런 식으로 채널 활용도가 향상됩니다. < P > 연속 ARQ 프로토콜은 발신자가 확인을 받을 때마다 전송 창을 그룹 위치로 앞으로 밉니다. < P > 원래 상위 5 개 그룹을 보낸 경우 이제 창 내의 6 번째 그룹을 보낼 수 있습니다.

수신자는 일반적으로 누적 확인 방식을 사용합니다. 즉, 수신자는 수신된 그룹에 대해 개별적으로 확인을 보낼 필요가 없습니다. 대신 몇 개의 그룹을 받은 후 순차적으로 도착한 마지막 그룹에 대해 확인을 보냅니다. 즉, 이 그룹까지 모든 그룹이 올바르게 수신되었습니다.

누적 확인에는 장점과 단점이 있습니다. 장점은 쉽게 이뤄질 수 있어 분실 확인도 재전송할 필요가 없다는 점이다. 그러나 단점은 수신자가 올바르게 수신한 모든 그룹화된 정보를 발신자에게 반영하지 못한다는 것입니다. < P > 발신자가 상위 5 개 그룹을 보냈는데 중간에 3 번째 그룹이 누락된 경우 이때 수신자는 처음 두 그룹에 대해서만 확인을 할 수 있습니다. 발신자는 다음 세 조의 행방을 알 수 없었고, 다음 세 조를 모두 다시 한 번 전달해야 했다. 이를 Go-back-N (롤백 n) 이라고 합니다.

TCP 는 바이트 스트림을 지향하지만 TCP 가 전송하는 데이터 단위는 메시지 세그먼트입니다. TCP 메시지 세그먼트는 첫 번째와 데이터의 두 부분으로 나뉘며 TCP 의 모든 기능은 첫 번째 필드의 역할에 반영됩니다.

TCP 메시지 세그먼트 첫 부분의 처음 2 바이트는 고정되어 있으며, 그 뒤에 4n 바이트가 필요에 따라 증가하는 옵션입니다. 따라서 TCP 첫 번째 최소 길이는 2 바이트입니다. < P > 첫 번째 고정 섹션 필드의 의미는 다음과 같습니다.

TCP 의 슬라이딩 창은 바이트 단위입니다. < P > 이제 A 가 B 에서 보낸 확인 메시지 세그먼트를 받았다고 가정합니다. 여기서 창은 2 바이트이고 확인 번호는 31 입니다 (즉, B 가 받을 것으로 예상되는 다음 일련 번호는 31 이고 일련 번호 3 까지 데이터가 수신되었음을 나타냄).

A 의 전송 창은 B 의 확인 없이 A 가 창 안의 데이터를 계속 보낼 수 있다고 밝혔다. 이미 전송된 모든 데이터는 시간 초과 재전송 시 사용할 수 있도록 확인을 받기 전에 잠시 보관해야 합니다.

발송창 뒤 여백의 뒷부분은 발송됐으며 확인을 받았다고 밝혔다. 창을 보낸 후 변경 사항은 고정 (새 확인 수신 안 함) 과 전진 (새 확인 수신) 의 두 가지 가능성이 있습니다.

발송 창의 일련 번호는 발송이 허용된 일련 번호를 나타냅니다. 창이 클수록 발신자는 상대방의 확인을 받기 전에 더 많은 데이터를 지속적으로 전송할 수 있으므로 전송 효율성이 향상됩니다. 그러나 A 의 발송 창은 B 의 수신 창 값을 초과해서는 안 된다.

전송 창 전면의 앞부분은 전송이 허용되지 않음을 나타냅니다. 전송 창의 앞부분은 일반적으로 계속 앞으로 이동하지만 움직이지 않을 수도 있습니다. 이는 두 가지 상황에 해당한다. 첫째, 새로운 확인을 받지 못했고, 상대방이 통지한 창 크기도