전송 계층 프로토콜(TCP, UDP)
전송 계층은 호스트 애플리케이션 간의 종단 간 연결을 정의합니다. 전송 계층에서 가장 일반적인 두 가지 프로토콜은 TCP(전송 제어 프로토콜)와 UDP(사용자 데이터그램 프로토콜)입니다.
문제 설명을 단순화하기 위해 본 과정에서는 Telnet을 예로 들어 관련 기술을 설명합니다. 장치는 Telnet 프로토콜과 Stelnet 프로토콜을 통한 로그인을 지원합니다. Telnet을 사용하는 경우 Stelnet v1 프로토콜은 보안 위험이 있으므로 STelnet v2를 사용하여 장치에 로그인하는 것이 좋습니다.
문제 설명을 단순화하기 위해 본 과정에서는 FTP를 예로 들어 관련 기술을 설명합니다. 이 장치는 FTP 프로토콜, TFTP 및 SFTP를 통한 파일 전송을 지원합니다. FTP, TFTP 및 SFTP v1 프로토콜을 사용하면 위험이 있습니다. 파일 작업에는 SFTP v2를 사용하는 것이 좋습니다.
TCP는 안정적인 전송 서비스를 제공하는 연결 지향 전송 계층 프로토콜입니다.
TCP는 연결 지향 엔드투엔드 프로토콜입니다. 전송 제어 프로토콜로서 TCP는 호스트에 안정적인 데이터 전송을 제공할 수 있습니다. TCP는 네트워크 프로토콜을 사용하여 호스트에 사용 가능한 전송 경로를 제공합니다.
TCP를 사용하면 하나의 호스트가 여러 애플리케이션 프로세스를 동시에 실행할 수 있습니다. 각 호스트는 여러 개의 애플리케이션 포트를 가질 수 있으며 포트 번호, 소스 및 대상 IP 주소의 조합으로 세션을 고유하게 식별합니다. 포트는 잘 알려진 포트와 동적 포트로 구분됩니다. 일부 네트워크 서비스는 고정 포트를 사용합니다. 이러한 포트를 잘 알려진 포트라고 하며 포트 번호 범위는 0부터 1023까지입니다.
예: FTP, HTTP, Telnet 및 SNMP 서비스는 모두 잘 알려진 포트를 사용합니다.
동적 포트 범위는 1024~65535입니다. 이 포트 번호는 일반적으로 특정 서비스에 할당되지 않으므로 많은 서비스에서 이 포트를 사용할 수 있습니다. 실행 중인 프로그램이 시스템에 네트워크 액세스를 요청하는 한 시스템은 프로그램이 사용할 포트 번호 중 하나를 할당할 수 있습니다.
TCP는 일반적으로 IP를 네트워크 계층 프로토콜로 사용합니다. 이곳에서 TCP 데이터가 IP 패킷에 캡슐화됩니다. TCP 데이터 세그먼트는 TCP 헤더와 TCP 데이터로 구성됩니다. TCP는 최대 60바이트의 헤더를 가질 수 있습니다. 옵션 필드가 없으면 일반 길이는 20바이트입니다.
TCP 헤더는 위 그림에 표시된 대로 식별되는 일부 필드로 구성됩니다. 다음은 몇 가지 공통 필드입니다.
참고:
1) 호스트 A(일반적으로 클라이언트라고도 함)는 서버 A와의 연결을 설정할 것으로 예상됨을 나타내는 SYN 데이터 세그먼트를 보냅니다. 이 시퀀스 번호는 데이터 세그먼트(seq)는 a입니다.
2) 서버 A는 SYN ACK로 식별된 데이터 세그먼트로 응답합니다. 이 데이터 세그먼트의 시퀀스 번호(seq)는 b이고 확인 시퀀스 번호는 시퀀스입니다. 호스트 A의 SYN 메시지 확인으로 호스트 A의 번호에 1을 더한 값입니다.
3) 호스트 A는 ACK로 표시된 데이터 세그먼트를 전송합니다. 이 데이터 세그먼트의 시퀀스 번호(seq)는 1이고 확인 시퀀스 번호는 서버 A의 시퀀스 번호에 1을 더한 값입니다(b 1). ), 따라서 이는 서버 A의 SYN 세그먼트를 확인하는 역할을 합니다.
TCP는 안정적인 연결 지향 전이중 전송 계층 프로토콜입니다.
TCP 연결 재개는 3방향 핸드셰이크 프로세스입니다.
TCP의 안정적인 전송에는 TCP가 확인 기술을 사용하여 대상 장치가 소스 장치에서 전송된 데이터를 수신했는지, 정확한지 확인하는 것도 언급되어 있습니다.
확인 기술의 작동 원리는 다음과 같습니다.
대상 장치가 소스 장치에서 보낸 데이터 세그먼트를 수신하면 소스에 확인 메시지를 보냅니다. 소스 장치는 확인 메시지를 받고 계속해서 데이터 세그먼트를 보냅니다.
그림과 같이 호스트 A는 TCP 데이터 세그먼트를 서버 A로 보냅니다. 설명의 편의를 위해 각 데이터 세그먼트의 길이는 500바이트라고 가정합니다.
서버 A가 시퀀스 번호 M 1499의 바이트와 모든 이전 바이트를 성공적으로 수신하면 시퀀스 번호 M 1400 1=M 1500으로 확인됩니다. 또한, 데이터 세그먼트 N 3의 전송이 실패했기 때문에 서버 A는 시퀀스 번호 M 1500의 바이트 수신에 실패했기 때문에 서버 A는 시퀀스 번호 M 1500으로 다시 확인합니다.
참고: 위에서 언급한 것처럼 데이터 세그먼트 N 3의 전송이 실패하면 두 번째 확인 번호 M 1500, 호스트 A는 N 3, N 4 및 N 5를 모두 한 번 보냅니다.
TCP 슬라이딩 윈도우 기술은 윈도우 크기를 동적으로 변경하여 종단 간 데이터 전송의 흐름 제어를 실현합니다.
그림과 같이 호스트 A와 서버 A 사이에는 슬라이딩 윈도우를 통해 흐름 제어가 구현됩니다. 이해를 돕기 위해 이 예에서는 호스트 A가 서버 A로 데이터를 보낼 때 서버 A가 슬라이딩 윈도우를 통해 흐름 제어를 수행한다는 것만 고려합니다.
예에서:
호스트 A는 길이가 1024바이트인 4개의 데이터 세그먼트를 서버에 보냅니다. 여기서 호스트의 창 크기는 4096바이트입니다. 서버 A가 세 번째 바이트를 받은 후 버퍼 영역이 가득 차고 네 번째 데이터 세그먼트가 삭제됩니다. 서버는 ACK3073(1024*3=3072)으로 응답하고 창 크기는 3072로 조정됩니다. 이는 서버의 버퍼가 3072바이트 데이터 세그먼트만 처리할 수 있음을 나타냅니다. 따라서 호스트 A는 전송 속도를 변경하고 창 크기가 3072인 데이터 세그먼트를 보냅니다.
연결을 종료하기 전에 호스트는 상대방으로부터 ACK 수신을 확인해야 합니다.
TCP는 데이터 전송을 위한 전이중 모드를 지원합니다. 이는 데이터가 동시에 양방향으로 전송될 수 있음을 의미합니다. TCP는 데이터를 전송하기 전에 실제로 3방향 핸드셰이크를 통해 두 방향의 연결을 설정합니다. 전송이 완료된 후에는 양방향 연결을 닫아야 합니다.
TCP 연결 설정은 3방향 핸드셰이크 프로세스이며 TCP 연결 종료에는 4번의 작별 인사가 필요합니다.
그림과 같이:
1. 호스트 A는 연결을 종료하려고 하므로 FIN 및 ACK와 함께 데이터 세그먼트를 전송하며 시퀀스 번호는 a이고 확인 시퀀스 번호는 b입니다.
2. 서버 A는 호스트 A의 FIN 메시지에 대한 확인으로 시퀀스 번호 b와 확인 시퀀스 번호 a 1을 사용하여 ACK로 표시된 데이터 세그먼트로 응답합니다.
3. 서버 A는 연결을 종료하려고 하여 FIN 및 ACK로 표시된 데이터 세그먼트를 호스트 A로 보냅니다. 시퀀스 번호는 b이고 확인은 a 1입니다.
4. 호스트 A는 서버 A의 FIN 메시지에 대한 확인으로 시퀀스 번호 a 1 및 확인 시퀀스 번호 b 1을 사용하여 ACK로 표시된 데이터 세그먼트로 응답합니다.
위의 네 가지 상호 작용은 양방향 연결 종료를 완료합니다.
TCP 연결 해제 단계, 더 자세한 내용은 다음과 같습니다.
/ctrl_qun/article/details/52518479
UDP는 연결 없는 전송 계층 프로토콜이며 전송 안정성은 그렇지 않습니다. 보장됩니다.
애플리케이션의 전송 신뢰성에 대한 요구 사항은 높지 않지만 전송 속도 및 지연에 대한 요구 사항은 높은 경우 UDP 프로토콜을 사용하여 TCP 프로토콜을 대체하여 전송 계층에서 데이터 전달을 제어할 수 있습니다. . UDP가 소스에서 대상으로 데이터를 보낼 때 미리 연결을 설정할 필요가 없습니다. UDP는 간단하고 조작하기 쉬운 메커니즘을 사용하여 애플리케이션 간에 데이터를 전송하며 TCP의 확인 기술이나 슬라이딩 윈도우 메커니즘을 사용하지 않습니다. 따라서 UDP는 데이터 전송의 신뢰성을 보장할 수 없으며 중복 데이터 수신을 피할 수도 없습니다.
UDP 헤더는 8바이트만 차지하며 데이터 전송 시 확인 메커니즘이 없습니다(참고: 체크섬이 있음).
UDP 메시지는 UDP 헤더와 UDP 데이터 영역의 두 부분으로 나뉩니다. 헤더는 소스 포트, 대상 포트, 메시지 길이 및 체크섬으로 구성됩니다. UDP는 음성, 영상 통신 등 실시간 데이터 전송에 적합합니다. UDP는 TCP에 비해 전송 효율이 높고 오버헤드가 낮지만 데이터 전송의 신뢰성을 보장할 수는 없습니다. UDP 헤더의 식별은 다음과 같다.
1) 16비트 소스 포트 번호 : 소스 호스트의 응용 프로그램이 사용하는 포트 번호.
2) 16비트 대상 포트 번호: 대상 호스트 응용 프로그램에서 사용하는 포트 번호입니다.
3) 16비트 UDP 길이: UDP 헤더와 UDP 데이터의 바이트 길이를 의미합니다. UDP 헤더 길이가 8바이트이므로 필드의 최소값은 8입니다.
4) 16비트 UDP 체크섬: 이 필드는 TCP 체크섬 필드와 동일한 기능을 제공합니다. 이 필드는 선택 사항입니다.
UDP를 사용하여 데이터를 전송할 때 애플리케이션은 필요에 따라 메시지 도착 확인, 정렬, 흐름 제어 등의 기능을 제공합니다.
호스트 A가 데이터 패킷을 보낼 때 이러한 데이터 패킷은 순서대로 네트워크에 전송됩니다. 각 데이터 패킷은 네트워크에서 독립적으로 전송되므로 서로 다른 데이터 패킷이 서로 다른 네트워크 경로를 통과할 수 있습니다. 비. 이 경우 먼저 전송된 데이터 패킷이 반드시 호스트 B에 먼저 도착하는 것은 아닙니다. UDP 패킷에는 시퀀스 번호가 없기 때문에 Host B는 UDP 프로토콜을 통해 패킷을 원래 순서대로 재조립할 수 없습니다. 따라서 애플리케이션은 패킷 도착 확인, 정렬, 흐름 제어 및 기타 기능(즉, UDP 패킷 도착 확인, 순서 지정 및 흐름 제어는 애플리케이션에 따라 결정됩니다. 일반적으로 UDP는 실시간 전송 메커니즘과 타임스탬프를 사용하여 음성 및 비디오 데이터를 전송합니다.
UDP는 음성, 영상 등 지연에 민감한 트래픽을 전송하는 데 적합합니다.
TCP 프로토콜을 사용하여 데이터를 전송할 때 데이터 세그먼트가 손실되거나 수신 측에서 특정 데이터 세그먼트를 확인하지 않으면 송신 측에서 데이터 세그먼트를 다시 보냅니다.
TCP가 데이터를 재전송하면 전송 지연과 데이터 중복이 발생하여 사용자 경험이 저하됩니다. 지연에 민감한 애플리케이션의 경우 일반적으로 약간의 데이터 손실은 무시할 수 있습니다. 이는 UDP 전송을 사용하면 사용자 경험이 향상될 수 있기 때문입니다.
요약:
1. TCP 헤더에 있는 확인 비트의 기능은 무엇입니까?
TCP 헤더의 ACK 플래그는 대상에서 데이터가 수신되었는지 확인하는 데 사용됩니다. 대상이 시퀀스 번호 x의 바이트를 성공적으로 수신한 후 시퀀스 번호 x 1로 이를 확인합니다.
2. TCP 헤더의 어떤 식별 비트가 TCP 3방향 핸드셰이크에 참여합니까?
TCP 3방향 핸드셰이크 프로세스 중에 SYN 및 ACK 플래그는 연결 설정을 요청하고 확인하는 데 사용됩니다.