일반적인 문제 TCP와 UDP의 차이점은 무엇입니까

TCP와 UDP의 차이점은 무엇입니까

Nov 11, 2020 am 09:14 AM
tcp udp

tcp와 udp의 차이점은 다음과 같습니다. 1. udp는 연결이 없고 tcp는 연결 지향입니다. 2. udp는 신뢰할 수 없는 전송이고 tcp는 안정적인 전송입니다. 3. udp는 메시지 지향이고 tcp는 바이트 지향입니다.

TCP와 UDP의 차이점은 무엇입니까

비교:

(학습 영상 추천: java 영상 튜토리얼)

TCP와 UDP의 차이점은 무엇입니까

UDP

UDP 프로토콜의 전체 이름은 TCP 프로토콜처럼 네트워크에서 데이터를 처리하는 데 사용되는 User Datagram Protocol입니다. 패킷은 연결이 없는 프로토콜입니다. OSI 모델에서 네 번째 계층인 전송 계층은 IP 프로토콜의 상위 계층입니다. UDP는 데이터 패킷 그룹화, 조립 및 정렬이 불가능하다는 단점이 있습니다. 즉, 메시지가 전송된 후에는 메시지가 안전하고 완전하게 도착했는지 알 수 없습니다.

다음과 같은 특징이 있습니다.

1. 비연결의 경우

먼저 UDP는 TCP처럼 데이터를 보내기 전에 연결을 설정하기 위해 3방향 핸드셰이크를 수행할 필요가 없습니다. 데이터. 그리고 이는 데이터 패킷의 포터일 뿐이며 데이터 패킷에 대한 분할 또는 접합 작업을 수행하지 않습니다.

구체적으로:

전송 측에서 애플리케이션 계층은 데이터를 전송 계층의 UDP 프로토콜로 전달합니다. UDP는 UDP 헤더만 데이터에 추가한 다음 네트워크 계층으로 전달합니다. 수신 측에서는 네트워크 계층이 데이터를 전송 계층으로 전달하고, UDP는 IP 헤더만 제거하고 이를 별도의 스플라이싱 작업 없이 애플리케이션 계층으로 전달합니다

2. 유니캐스트, 멀티캐스트, 브로드캐스트 기능이 있습니다

UDP는 일대일만 지원하는 것이 아닙니다. 전송 방식도 일대다, 다대다, 다대일 방식을 지원합니다. 즉, UDP는 유니캐스트, 멀티캐스트, 브로드캐스트 기능을 제공합니다.

3. UDP는 메시지 지향입니다.

발신자의 UDP는 헤더를 추가한 후 메시지를 IP 계층까지 전달합니다. UDP는 애플리케이션 계층에서 전달된 패킷을 병합하거나 분할하지 않지만 이러한 패킷의 경계를 유지합니다. 따라서 애플리케이션은 적절한 크기의 메시지를 선택해야 합니다

4. 신뢰성 없음

우선 연결이 부족하다는 사실이 반영됩니다. 통신은 원할 때마다 보낼 수 있습니다. 확실히 신뢰할 수 없습니다.

그리고 데이터는 수신된 대로 전송되며 데이터는 백업되지 않습니다. 데이터를 보낼 때 상대방이 데이터를 올바르게 수신했는지 여부는 중요하지 않습니다.

게다가 네트워크 환경은 좋고 나쁨에도 불구하고 UDP는 혼잡 제어가 없기 때문에 항상 일정한 속도로 데이터를 전송하게 됩니다. 네트워크 상태가 좋지 않더라도 전송 속도는 조정되지 않습니다. 이 구현의 단점은 네트워크 상태가 좋지 않을 때 패킷 손실이 발생할 수 있다는 것입니다. 그러나 실시간 요구 사항이 높은 일부 시나리오(예: 전화 회의)에서는 장점도 분명합니다. 대신 UDP를 사용해야 합니다. TCP.

5. 헤더 오버헤드가 작아 데이터 메시지를 전송할 때 매우 효율적입니다.

TCP

한 컴퓨터가 다른 컴퓨터와 통신하려면 올바른 데이터 송수신을 보장하기 위해 두 컴퓨터 간의 통신이 원활하고 안정적이어야 합니다. 예를 들어, 웹페이지를 보거나 이메일을 확인하고 싶을 때, 콘텐츠 손실 없이 웹페이지를 완전하고 순서대로 보고 싶을 것입니다. 파일을 다운로드할 때 파일의 일부가 아닌 완전한 파일을 얻기를 바라는데, 그 이유는 데이터가 손실되거나 순서가 어긋나면 원하는 결과가 아니기 때문에 TCP를 사용하기 때문입니다.

