한 기사로 TCP의 안정적인 전송 원리를 이해하세요
TCP 아래의 IP 계층은 최선의 전달이고 신뢰할 수 없기 때문에 TCP는 스스로 안정적인 전송을 완료해야 합니다. 다음으로, 안정적인 전송을 구현하는 방법을 설명하기 위해 간단한 중지 및 대기 프로토콜부터 시작합니다. 신뢰할 수 있는 전송의 몇 가지 특성, 즉 손실 없음, 중복 없음, 순서대로 도착에 주의할 필요가 있습니다.
TCP는 안정적인 전송을 위해 중지 및 대기 프로토콜을 사용하지 않습니다.
Stop Waiting Protocol
전송 계층의 데이터 전송 단위를 세그먼트라고 합니다. 이하에서는 편의상 모두 그룹이라고 부릅니다.
정지 및 대기 프로토콜의 원리는 매우 간단합니다. 패킷을 보낸 후 전송을 중지하고 이전 패킷의 확인을 기다린 후 다음 패킷을 계속 보냅니다.
다음은 여러 가지 상황을 통해 분석됩니다.
오류가 없는 상황
오류가 없는 상황은 아래와 같이 매우 간단합니다. 각 패킷이 전송된 후 전송을 중지하고 후속 패킷 전송을 계속하기 전에 패킷 확인을 기다립니다.
오류가 발생합니다
오류가 발생하는 경우는 두 가지 경우입니다. 첫 번째는 전송된 패킷이 대상 주소로 성공적으로 전달되지 않은 경우이고, 다른 하나는 전송된 데이터 패킷에 오류가 있는 경우입니다. 오류. 그림을 통해 두 가지 상황을 분석해 보겠습니다
먼저 B의 동작을 살펴보겠습니다. A는 M1 패킷을 보냅니다. 패킷이 잘못된 경우 B는 패킷을 받은 후 해당 패킷을 폐기합니다. 아무 일도 일어나지 않습니다. 하지 마십시오. (A는 잘못된 패킷이 수신되었다는 알림을 받지 않습니다.) B가 M1 패킷을 수신하지 못하면 아무 것도 모르고 어떤 조치도 취하지 않습니다.
A가 다음에 무엇을 하는지 살펴보겠습니다. A는 패킷을 보낸 후 B의 M1 패킷 확인을 받지 못합니다. 대기 시간이 초과되면 M1 패킷을 다시 보내야 합니다. 타임아웃 재전송을 구현하려면 타임아웃 타이머를 설정해야 합니다. 타임아웃 기간 이전에 전송된 패킷이 확인되면 타임아웃 타이머가 재설정되고, 그렇지 않으면 패킷을 재전송해야 합니다.
몇 가지 주의할 점이 있습니다:
A 패킷을 보낸 후 시간 초과 재전송을 위해 패킷 복사본을 저장해야 합니다. 이 패킷에 대한 승인을 받으면 패킷 복사본을 삭제할 수 있습니다.
각 그룹의 도착 상태를 알 수 있도록 각 그룹에 번호를 붙여야 합니다.
불필요한 재전송을 방지하려면 제한 시간을 평균 전송 시간보다 약간 길게 설정해야 합니다.
확인 상실 및 확인 지연
패킷 전송 중 오류 외에도 확인이 반환되는 경우에도 오류가 발생합니다. 확인 상실 및 확인 지연.
먼저 확인손실 상황을 살펴보면 A그룹 B가 이를 받아 A에게 확인메일을 보냈으나 확인메일이 분실되어 A가 받지 못했습니다. A는 M1의 확인을 받지 못했기 때문에 타임아웃 이상 기다린 후 M1을 B로 다시 전송합니다. 이때 B는 중복 패킷 M1을 수신하고 두 가지 작업을 수행해야 합니다.
중복 패킷 M1을 버리고
M1 확인을 A에게 보냅니다. A가 M1을 재전송했으므로 A가 M1의 패킷을 수신하지 못했다는 의미이기 때문입니다. 따라서 B는 계속해서 M1에게 확인 메시지를 보내야 합니다.
M1의 그룹 확인이 늦었습니다(타임아웃 기간 이후에 수신됨). A는 중복 확인을 받은 후 이를 폐기하고 다른 조치를 취하지 않습니다.
위의 타임아웃 재전송 메커니즘을 통해 신뢰할 수 없는 네트워크 전송에서도 안정적인 전송이 가능합니다.
채널 활용도
위의 중지 및 대기 프로토콜은 간단하지만 매우 큰 단점이 있습니다. 채널 활용도가 너무 낮습니다. 확인 수신을 기다리는 동안 채널이 완전히 유휴 상태가 되어 매우 낭비됩니다.
채널 활용도를 높이기 위해 파이프라인 전송을 사용할 수 있으며, 이는 여러 패킷을 지속적으로 보낼 수 있어 채널 활용도를 크게 향상시킬 수 있습니다.
파이프라인 전송을 사용하는 프로토콜에는 연속 ARQ 프로토콜 및 Window 슬라이딩 프로토콜이 있습니다. TCP는 슬라이딩 윈도우 프로토콜을 사용하여 안정적인 전송을 완료합니다.
위 내용은 한 기사로 TCP의 안정적인 전송 원리를 이해하세요의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undress AI Tool
무료로 이미지를 벗다

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

