tcp와 udp의 차이점은 다음과 같습니다. 1. udp는 연결이 없고 tcp는 연결 지향입니다. 2. udp는 신뢰할 수 없는 전송이고 tcp는 안정적인 전송입니다. 3. udp는 메시지 지향이고 tcp는 바이트 지향입니다.
비교:
(학습 영상 추천: java 영상 튜토리얼)
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!