tcp와 udp는 "전송 계층" 프로토콜입니다. UDP와 TCP는 컴퓨터 전송 계층에서 중요한 프로토콜입니다. TCP는 연결 지향이고 UDP는 비연결 지향입니다. TCP(전송 제어 프로토콜)는 IETF의 RFC 793에 정의된 연결 지향적이고 안정적인 바이트 스트림 기반 전송 계층 통신 프로토콜입니다. UDP(사용자 데이터그램 프로토콜)는 응용 프로그램이 연결을 설정하지 않고 캡슐화된 IP 패킷을 보낼 수 있는 방법을 제공합니다.
이 튜토리얼의 운영 환경: Windows 7 시스템, Dell G3 컴퓨터.
컴퓨터 네트워크 아키텍처는 각 계층의 프로토콜과 계층 간 포트의 모음인 컴퓨터 네트워크 계층 구조 모델을 나타냅니다. 컴퓨터 네트워크에서의 통신은 네트워크 통신 프로토콜에 의존해야 합니다. 1997년 국제 표준화 기구(ISO)가 제안한 널리 사용되는 OSI(개방형 시스템 상호 연결) 참조 모델을 관습적으로 ISO/OSI 참조 모델이라고 합니다.
OSI 7계층 참조 모델:
OSI는 네트워크 시스템을 기능적으로 상대적으로 독립적인 7개의 질서 있는 하위 시스템으로 논리적으로 나누므로 OSI 아키텍처는 기능적으로 상대적으로 독립적인 7개의 레벨로 구성됩니다. 낮은 것부터 높은 것까지 물리적 계층, 데이터 링크 계층, 네트워크 계층, 전송 계층, 세션 계층, 프리젠테이션 계층 및 애플리케이션 계층입니다.
TCP/IP 참조 모델
TCP/IP에는 네트워크 인터페이스 계층, 인터넷 계층, 전송 계층 및 애플리케이션 계층의 4개 계층이 있습니다. TCP/IP 계층 구조와 OSI 계층 구조의 비교는 아래 그림에 나와 있습니다.
tcp와 udp는 컴퓨터 네트워크 아키텍처의 "전송 계층" 프로토콜에 속합니다.
인터넷의 전송 계층에는 서로를 보완하는 두 가지 주요 프로토콜이 있습니다. 비연결형 UDP는 애플리케이션에 패킷을 전송하고 필요한 수준에서 자체 프로토콜을 설계할 수 있는 기능을 제공하는 것 외에는 특별한 역할을 하지 않습니다. 연결 지향형은 거의 모든 작업을 수행하는 TCP입니다.
전송 계층은 전체 네트워크 계층 시스템의 핵심 계층 중 하나입니다. 네트워크 계층은 대상 호스트에게만 패킷을 보냅니다. 그러나 실제 통신은 호스트가 아니라 호스트 내의 프로세스입니다. 전송 계층은 그 위의 애플리케이션 계층에 통신 서비스를 제공하는 최상위 통신 지향 계층에 속합니다. 네트워크의 가장자리 부분에 있는 두 호스트가 종단간 통신을 위해 네트워크의 핵심 부분의 기능을 사용하는 경우입니다. , 호스트의 프로토콜 스택만 존재합니다. 전송 계층은 프로세스 간 논리적 통신을 제공합니다. 전송 계층은 상위 수준 사용자로부터 기본 네트워크 계층의 핵심 세부 정보를 보호하여 애플리케이션이 끝난 것처럼 보이게 합니다. - 두 전송 계층 엔터티 간의 통신 채널
IP 패킷이 대상 호스트로 패킷을 보낼 수 있지만 이 패킷은 여전히 호스트의 네트워크 계층에 남아 있으며 애플리케이션 프로세스로 전달되지 않습니다. 호스트 두 컴퓨터 간의 통신 프로세스 중에 실제로는 이 호스트의 프로세스가 다른 호스트의 프로세스와 데이터를 교환하고 있습니다. 전송 계층의 관점에서 보면 통신의 실제 끝점은 호스트가 아니라 호스트 내의 프로세스입니다. 즉, 엔드투엔드 통신은 애플리케이션 프로세스 간의 통신입니다.
전송 계층의 두 가지 중요한 기능:
네트워크 계층과 전송 계층의 차이점: 네트워크 계층은 호스트 간의 논리적 통신을 제공하는 반면 전송 계층은 애플리케이션에 대한 종단 간 통신을 직접 제공합니다. 논리 통신
UDP 및 TCP는 컴퓨터 전송 계층에서 중요한 프로토콜이며 UDP는 연결 지향적입니다. TCP/IP 계층의 계층은 16A 포트 번호를 사용하여 포트를 나타냅니다. 포트 번호는 컴퓨터 응용 계층의 각 프로세스와 전송 계층의 상호 작용 사이의 계층 간 인터페이스를 표시하는 것입니다. 서로 다른 네트워크 번호 간의 포트 번호는 관련이 없습니다. 따라서 두 컴퓨터 간의 프로세스가 서로 통신하려면 서로의 IP 주소(상대방 컴퓨터를 찾기 위해)와 포트 번호(순서대로)를 알아야 합니다. 컴퓨터에서 프로세스를 찾으려면) 인터넷 통신은 클라이언트-서버를 사용합니다. 이런 방식으로 클라이언트가 통신 요청을 시작할 때 먼저 상대방 서버의 IP 주소와 포트 번호를 알아야 합니다.
UDP
헤더 필드에는 소스 포트, 대상 포트, 길이, 체크섬을 포함하여 8바이트만 있습니다. 체크섬 계산을 위해 12바이트 의사 헤더가 일시적으로 추가됩니다.
TCPTCP: 사용자 메시지 프로토콜, 연결 지향. 데이터 전송이 완료되면 연결이 해제됩니다. TCP는 브로드캐스트 또는 멀티캐스트 서비스를 제공하지 않습니다.
1. TCP 기능TCP는 연결 지향적이고 안정적인 전달을 제공합니다.
3 TCP 세그먼트 헤더 형식
소스 포트와 대상 포트: 각각 2바이트를 차지하며 소스 포트와 대상 포트를 각각 씁니다.일련 번호: 4바이트, TCP는 바이트 스트림을 지향하며 TCP 연결로 전송됩니다. 바이트 스트림의 각 바이트는 순서대로 번호가 지정됩니다. 전송될 전체 바이트 스트림의 시작 번호는 전송이 설정될 때 설정되어야 합니다.
확인 번호: 수신될 것으로 예상되는 다음 세그먼트의 시퀀스 번호. 예를 들어, B는 A가 보낸 메시지 세그먼트를 올바르게 수신합니다. 시퀀스 번호는 501이고 데이터 길이는 200바이트입니다. 따라서 B는 다음 메시지 세그먼트의 시퀀스 번호가 701일 것으로 예상합니다. B가 보낸 확인 메시지 세그먼트에서 A의 경우, 확인번호는 701입니다.
데이터 오프셋: 메시지 세그먼트 시작 부분부터의 데이터 부분 오프셋을 나타냅니다. 실제로는 헤더의 길이를 나타냅니다.먼저 B는 LISTEN(듣기) 상태로 클라이언트의 연결 요청을 기다리고 있습니다.
A는 B에게 연결 요청 메시지(SYN=1, ACK=0)를 보내고 초기 시퀀스 번호 x를 선택합니다.
B는 연결 요청 메시지를 수신하면 연결 설정에 동의하면 SYN=1, ACK=1로 연결 확인 메시지를 보내고 확인 번호는 x+1이며 초기 시퀀스 번호도 선택합니다. 와이.B의 연결 확인 메시지를 받은 후 A도 B에게 확인 메시지를 보냅니다. 확인 번호는 y+1이고 시퀀스 번호는 x+1입니다.4번 웨이브한 이유
클라이언트가 FIN 연결 해제 메시지를 보낸 후, 서버는 이 메시지를 받고 CLOSE-WAIT 상태에 들어갑니다. 이 상태는 서버가 아직 전송되지 않은 데이터를 전송하기 위한 상태입니다. 전송이 완료된 후 서버는 FIN 연결 해제 메시지를 전송합니다.
TIME_WAIT
클라이언트는 서버로부터 FIN 메시지를 받은 후 이 상태로 진입합니다. 이 때, 클라이언트는 직접 CLOSED 상태로 진입하지 않으며, 타이머에 의해 설정된 2MSL 시간 동안 기다려야 합니다. 이렇게 하는 데는 두 가지 이유가 있습니다:
TCP는 신뢰할 수 있는 전송을 위해 타임아웃 재전송을 사용합니다. 전송된 메시지 세그먼트가 타임아웃 기간 내에 확인을 받지 못하면 메시지 세그먼트가 재전송됩니다. TCP 슬라이딩 창
창은 캐시의 일부이며 바이트 스트림을 임시로 저장하는 데 사용됩니다. 송신자와 수신자는 각각 창을 가지고 있습니다. 수신자는 TCP 세그먼트의 창 필드를 통해 자신의 창 크기를 이 값과 기타 정보에 따라 설정합니다.
송신 창 내의 모든 바이트는 전송이 허용되고, 수신 창 내의 모든 바이트는 수신이 허용됩니다. 송신 창의 왼쪽에 있는 바이트가 전송되고 확인된 경우 왼쪽의 첫 번째 바이트가 전송되지 않을 때까지 송신 창을 오른쪽으로 일정 거리만큼 밀어서 수신 창의 슬라이딩을 비슷하게 확인합니다. 창 왼쪽의 바이트가 전송 및 확인되어 호스트에 전달되면 수신 창을 오른쪽으로 밉니다.
수신 창은 창 내에서 순서대로 도착하는 마지막 바이트만 확인합니다. 예를 들어, 수신 창에 수신된 바이트는 {31, 34, 35}이며 그 중 {31}이 순서대로 도착하고 {34, 35}는 그렇지 않으므로 바이트 31만 인식됩니다. 송신자는 바이트에 대한 승인을 받은 후 이 바이트 이전의 모든 바이트가 수신되었음을 알게 됩니다.
2. TCP 흐름 제어TCP에서의 흐름 제어는 슬라이딩 윈도우를 통해 구현됩니다. 일반적으로 우리는 송신자가 데이터를 최대한 빨리 보내기를 바라지만, 송신자가 데이터를 너무 빨리 보내면 그렇게 됩니다. 결과적으로 수신자는 수락할 시간이 없으므로 송신자의 흐름을 제어해야 합니다. TCP의 흐름 제어는 주로 수신자가 보낸 확인 메시지의 창 필드를 사용하여 수행됩니다. 발신자의 창 크기를 제어하여 발신자의 전송 속도에 영향을 줍니다. 창 필드를 0으로 설정하면 보낸 사람이 데이터를 보낼 수 없습니다.
네트워크가 혼잡하면 패킷이 손실되고 발신자는 계속 재전송하게 되어 네트워크 혼잡이 높아집니다. 따라서 혼잡이 발생하면 송신자의 속도를 조절해야 한다. 이는 흐름 제어와 매우 유사하지만 시작점이 다릅니다. 흐름 제어는 수신자가 제 시간에 수신할 수 있도록 하는 것이고, 혼잡 제어는 전체 네트워크의 혼잡 수준을 줄이는 것입니다.혼잡 제어 조건:
혼잡 제어는 흐름 제어와 다릅니다. 혼잡 제어는 네트워크에 너무 많은 데이터가 주입되는 것을 방지하여 네트워크의 라우터나 링크에 과부하가 걸리지 않도록 하는 글로벌 프로세스입니다. , 모든 호스트, 모든 라우터 및 네트워크 성능 저하와 관련된 모든 요소를 위해 설계되었습니다. 그러나 흐름 제어는 종종 지점 간 트래픽을 제어하며 종단 간 문제입니다.
TCP의 혼잡 주요 제어 알고리즘: 느린 시작, 혼잡 회피, 빠른 재전송, 빠른 복구
송신자는 혼잡 창(cwnd)이라는 상태 변수를 유지해야 합니다. 송신자 창: 혼잡 창은 단지 상태 변수일 뿐이며 실제로 송신자가 보낼 수 있는 데이터의 양을 결정하는 송신자 창입니다.논의의 편의를 위해 다음과 같이 가정합니다.
수신기의 수신 버퍼가 충분히 크므로 흐름 제어가 발생하지 않습니다.
느린 시작 임계값 ssthresh를 설정합니다. cwnd >= ssthresh이면 혼잡 회피가 입력되고 각 라운드마다 cwnd만 1씩 증가합니다.
타임아웃이 발생하면 ssthresh = cwnd / 2로 설정한 뒤 다시 슬로우 스타트를 실행하세요.2. 빠른 재전송 및 빠른 복구
수신 측에서는 메시지 세그먼트가 수신될 때마다 마지막으로 수신된 주문 메시지 세그먼트를 확인해야 합니다. 예를 들어 M1과 M2가 수신되었으며 M4가 수신되면 M2에 대한 승인이 전송되어야 합니다.
발신자 측에서는 3개의 중복된 승인을 받으면 다음 세그먼트가 손실되었음을 알 수 있으며, 이때 빠른 재전송이 수행되고 다음 세그먼트가 즉시 재전송됩니다. 예를 들어, 3개의 M2가 수신되면 M3은 손실되고 M3은 즉시 재전송됩니다.
이 경우 네트워크 정체가 아닌 개별 세그먼트의 손실일 뿐입니다. 따라서 ssthresh = cwnd / 2, cwnd = ssthresh로 설정하여 빠른 복구를 수행합니다. 이때 혼잡 회피가 직접 입력됩니다.
느린 시작과 빠른 회복 속도는 cwnd의 성장률이 아닌 cwnd의 설정 값을 의미합니다. 느린 시작 cwnd는 1로 설정되고 빠른 복구 cwnd는 ssthresh로 설정됩니다.
편집 컴퓨터 네트워크 5판(동영상 공유 학습:웹 프론트엔드 소개)
위 내용은 tcp와 udp는 컴퓨터 네트워크 아키텍처의 어떤 프로토콜에 속합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!