win10에서 tcp/ip 프로토콜을 재설정하는 방법은 무엇입니까? 실제로 방법은 매우 간단합니다. 사용자는 명령 프롬프트를 직접 입력한 다음 Ctrl+Shift+Enter 키 조합을 눌러 작업을 수행하거나 재설정 명령을 직접 실행하여 설정해 보겠습니다. 사용자에게 Windows 10에서 TCP/IP 프로토콜 스택을 재설정하는 방법에 대한 자세한 소개를 제공합니다. Windows 10에서 tcp/ip 프로토콜 스택을 재설정하는 방법 1. 관리자 권한 1. 단축키 win+R을 사용하여 실행 창을 직접 연 다음 cmd를 입력하고 ctrl+shift+enter 키 조합을 길게 누릅니다. 2. 또는 시작 메뉴에서 명령 프롬프트를 직접 검색하고 마우스 오른쪽 버튼을 클릭할 수도 있습니다.

TCP 클라이언트 지속적인 대화를 달성하기 위해 TCP 프로토콜을 사용하는 클라이언트 샘플 코드: importsocket#Client 구성 HOST='localhost'PORT=12345#TCP 소켓을 생성하고 서버에 연결 client_socket=socket.socket(socket.AF_INET,socket . SOCK_STREAM)client_socket.connect((HOST,PORT))whileTrue:#사용자 입력 메시지 가져오기=input("전송할 메시지를 입력하십시오:&

Kubernetes 클러스터가 구성되었다고 가정하고 CentOS 기반의 Nginx용 가상 머신을 생성하겠습니다. 실험에서 설정한 세부 내용은 다음과 같습니다. Nginx(CenOS8Minimal)–192.168.1.50KubeMaster–192.168.1.40KubeWorker1–192.168.1.41KubeWorker2–192.168.1.42 Step 1) nginx 소프트웨어 패키지가 없기 때문에 epel 저장소를 설치합니다. CentOS 시스템 기본 저장소이므로 e를 설치해야 합니다.

여기서 말하는 "연결 지향"이란 연결을 설정하고, 연결을 사용하고, 연결을 해제해야 함을 의미합니다. 연결 설정은 잘 알려진 TCP 3방향 핸드셰이크를 의미합니다. 연결을 사용할 때 데이터는 한 번의 전송과 한 번의 확인 형식으로 전송됩니다. 또한 우리의 일반적인 TCP 4파 웨이브인 연결이 릴리스되었습니다.

하나의 TCP 연결을 사용하여 여러 파일을 보내는 방법에 대한 이 블로그가 있는 이유는 무엇입니까? 최근에 관련 내용을 읽은 적이 있는데, 단순히 소켓을 프로그래밍에 사용하는 것에는 문제가 없지만, 이는 몇 가지 기본 개념만 확립한 것뿐입니다. 여전히 실제 문제에 대해서는 아무것도 할 수 없습니다. 파일을 전송해야 할 때 데이터(바이너리 데이터)를 방금 보낸 것 같은데 파일에 대한 일부 정보(파일 확장자)가 손실되었습니다. 그리고 매번 하나의 파일을 보내는 데 하나의 소켓만 사용할 수 있고, 파일을 계속해서 보낼 수 있는 방법이 없습니다. (파일 전송을 완료하기 위해 스트림을 닫는 데 의존하기 때문에 실제로 파일의 길이를 알 수 없음을 의미합니다. , 하나의 소켓 연결이 파일을 나타내므로 파일만 보낼 수 있습니다.

이런 고전적인 인터뷰 질문이 있었습니다. 브라우저에 URL을 입력하고 페이지가 표시되기까지의 과정에서 어떤 일이 발생합니까? 준비한 대부분의 학생들이 대답할 수 있다고 생각하지만, 계속해서 질문한다면 수신된 HTML에 수십 개의 이미지 태그가 포함되어 있다면 어떤 방식으로, 어떤 순서로, 몇 개의 연결이 설정되고, 다운로드할 때 어떤 프로토콜이 사용되는지 묻는 것입니다. 이 이미지들은 어때요?

TCP 통신 당사자 중 설명의 편의를 위해 다음에서는 통신 당사자를 A, B로 대체한다. TCP 프로토콜에 따르면 A가 연결을 끊은 후에도 B가 계속 데이터를 보내면 B는 A의 RST 응답을 받게 됩니다. B가 계속해서 데이터를 보내면 시스템은 SIGPIPE 신호를 보내 연결이 끊어졌음을 알리고 전송을 중단합니다. SIGPIPE 신호에 대한 시스템의 기본 처리 동작은 프로세스 B가 종료되도록 하는 것입니다. SIGPIPE 신호에 대한 운영 체제의 기본 처리 동작은 매우 비우호적입니다. TCP 통신은 두 개의 단방향 채널에 해당하는 전이중 채널이며 연결의 각 끝이 하나를 담당합니다. 반대쪽 끝이 "닫히면" 의도는 두 채널 전체를 닫는 것이지만 로컬 끝은 FIN 패킷만 수신합니다. TCP 프로토콜의 규정에 따르면,

TCP는 컴퓨터 네트워크 통신 프로토콜의 일종이며 연결 지향 전송 프로토콜입니다. Java 애플리케이션 개발에서 TCP 통신은 클라이언트와 서버 간의 데이터 전송, 오디오 및 비디오의 실시간 전송 등과 같은 다양한 시나리오에서 널리 사용됩니다. Netty4는 서버와 클라이언트 간의 데이터 교환 프로세스를 최적화하여 보다 효율적이고 안정적으로 만들 수 있는 고성능, 확장성이 뛰어난 고성능 네트워크 프로그래밍 프레임워크입니다. TCP 통신에 Netty4를 사용하는 구체적인 구현 단계는 다음과 같습니다.
