[Spring#65] TCP, UDP / HTTP, HTTPS

김한준 Hanjun Kim·2024년 1월 11일
1

내일배움캠프

목록 보기
66/70

TCP/UDP

TCP : 연결 지향적 프로토콜이며 신뢰성을 보장하는 연결형 서비스
연결 지향적 프로토콜은  클라이언트와 서버가 연결된 상태에서 데이터를 주고받는 프로토콜을 의미한다.

  1. 연결 지향 방식 : 패킷 교환 방식을 사용하여(가상 회선 방식이 아님) 신뢰성 있는 데이터 전송

    • 3-way handshaking과정을 통해 연결을 설정하고 4-way handshaking을 통해 해제한다.
    • TCP/IP 프로토콜을 이용해서 통신하는 응용프로그램은 데이터를 주고받기 전에 먼저 연결을 진행한다.
      3-way Handshake는 이 연결 과정을 의미한다.
      3-way Handshake는 간단히 표현하면 다음과 같다.
      #1. Client -> Server : 내 말 들려?
      #2. Server -> Client : 어 잘 들려! 내 말은 들려?
      #3. Client -> Server : 잘 들려!
      
      4-way Handshake는 간단히 표현하면 다음과 같다.
      #1. Client -> Server : 나는 다 보냈어! 이제 끊자!
      #2. Server -> Client : 알겠어! 잠시만~
      #3. Server -> Client : 나도 끊을게!
      #4. Client -> Server : 알겠어!
    • 이 때문에 UDP보다 속도가 느리다.
  2. 흐름 제어 : 수신자와 송신자 간의 데이터 전송 속도를 조절하여 수신자의 버퍼 오버플로우를 방지

  3. 혼잡 제어 : 네트워크 내의 패킷 수가 과도하게 증가하지 않도록 방지

  4. 높은 신뢰성 보장 : 에러 검출 및 재전송 메커니즘을 통해 데이터 손실이나 손상을 최소화하고 신뢰성 있는 통신을 제공

  5. 전이중(Full-Duplex), 점대점(Point to Point) 방식.
    - 전이중(Full-Duplex) : 전송이 양방향으로 동시에 일어날 수 있다.
    - 점대점(Point to Point) : 각 연결이 정확히 2개의 종단점을 가지고 있다.

    UDP : UDP는 비연결형 프로토콜이다.
    연결을 위해 할당되는 논리적인 경로가 없고, 각각의 패킷은 다른 경로로 전송되며, 독립적인 관계를 지닌다.

    1. 비연결형 서비스로 데이터그램 방식을 제공한다.
      데이터의 전송 순서가 바뀔 수 있다.

    2. 데이터 수신 여부를 확인하지 않는다.

      TCP의 3-way handshaking과 같은 과정 X

    3. 신뢰성이 낮다.
      흐름 제어(flow control)가 없어서 제대로 전송되었는지, 오류가 없는지 확인할 수 없다.

    4. TCP보다 속도가 빠르다.

    5. 1:1 & 1:N & N:N 통신이 가능하다.

      UDP는 신뢰성보다는 연속성 있는 전송이 필요할 때 사용하는 프로토콜로 예를 들면, 실시간 서비스(streaming)에 자주 사용된다.

      요약하면
      TCP는 연속성보다 신뢰성 있는 전송이 중요할 때 사용되는 프로토콜이며,
      UDP는 TCP보다 빠르고 네트워크 부하가 적다는 장점이 있지만, 신뢰성 있는 데이터 전송을 보장하지는 않는다.
      그렇기 때문에 신뢰성보다는 연속성이 중요한 실시간 스트리밍과 같은 서비스에 자주 사용된다.

HTTP/HTTPS

HTTP(HyperText Transfer Protocol)와 HTTPS(HyperText Transfer Protocol Secure)는 웹에서 정보를 전송하는 데 사용되는 프로토콜입니다. 이 두 프로토콜 간에는 몇 가지 주요한 차이점이 있습니다.

  • 보안 (Security):

    HTTP: 데이터가 암호화되지 않고 평문으로 전송되기 때문에, 중간에서 데이터를 가로채거나 변조할 수 있습니다. 따라서 보안이 취약하며, 민감한 정보(예: 비밀번호, 신용카드 정보)를 전송하는 경우에는 적절하지 않습니다.
    HTTPS: HTTPS는 SSL(또는 TLS) 프로토콜을 사용하여 데이터를 암호화하고, 이를 통해 보안된 통신을 제공합니다. 따라서 중간에서 데이터를 엿보거나 조작하는 시도를 어렵게 만듭니다.

  • 포트 번호:

    HTTP: 기본적으로 80번 포트를 사용합니다.
    HTTPS: 기본적으로 443번 포트를 사용합니다.

  • 인증서 (SSL/TLS Certificate):

    HTTP: 보안 인증서가 필요하지 않습니다.
    HTTPS: 웹사이트가 안전하다는 것을 보장하기 위해 서버는 SSL/TLS 인증서를 사용해야 합니다. 이는 제3자 기관에 의해 서명된 것이며, 사용자에게 웹사이트의 신뢰성을 보장합니다.

  • 프로토콜의 구조:

    HTTP: 텍스트 기반으로 데이터를 전송합니다.
    HTTPS: HTTP 프로토콜을 기반으로 하며, SSL/TLS 프로토콜을 통해 데이터를 암호화합니다.

  • 사용 목적:

    HTTP: 주로 웹페이지의 텍스트, 이미지, 오디오 등을 전송하는 데 사용됩니다.
    HTTPS: 민감한 정보를 주고받는 온라인 결제, 로그인, 개인 정보 전송 등 보안이 중요한 상황에서 사용됩니다.

profile
개발이 하고싶은 개발지망생

0개의 댓글