[5주차] TCP/IP(흐름제어,

TCP/IP

  • Internet Protocol Suite의 핵심 프로토콜로서 패킷 통신 방식의 인터넷 프로토콜인 IP와 전송 제어 프로토콜인 TCP로 구성되어 있습니다. (Protocol : 원활한 데이터 통신을 위한 통신 프로토콜)
  • IPOSI 7계층 중 3계층(네트워크계층)에 해당하며 한 종점이 다른 종점으로 가고자 할 때 경로와 목적지를 찾는 역할을 한다. (이를 라우팅이라고 합니다.)
  • IP는 패킷 전달을 보장하지 않으며 패킷을 보내고 받는 순서가 다를 수 있습니다.
  • TCPOSI의 7계층 중 4계층(전송계층)에 해당하며 발신자와 수신자 사이의 논리적 연결을 담당하고 안정적인 연결을 유지하는데 도움을 줍니다. 즉, 엔드포인트(사용자) 간의 연결을 설정하고 얼마나 많은 데이터를 보냈는지, 얼마나 받았는지, 제대로 수신되었는지 확인합니다.
  • TCP는 IP 위에서 실행되는 프로토콜이며 데이터가 전송된 순서대로 전달되고 수신되도록 합니다.
  • TCP/IP를 사용한다는 것은 IP 주소 체계를 따르고, IP ​​라우팅을 사용하여 목적지에 도달하고, TCP의 속성을 활용하고 신뢰성을 유지하여 발신자와 수신자 사이에 논리적 연결을 설정하는 것을 의미합니다.


흐름 제어

  • 흐름 제어는 데이터가 전송될 때 송신측과 수신측 사이의 데이터 흐름을 조정하는 기능입니다.
  • TCP 프로토콜에서 사용하는 것으로, 수신측은 수신할 수 있는 데이터의 양을 송신측에 알려주고 송신측은 그에 따라 데이터를 전송합니다.
  • 수신측이 송신측보다 데이터 처리 속도가 빠르면 문제가 없지만 송신측이 빠르면 문제가 있습니다. 수신측의 제한된 저장 용량을 초과하여 도착한 패킷은 유실될 위험이 있으며, 유실될 경우 불필요한 추가 패킷 전송이 발생합니다.
  • 이를 통해 수신 측에서 버퍼 오버플로를 방지하고 데이터 손실을 최소화할 수 있습니다.
  • 즉, 송신측과 수신측 사이의 패킷 수를 조절하는 기능으로 볼 수 있다.
  1. 멈추고 기다려: 전송된 각 패킷에 대한 ACK(Acknowledgement)가 수신되면 다음 패킷을 전송하는 방식입니다. 그러나 패킷이 한 번에 하나씩 전송되기 때문에 비효율적입니다.
  2. 슬라이딩 윈도우: 수신측에서 수신할 수 있는 데이터의 최대량을 알려주기 위해 설정한 윈도우의 크기만큼 세그먼트에 담아 송신측으로 전송하고, 송신측에서는 이를 수신하여 결정한다. 전송할 수 있는 데이터의 양. 윈도우 크기는 수신측에서 송신측으로 승인을 보낼 때 TCP 헤더(윈도우 크기)에 포함됩니다.


혼잡 제어

  • 이 기능은 과도한 데이터 전송 속도로 인해 발생할 수 있는 혼잡을 피하기 위해 사용됩니다.
  • TCP 프로토콜에서 사용되며 발신자와 네트워크 간의 혼잡을 감지하여 전송 속도를 조정합니다.
  • TCP는 데이터를 일정한 크기의 세그먼트로 나누어 전송하고 혼잡 제어는 세그먼트의 전송 속도를 조절하여 네트워크 혼잡을 방지합니다.
  • 즉, 네트워크의 패킷 수를 조절하여 네트워크 오버플로를 방지하는 기능입니다.
  1. AIMD(가산증가/멀티케이브감소)
  2. 느린 시작
  3. 빠른 재전송
  4. 빠른 회복


3방향 핸드셰이크

  • TCP를 통한 모든 통신은 3방향 핸드셰이크를 통해 시작되어야 합니다.
  • 데이터를 전송하기 전에 TCP를 사용하는 송신자와 수신자는 서로 통신이 가능한지 묻고 다음과 같은 정보를 확인합니다. B. 동시에 받을 수 있는 금액.
  • 이를 통해 양측이 데이터를 송수신할 준비가 되었으며 실제 데이터 전송이 시작되기 전에 한쪽이 다른 쪽이 준비되었음을 알 수 있습니다.
  • 양쪽이 다른 쪽의 초기 시퀀스 번호를 얻을 수 있습니다.

3방향 핸드셰이크는 TCP 프로토콜을 사용하여 컴퓨터 간에 연결을 설정합니다. 이 과정은 TCP/IP 프로토콜에서 가장 기본적인 연결 설정 방법으로 다음 세 단계로 구성됩니다.

  1. SYN(동기화): 클라이언트는 서버에 연결을 요청하는 메시지를 보내고 SYN 플래그를 설정합니다. 이를 통해 클라이언트는 서버에서 연결을 요청할 수 있으며 서버는 클라이언트의 요청을 수신했음을 확인합니다.
  2. 동기화 승인(SYN-ACK): 클라이언트의 요청을 받은 후 서버는 연결을 수락할 준비가 되었음을 알리는 메시지를 보냅니다. 이 시점에서 SYN 및 ACK 플래그를 모두 설정하여 클라이언트가 연결을 수락하는지 확인합니다.
  3. 승인(ACK): 클라이언트는 서버로부터 응답 메시지를 받은 후 연결이 수락되었다는 메시지를 보냅니다. 이 시점에서 서버가 클라이언트의 연결 요청에 응답했음을 확인하기 위해 ACK 플래그가 설정됩니다.

이 3방향 핸드셰이크 프로세스를 거친 후 클라이언트와 서버는 안정적인 연결을 설정하고 데이터 전송을 시작할 수 있습니다. 연결 설정 및 응답에 대한 정보는 TCP가 안정적이고 신뢰할 수 있는 데이터 전송을 보장하는 플래그를 통해 교환됩니다.


4방향 핸드셰이크

  • 3-way 핸드셰이크가 TCP 연결을 초기화하는 데 사용되는 경우 4-way 핸드셰이크는 세션을 종료하기 위한 연결 해제 작업입니다.
  • 여기서 우리는 세션을 종료할 때 사용되는 FIN 플래그를 사용하고 있습니다.

4방향 핸드셰이크는 TCP 프로토콜을 사용하는 컴퓨터 간의 연결을 종료합니다. 이는 TCP/IP 프로토콜의 기본 연결 해제 방법이며 다음 네 단계로 구성됩니다.

  1. VIN(종료): 클라이언트는 서버에 연결을 종료하라는 메시지를 보냅니다. 이 시점에서 FIN 플래그를 설정하면 클라이언트에게 연결을 종료할 것임을 알립니다.
  2. 승인(ACK): 클라이언트의 연결 종료 요청을 받은 서버는 요청을 수락했다는 메시지를 보냅니다. 이때 클라이언트가 보낸 FIN 메시지가 수신되었음을 나타내기 위해 ACK 플래그가 설정됩니다.
  3. VIN(종료): 서버는 클라이언트에게 연결을 종료하라는 메시지를 보냅니다. 이 시점에서 FIN 플래그를 설정함으로써 서버는 연결을 종료할 것임을 알립니다.
  4. 승인(ACK): 클라이언트는 서버의 연결 종료 요청을 받은 후 요청을 수락했다는 메시지를 보냅니다. 이때 ACK 플래그는 서버가 보낸 FIN 메시지가 수신되었음을 나타내기 위해 설정됩니다.

이 4방향 핸드셰이크 과정을 거친 후 클라이언트와 서버는 안전하게 연결을 종료할 수 있습니다. 이 과정에서 클라이언트와 서버는 연결 종료에 대한 정보를 교환하고 TCP는 이 정보를 사용하여 안정적인 연결 종료를 보장합니다.


TCP(전송 제어 프로토콜)

  • 메시지 형식으로 인터넷을 통해 데이터를 전송하기 위해 IP와 함께 사용되는 프로토콜입니다.
  • TCP는 연결 지향 프로토콜입니다. 안정적인 데이터 전송을 위해 설계
  • TCP는 3방향 핸드셰이크를 통해 안정적인 연결을 설정하고 데이터 전송 중 오류를 감지하고 수정합니다. 이를 위해 패킷의 순서를 관리하고 재전송 및 흐름 제어를 수행하여 안정적이고 신뢰할 수 있는 프로토콜 역할을 한다.
  • 주로 웹, 이메일 및 파일 전송과 같은 응용 프로그램에서 사용됩니다.

UDP(사용자 데이터그램 프로토콜)

  • 비연결형 프로토콜로서 데이터 전송 중에 오류를 감지하거나 수정하지 않습니다.
  • 논리적 경로가 지정되지 않고 각 패킷이 서로 다른 경로를 통해 전송되며 각 패킷에는 독립적인 경로가 있습니다. 즉, 서로 다른 경로에서 독립적으로 데이터를 처리하는 프로토콜을 의미합니다.
  • 패킷은 서로 다른 경로를 통해 독립적으로 처리되지만 패킷 순서에 따라 재조립되지 않거나 흐름 제어 또는 혼잡 제어가 수행되지 않습니다. 고속 및 낮은 네트워크 부하장점이 있다 데이터 전송의 신뢰성이 낮습니다.
  • 주로 연속성이 중요한 실시간 애플리케이션(비디오 스트리밍, 온라인 게임 등)에 사용됩니다.

TCP 대 UDP

TCP(Transmission Control Protocol) 및 UDP(User Datagram Protocol)는 모두 데이터 전송에 사용되는 프로토콜인 IP Suite(Internet Protocol Suite)의 일부입니다. 둘의 차이점은 다음과 같습니다.

  1. 연결지향 TCP는 3방향 핸드셰이크를 통해 안정적인 연결을 설정하고 데이터 전송 중 오류를 감지하고 복구하는 연결지향 프로토콜입니다. 반면 UDP는 비연결형 프로토콜이므로 연결 설정이 필요하지 않으며 오류 감지 및 복구 기능이 없습니다.
  2. 신뢰성 TCP는 데이터 전송 중 오류를 감지하고 복구하는 기능을 가지고 있기 때문에 데이터 전송 신뢰성이 높다. UDP는 데이터 전송의 확인 및 복구가 없기 때문에 신뢰할 수 없습니다.
  3. 흐름 제어 및 혼잡 제어 TCP에는 흐름 제어 및 혼잡 제어를 통해 데이터 전송 효율성을 높이는 기능이 있습니다. 반면 UDP에는 이 기능이 없으므로 네트워크 정체 시 데이터 손실이 발생할 수 있습니다.
  4. 전송 속도 UDP는 TCP보다 전송 속도가 빠릅니다. 이는 흐름 제어 및 혼잡 제어와 같은 기능으로 인해 TCP가 느리게 전송될 수 있음을 의미합니다.

따라서 TCP와 UDP는 각각 장단점이 있으며 사용하는 응용의 특성에 따라 선택적으로 사용한다. TCP는 웹, 이메일, 파일 전송과 같은 애플리케이션에 사용되는 반면 UDP는 일반적으로 실시간 애플리케이션(예: 비디오 스트리밍, 온라인 게임 등)에 사용됩니다.


1. TCP와 UDP의 차이점 설명

TCP는 연결 지향적이고 매우 안정적이며 오류 감지 및 재전송을 제공합니다. UDP는 연결이 없고 전송 속도가 빠르고 패킷 오버헤드가 적지만 안정적인 데이터 전송을 보장하지는 않습니다.

1. 연결 지향 vs. 비연결

  • TCP는 연결이 설정된 후 3방향 핸드셰이크를 사용하여 데이터를 전송하는 연결 지향 프로토콜입니다. 오류 검사 및 혼잡 제어와 같은 다양한 기능은 안정적인 데이터 전송을 보장하기 위해 연결 설정 중에 수행됩니다.
  • UDP는 연결 없는 프로토콜입니다. 즉, 연결을 설정하지 않고 데이터를 전송합니다. 이로 인해 전송 속도가 빨라지고 패킷 오버헤드가 낮아지지만 안정적인 데이터 전송이 보장되지는 않습니다.

2. 신뢰성

  • TCP는 오류 감지 및 재전송 기능을 수행하여 데이터 전송 신뢰성을 보장합니다. 이로 인해 전송 속도가 느려질 수 있지만 데이터 손실은 최소화됩니다.
  • UDP는 신뢰성 검사나 재전송을 제공하지 않기 때문에 데이터 손실이나 이중 전송과 같은 문제가 발생할 수 있습니다.

3. 패킷 크기 제한

  • TCP는 패킷 크기에 제한이 없으며 대용량 파일이나 데이터를 전송하는 데 적합합니다.
  • UDP는 제한된 패킷 크기를 가지며 적은 양의 데이터를 빠르게 전송하는 데 적합합니다.

4속

  • TCP는 연결 설정 및 오류 확인과 같은 다양한 기능을 수행하기 때문에 UDP보다 느립니다.
  • UDP는 최소한의 데이터 전송 오버헤드가 있기 때문에 TCP보다 빠릅니다.

5. 사용

  • TCP는 데이터 신뢰성이 중요한 애플리케이션에 적합합니다. 예를 들어 파일 전송, 이메일, 웹 브라우저 등이 있습니다.
  • UDP는 실시간이 중요한 애플리케이션에 적합합니다. 예를 들어 스트리밍 서비스, 온라인 게임 등

이러한 차이 때문에 용도와 상황에 따라 TCP와 UDP를 선택하여 사용해야 합니다.

2. IP 주소와 포트 번호의 차이점

IP 주소는 네트워크에서 컴퓨터를 식별하는 데 사용되는 숫자로 고유한 주소를 가집니다.

포트 번호는 컴퓨터 내에서 프로세스를 식별하는 데 사용되는 번호입니다. 범위는 0에서 65535까지이며 특정 프로세스에 할당됩니다.