TCP 프로토콜의 전체 이름은 전송 제어 프로토콜(Transmission Control Protocol)이며 IETF의 RFC 793에 의해 정의된 연결 지향적이고 안정적인 바이트 스트림 기반 전송 계층 통신 프로토콜입니다. TCP는 연결 지향적이고 안정적인 스트리밍 프로토콜입니다. 하천은 중단되지 않는 데이터 구조를 의미합니다. 배수관에 물이 흐르는 것처럼 생각할 수 있습니다.

1. TCP 연결 프로세스

첫 번째 핸드셰이크

클라이언트가 서버에 연결 요청 세그먼트를 보냅니다. 이 메시지 세그먼트에는 데이터 통신을 위한 자체 초기 시퀀스 번호가 포함되어 있습니다. 요청이 전송된 후 클라이언트는 SYN-SENT 상태로 들어갑니다.

두 번째 핸드셰이크

서버가 연결 요청 세그먼트를 수신한 후 연결에 동의하면 응답을 보냅니다. 여기에는 자체 초기 데이터 통신 시퀀스 번호도 포함됩니다. 전송이 완료된 후 SYN을 입력합니다. -수신 상태.

세 번째 핸드셰이크

클라이언트는 연결 승인 응답을 받으면 서버에 확인 메시지도 보냅니다. 클라이언트가 이 메시지 세그먼트를 보낸 후 서버는 이 응답을 받은 후 ESTABLISHED 상태로 들어갑니다. 이 때 연결이 성공적으로 설정됩니다.

여기서 질문이 있을 수 있습니다. TCP에서 연결을 설정하기 위해 두 번의 핸드셰이크가 아닌 세 번의 핸드셰이크가 필요한 이유는 무엇입니까? 잘못된 연결 요청 세그먼트가 서버에서 수신되어 오류가 발생하는 것을 방지하기 때문입니다.

2. TCP 연결 해제

TCP는 전이중 방식이므로 연결 해제 시 양쪽 끝에서 FIN과 ACK를 보내야 합니다.

첫 번째 핸드셰이크

클라이언트 A가 데이터 전송이 완료되었다고 판단하면 서버 B에 연결 해제 요청을 보내야 합니다.

두 번째 악수

B 연결 해제 요청을 받은 후 애플리케이션 계층에 TCP 링크를 해제하라고 지시합니다. 그러면 ACK 패킷이 전송되고 CLOSE_WAIT 상태가 됩니다. 이는 A에서 B로의 연결이 해제되고 A가 보낸 데이터를 더 이상 수신할 수 없음을 나타냅니다. 그러나 TCP 연결은 양방향이기 때문에 B는 여전히 A에게 데이터를 보낼 수 있습니다.

세 번째 핸드셰이크

B는 이때 아직 완료되지 않은 데이터가 있으면 계속 전송합니다. 완료 후 A에게 연결 해제 요청을 보낸 다음 B는 LAST-ACK 상태로 들어갑니다.

네 번째 악수

해제 요청을 받은 A는 B에게 확인 응답을 보냅니다. 이때 A는 TIME-WAIT 상태에 들어갑니다. 이 상태는 2MSL(최대 세그먼트 수명, 메시지 세그먼트가 네트워크에 남아 있는 시간을 나타내며 시간 초과 후 폐기됨) 동안 지속됩니다. 이 기간 내에 B로부터 재전송 요청이 없으면 CLOSED로 전환됩니다. 상태. B도 확인 응답을 받으면 CLOSED 상태로 진입합니다.

3. TCP 프로토콜의 특징

연결 지향

연결 지향, 즉 데이터를 보내기 전에 양쪽 끝에서 연결이 설정되어야 함을 의미합니다. 연결을 설정하는 방법은 안정적인 연결을 설정할 수 있는 "3방향 핸드셰이크"입니다. 연결을 설정하면 안정적인 데이터 전송을 위한 기반이 마련됩니다.

유니캐스트 전송만 지원

각 TCP 전송 연결은 두 개의 끝점만 가질 수 있고 지점 간 데이터 전송만 수행할 수 있으며 멀티캐스트 및 브로드캐스트 전송 방법을 지원하지 않습니다.

바이트 스트림 지향

TCP는 UDP처럼 메시지를 독립적으로 전송하지 않고 메시지 경계를 유지하지 않고 바이트 스트림으로 전송합니다.

신뢰할 수 있는 전송

