스물 아홉 - UDP와 TCP

최근 와이파이 모듈을 쓴, 그래서 이해의 발견 또는 약간 오해하기 전에, TCP와 UDP의 차이의 일부를 취소합니다. 이제 다시 학습.

 같은 점

UDP 프로토콜과 TCP 프로토콜은 전송 계층 프로토콜입니다

TCP (전송 제어 프로토콜, 전송 제어 프로토콜)는 연결 지향, 신뢰할 수있는 바이트 스트림 서비스입니다. 즉 클라이언트와 서버는 데이터를 교환하기 전에, 먼저 한 후 데이터를 전송하기 위해, 양측 사이에 TCP 연결을 설정해야합니다. 중복 데이터, 테스트 데이터, 및 다른 유동 제어 기능을 폐기 또는 타임 아웃 재전송을 제공하는 것은 데이터를 다른 쪽 끝에서 송신되도록한다.

UDP (사용자 데이터 프로토콜, 사용자 데이터 그램 프로토콜) 간단한 그램 지향 전송 계층 프로토콜이다. 그냥 보내 응용 프로그램 계층의 IP 데이터 그램을 통과, 신뢰성을 제공하지 않습니다,하지만 그들은 그들의 목적지에 도달 할 수 있음을 보증하지 않습니다. UDP는 더 이상 클라이언트와 서버 사이의 데이터 패킷을 전송하기 전에 연결없이 타임 아웃 재전송 메커니즘을 수립 없습니다, 그래서 전송이 빠르고 때문입니다.

다른 점

1, 다른 헤더

2 가지 특성

3, 다른 프로토콜

UDP

(UDP 헤더를 포함하는)을 UDP 데이터 그램 64K의 최대 길이는, 상기 데이터 길이는 응용 계층에서의 직접 하위 응용 계층은 UDP 패킷 순서를 보장 할 수있는 필요가 필요한 개수가 64K를 초과하는 경우.

특징

1, 아니 연결 : 연결을 설정하지 않고, 직접 운송에 피어 IP와 포트 번호를 알아야합니다.

2 신뢰할 없음 응답 메커니즘없이 재전송 메커니즘, 네트워크 고장 세그먼트의 다른 측에 송신 할 수없는 경우, UDP 프로토콜 계층의 애플리케이션 층은 에러 메시지를 리턴하지 않을 것이다.

보고 3 데이터 : 유연한 제어 데이터를 읽고 쓸 횟수 긴 UDP 패킷 오리 UDP 전송, 어느 분할이나 결합을 응용 계층 수 없다.

도 4는 데이터 수집 유연 아니지만, 두 개의 데이터 패킷들 사이에 분명한 구분이 문제 패키지를 부착하는 피.

계약 :

NFS : 네트워크 파일 시스템

TFTP : 간이 파일 전송 프로토콜

DHCP : 동적 호스트 구성 프로토콜

BOOTP : 개시 프로토콜 (디스크리스 부팅 장치)

DNS : 도메인 이름 확인 프로토콜

TCP

특징 : 연결 지향

1 연결형

TCP 세 방향 핸드 셰이크

1, B는, 상기 데이터 세그먼트를 통해 호스트에 연결 요청을 확립 두가지에게 호스트 B 호스트는 호스트 B에 데이터 세그먼트 동기 시퀀스 번호 플래그 (SYN)를 전송하여 B를 호스팅하는 호스트 (A)를 포함 I 원하는 당신과 통신, 당신은 시작 세그먼트로 나에게 응답하는 데 사용할 수있는 일련 번호입니다.

도 2는, 호스트 B는 상기 요청을 수신하는 호스트, 및 호스트에 응답하여 확인 응답 (ACK) 및 동기식 시리얼 번호 (SYN) 플래그 데이터 세그먼트는, 호스트 A는 또한 두 가지 인터뷰 I받은하여 요청, 당신은 데이터를 전송할 수 있습니다, 당신은 나에게 응답하기 시작 세그먼트로 사용할 일련 번호를.

A는 데이터 세그먼트를 수신하고 상기 데이터 세그먼트 호스트 B의 수신을 확인하는 확인 응답을 송신하는 호스트 후 3. "나는 지금 실제 데이터 전송을 시작하고자하는 응답을 수신했습니다."

3- 방향 핸드 쉐이크가 완료되면, 호스트 A와 호스트 B는 데이터를 전송할 수있다.

TCP 네 개의 프로세스를 흔들었다

데이터 전송이 완료되면, 호스트 (1)는, 상기 제어 비트는 1 FIN, 제조 된 TCP 접속 요청 중지로 설정된다.

도 2에 도시 된 바와 같이, 호스트 B는 FIN 그에 대한 응답을 수신하고 상기 TCP 접속 응답이 그 방향으로 폐쇄되며, 상기 ACK가 설정된다.

3, 호스트 B에서 호스트 A가 응답을 요청 ACK가 1로 설정된 두 단부에 가깝다.

TIME_WAIT 상태

TCP 협정의 당사자는 두 개의 MSL (최대 패킷 수명) 시간이 지나면 다시 CLOSED 상태로 얻기 위해 기다리고, 연결이 TIME_WAIT 상태에 닫습니다 주도권을 쥐고있다.

TIME_WAIT 지속성 2MSL는, 우리는 세그먼트가 늦게 수신 전송의 양 방향으로되지 않았거나 사라진 보장 할 수 있습니다 (또는 즉시 서버를 다시 시작, 당신이 과정에 늦게로부터 데이터를 수신 할 수 있지만, 데이터가) 잘못 될 가능성이 높습니다. 뿐만 아니라, 이론적으로, 신뢰할 수있는 마지막 패킷이 도착할 수 있도록 (마지막 ACK가 손실된다고 가정하면, 서버는 클라이언트 프로세스가 사라지고 있지만,이 때. FIN을 다시,하지만 여전히 TCP 연결을 수행 할 수 있습니다 여전히 재전송 LAST_ACK합니다).

 

 

링크 : https://blog.csdn.net/sifanchao/article/details/82285018

추천

출처www.cnblogs.com/smart-zihan/p/11480477.html