컴퓨터 지식 네트워크 - 컴퓨터 지식 - 22TCP IP 네트워크 프로토콜 소개-전송 계층: UDP 프로토콜

22TCP IP 네트워크 프로토콜 소개-전송 계층: UDP 프로토콜

통신의 양쪽 끝에는 두 개의 호스트가 있으며, 두 호스트의 IP 주소는 IP 데이터그램의 헤더에 표시됩니다. 그러나 전송 계층에서 데이터를 교환하는 것은 발신자 호스트의 프로세스와 수신자 호스트의 프로세스이므로 엄밀히 말하면 통신 쌍방은 호스트가 아니라 호스트의 프로세스입니다.

호스트에는 여러 적용 프로세스가 동시에 외부 세계와 통신하는 경우가 많습니다 (예: 브라우저 및 QQ 가 동시에 실행). 다음 그림에서 호스트 a 의 AP 1 프로세스가 호스트 b 의 AP3 프로세스와 통신하고 있으며 호스트 a 의 AP2 프로세스도 호스트 b 의 AP4 프로세스와 통신하고 있습니다 .....

두 호스트의 전송 계층 사이에는' 전송 계층은 애플리케이션 프로세스 간의 논리적 통신을 제공한다' 는 회색 양방향 화살표가 있습니다.

논리적 통신: 전송 계층에서 양방향 화살표를 따라 수평으로 데이터를 전송하는 것처럼 보이지만 실제로는 그림의 점선을 따라 여러 프로토콜 계층을 통해 전송됩니다.

TCP/IP 스택의 전송 계층에는 ——UDP 와 TCP 의 두 가지 중요한 프로토콜이 있습니다. 서로 다른 애플리케이션 프로세스가 전송 계층에서 TCP 또는 UDP 중 하나를 사용합니다.

첫 번째 섹션에서는 포트 개념을 이해했으며 포트 역할은 전송 계층에 반영됩니다.

앞의 그림에서 AP 1 AP3 과 AP2 와 AP4 간의 통신은 동일한 전송 계층 프로토콜 (TCP 또는 UDP) 을 통해 전송할 수 있습니다. IP 주소나 MAC 주소에 따라 데이터를 올바른 호스트로만 전송할 수 있으며 포트에 의해 식별되는 프로세스를 전송해야 합니다.

예를 들어 브라우저와 QQ 를 동시에 사용하고, 브라우저가 80 개의 포트를 차지하고, QQ 가 4000 개의 포트를 차지한다면, 전송된 QQ 메시지는 4,000 개의 포트를 통해 QQ 클라이언트에 표시되며 브라우저에 잘못 표시되지 않습니다.

포트 번호는 0 부터 65535 까지입니다. 여기서 각 항목은 다음을 나타냅니다.

숫자 0 ~ 1023 은 시스템 포트 번호입니다. 이러한 포트 번호는 www.iana.org 에서 찾을 수 있으며 가장 중요한 TCP/IP 애플리케이션 중 일부에 할당됩니다. 다음은 몇 가지 일반적인 시스템 포트 번호입니다.

다음과 같이 netstat -luant 명령을 사용하여 수신 포트를 나열합니다.

보시다시피 모두 TCP 프로토콜입니다. 그러나 나중에 UDP 패킷 전송을 시뮬레이트하는 프로그램을 작성하고 tcpdump 도구를 사용하여 패키지를 캡처하여 UDP 프로토콜을 이해하는 데 도움을 줄 것입니다.

UDP (User Datagram Protocol) 사용자 데이터그램 프로토콜 (user datagram protocol) 은 IP 데이터그램 서비스에 소량의 기능만 추가합니다. 주요 특징은 다음과 같습니다.

UDP 는 연결되지 않으며 TCP 와 같이 데이터를 보내기 전에 연결을 설정할 필요가 없으므로 오버헤드와 지연이 줄어듭니다.

UDP 는 전달의 신뢰성을 보장하지 않고 최선을 다해 전달한다.

UDP 는 메시지 지향적입니다. 애플리케이션 계층에서 전송된 IP 데이터그램의 경우 매우 간단한 캡슐화 (8 바이트 UDP 헤더) 만 수행되므로 헤더 오버헤드가 적습니다.

UDP 에는 정체 제어가 없으므로 네트워크 정체가 발생할 경우 발신자가 전송 속도를 낮추지 않습니다. 이 기능은 IP 전화, 화상 회의 등과 같은 실시간 어플리케이션에 매우 중요합니다. 이러한 데이터를 버리지 않으면 지연 누적이 발생할 가능성이 높기 때문에 정체로 인해 일부 데이터가 손실될 수 있습니다.

UDP 는 일대일, 일대다, 다대일 및 다대다 상호 작용을 지원합니다.

애플리케이션 계층에서 전송 계층, 네트워크 계층에 이르는 모든 수준의 캡슐화

UDP 데이터그램은 UDP 헤더와 데이터 섹션의 두 부분으로 나눌 수 있습니다. 데이터 부분은 응용 프로그램 계층에서 전달된 데이터입니다. UDP 헤더는 *** 8 바이트로, 이 8 바이트는 4 개의 필드로 나뉩니다.

이 c 프로그램은 IP 주소가 192. 168. 1 인 포트 7777 에' hello' 메시지를 보냅니다. 편집기를 사용하여 프로그램을 수정하여 다른 콘텐츠를 다른 IP 로 보낼 수 있습니다.

컴파일 후 실행하지 마십시오. 또한 잘 알려진 캡처 키트 도구인 tcpdump 를 사용하고 다음 명령을 차례로 입력하여 설치하고 tcpdump 를 실행해야 합니다.

새 터미널을 열고 다음 명령을 입력하여 방금 컴파일된 c 프로그램 테스트를 실행합니다.

테스트 프로그램이 실행되면 tcpdump 를 방금 실행한 터미널로 돌아가서 패킷 캡처 결과를 확인합니다.

파란색 상자는 16 의 대상 포트, 녹색 상자는 16 의 대상 IP, 빨간색 상자는 20 바이트의 IP 헤더, 주황색 밑줄은 8 바이트의 UDP 헤더, 빨간색 밑줄은 hello 의 ASCII 코드입니다.

4500 부터 0 10 1 까지 모두 IP 헤더입니다. IP 메시지 앞에서 이미 언급되었으니 여기서는 더 이상 군말을 하지 않습니다. 후반부는 UDP 메시지입니다.

UDP 헤더는 *** 8 바이트이므로 eb39 ~ ac82 는 UDP 헤더의 일부입니다.

Eb39: 소스 포트, 2 바이트, 십진수로 변환, 32830 입니다.

1e6 1: 대상 포트, 2 바이트, 10 진수 7777.

00 1c: 패킷 길이 (바이트) 입니다. 10 진수를 사용하는 경우 패킷 길이는 28 바이트입니다.

Ac82: 체크섬

다음은 데이터 내용의 ASCII 코드입니다.

Tcpdump 를 사용하여 UDP 데이터그램을 가져오고 메시지를 해석합니다.

C 프로그램을 수정하여 다른 IP 및 다른 포트로 다른 콘텐츠를 보냅니다.

上篇: 5438+ 10 월 6 월, 나는 공식적으로 산 중고 아이패드를 뒤져 조립기라는 것을 발견했다. 고객서비스는 내가 검사 보고서를 제공할 것이라고 말했다. 어떻게 내 권리를 지킬 수 있을까? 下篇: iOS 15.4의 배터리 수명이 깨졌습니다. 24시간 동안 80%의 전력이 소모됩니다. 120Hz가 원인인가요? -
관련 내용