신뢰할 수 있는 전송을 위해 패킷 손실 및 오류는 TCP 세그먼트 번호와 확인 번호로 판단됩니다. 메시지 전송의 신뢰성을 보장하기 위해 TCP는 각 패킷에 시퀀스 번호를 부여하는 동시에 수신측 엔터티로 전송되는 패킷이 순서대로 수신되도록 보장합니다. 그런 다음 수신 엔터티는 성공적으로 수신된 바이트에 대한 해당 승인(ACK)을 다시 보냅니다. 전송 엔터티가 합리적인 왕복 지연(RTT) 내에 승인을 받지 못하면 해당 데이터(손실된 것으로 가정)가 재전송됩니다. .

혼잡 제어 제공

네트워크가 혼잡할 때 TCP는 네트워크에 주입되는 데이터의 속도와 양을 줄여 혼잡을 완화할 수 있습니다.

TCP는 전이중 통신을 제공합니다

TCP는 통신 양쪽의 애플리케이션이 통신할 수 있도록 합니다. 양방향 통신을 위해 데이터를 임시로 저장하는 TCP 연결 양쪽 끝에 캐시가 있기 때문에 언제든지 데이터를 보낼 수 있습니다. 물론 TCP는 데이터 세그먼트를 즉시 보낼 수도 있고, 한 번에 더 많은 데이터 세그먼트를 보내기 위해 잠시 동안 캐시할 수도 있습니다(최대 데이터 세그먼트 크기는 MSS에 따라 다름)

관련 권장 사항: php training

위 내용은 TCP와 UDP의 차이점은 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

PHP 및 UDP 프로토콜을 사용하여 비동기 통신을 구현하는 방법 PHP 및 UDP 프로토콜을 사용하여 비동기 통신을 구현하는 방법 Jul 30, 2023 pm 07:31 PM

PHP 및 UDP 프로토콜을 사용하여 비동기 통신을 구현하는 방법 현대 인터넷 응용 프로그램에서 비동기 통신은 매우 중요한 방법이 되었습니다. 비동기 통신을 사용하면 메인 스레드를 차단하지 않고 사용자 요청을 동시에 처리할 수 있어 시스템 성능과 응답 속도가 향상됩니다. 널리 사용되는 백엔드 프로그래밍 언어인 PHP에서 UDP 프로토콜을 사용하여 비동기 통신을 구현하는 방법은 무엇입니까? 이 기사에서는 UDP 프로토콜을 사용하여 PHP에서 간단한 비동기 통신을 구현하는 방법을 소개하고 특정 코드 예제를 첨부합니다. 1. UDP 프로토콜 소개U

win10에서 tcp/ip 프로토콜을 재설정하는 방법은 무엇입니까? Windows 10에서 TCP/IP 프로토콜 스택을 재설정하는 방법 win10에서 tcp/ip 프로토콜을 재설정하는 방법은 무엇입니까? Windows 10에서 TCP/IP 프로토콜 스택을 재설정하는 방법 Mar 16, 2024 am 11:07 AM

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

UDP 포트 번호는 무엇입니까? UDP 포트 번호는 무엇입니까? Feb 23, 2023 pm 02:00 PM

일반적인 UDP 포트 번호는 53, 69, 161, 2049, 68 및 520입니다. UDP는 포트 번호를 사용하여 다양한 애플리케이션을 위한 자체 데이터 전송 채널을 예약합니다. 1. NFS(네트워크 파일 시스템), 포트 번호는 2049, SNMP(단순 네트워크 관리 프로토콜), 포트 번호는 161입니다. 시스템(DNS), 포트 번호는 53입니다. 4. 단순 파일 전송 시스템(TFTP), 포트 번호는 69입니다. 5. 동적 호스트 구성 프로토콜(DHCP), 포트 번호는 68입니다. 포트 번호는 520 등입니다.

Java API 개발에서 TCP 통신을 위해 Netty4 사용 Java API 개발에서 TCP 통신을 위해 Netty4 사용 Jun 17, 2023 pm 11:18 PM

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

Python에서 TCP를 사용하여 클라이언트와 서버 간의 대화를 구현하는 방법 Python에서 TCP를 사용하여 클라이언트와 서버 간의 대화를 구현하는 방법 May 17, 2023 pm 03:40 PM

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("전송할 메시지를 입력하십시오:&

Jul 24, 2023 pm 05:18 PM

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

리눅스 SIGPIPE 신호 리눅스 SIGPIPE 신호 Feb 19, 2024 pm 04:00 PM

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

Java에서 단일 TCP 연결을 사용하여 여러 파일을 보내는 방법은 무엇입니까? Java에서 단일 TCP 연결을 사용하여 여러 파일을 보내는 방법은 무엇입니까? Apr 27, 2023 am 08:49 AM

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