Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Q2) TCP vs UDP (Interview Question in HTTP) #12

Open
yeosong1 opened this issue Oct 15, 2020 · 6 comments
Open

Q2) TCP vs UDP (Interview Question in HTTP) #12

yeosong1 opened this issue Oct 15, 2020 · 6 comments

Comments

@yeosong1
Copy link
Contributor

yeosong1 commented Oct 15, 2020

TCP와 UDP에 대해 설명하고 그 차이점에 대해 말씀해주세요. (엄근진 😶)

@yeosong1
Copy link
Contributor Author

TCP와 UDP는 모두 OSI 7 모형 전송계층에 해당하는 전송 프로토콜입니다.

TCP는 3-way 핸드쉐이크로 커넥션을 만들어 확실히 연결이 보장된 후 통신하며, 데이터의 전송 순서를 보장하기 때문에 전송 신뢰도가 보장되는 대신, UDP에 비해서는 느리게 되는 단점이 있습니다. 대부분의 HTTP 통신, 이메일, 파일 전송 등에 사용됩니다.

UDP는 데이터 전송 순서를 보장하지 않고, 수신 쪽과의 연결 여부 확인 없이 단방향 데이터 전송을 하기 때문에 더 빠른 대신 신뢰도가 보장되지 않는 단점이 있습니다. 데이터 유실에도 큰 문제가 발생하지 않는 동영상 스트리밍 등에 사용됩니다.

@ku-kim
Copy link
Member

ku-kim commented Oct 15, 2020

TCP와 UDP는 인터넷으로 통신할 때 사용되는 프로토콜로 OSI 7 Layer or TCP/IP 4 Layer의 전송계층에 해당된다.

두 프로토콜 모두 IP프로토콜을 통해 얻어진 패킷을 다른 컴퓨터로 전송하는 역할을 하는데
TCP는 3-way handshaking이라는 과정을 통해 두 컴퓨터 사이에 완벽하게 연결을 한 상태에서 데이터를 전송한다. 따라서 그 특징으로 연결이 안정적이며 흐름과 혼잡을 제어할 수 있다.
UDP는 TCP와 다르게 비연결형 프로토콜이라 하는데 별다른 연결과정 없이 데이터를 네트워크에 전송하고 데이터를 받을 컴퓨터는 기다리면서 데이터를 전송 받는다.
TCP는 HTTP, Email 에 사용되며 UDP는 DNS나 실시간 동영상 서비스에 사용된다.

@joey-ful
Copy link
Contributor

TCP/UDP

  • 전송계층(데이터의 전달을 담당하며 통신 서비스를 제공하는 계층)에서 사용하는 프로토콜
    • 데이터를 보내기 위해 사용하는 프로토콜
  • 패킷을 한 컴퓨터에서 다른 컴퓨터로 전달해주는 IP 프로토콜을 기반으로 구현

패킷 (Packet)

인터넷에서 데이터를 보내기 위한 경로배정(라우팅)을 효율적으로 하기 위해 데이터를 여러 개의 조각들로 나누어 전송하며 이 조각을 패킷이라 함

🐳 TCP (Transmission Control Protocol)

TCP는 신뢰성을 보장하는 연결형 서비스
안정적으로, 순서대로, 에러없이 데이터 전송
image

  • TCP/IP

    • 인터넷 환경에서 기본으로 사용
    • 일반적으로 IP와 함께 사용하는 프로토콜
      • IP가 데이터의 배달을 처리
      • TCP는 패킷의 추적 및 관리 (패킷에 번호를 부여하여 패킷의 분실 등 확인)
  • 제어

    • 흐름 제어 (Flow Control)
      • 수신자가 감당할 수 있도록 데이터 처리 속도 조절
    • 혼잡 제어(Congestion Control)
      • 네트워크 내 패킷 수가 넘치게 증가하는 것 방지
  • 연결형 서비스 (Connection-oriented)

    • 3-way handshaking으로 연결 설정
      • 목적지와 수신지를 확실히 하여 정확한 전송 보장
    • 4-way handshaking으로 연결 해제
  • 신뢰성 보장 (Reliable)

    • 패킷을 성공적으로 전송하면 Acknowledgement(ACK) 신호
    • 제시간에 도착하지 않으면 Timeout 발생
    • 손실된 패킷은 재전송
  • UDP보다 느림

    • 패킷에 대한 응답을 해야하기 때문에 느리다 (손실시 재전송)
    • 순서 보장을 해야해서 느리다
    • 흐름제어, 혼잡제어를 해야해서 느리다
  • 데이터의 경계 구분 X

    • Byte-Stream Service
    • 데이터가 10, 10, 10 왔을 때 TCP는 경계를 구분하지 못해 30으로 한 번에 받거나 25, 5로 받는 등 보낸 것과 다르게 끊어받을 수 있다
  • 데이터의 전송 순서 보장

    • 패킷들에 번호 부여하여 재조립

🐳 UDP (User Datagram Protocol)

TCP보다 빠른 속도와 적은 네트워크 부하가 장점
신뢰성보다는 연속성이 중요한 실시간 서비스(streaming)에 자주 사용
image

  • 데이타 단위
    • 데이타를 데이터그램 단위로 처리
    • 데이타그램 - 독립적인 관계를 지니는 패킷
  • 비연결형 서비스 (Connectionless)
    • TCP와 달리 연결 설정이 없다
  • 신뢰성X
    • 데이터 전송에 대한 보장X
      • 패킷 손실 발생 가능
    • 보내는 쪽에서 일방적으로 데이터를 전달하는 통신 프로토콜
  • 빠른 전송속도
    • 혼잡제어를 하지 않아 빠르다
    • 확인 응답, 재전송 등 신경 안 씀
    • 순서를 보장하지 않아 빠르다
  • 데이터의 경계 구분
    • Datagram Service
    • 데이타가 10, 10, 10 왔을 때 UDP는 무조건 10, 10, 10으로 받아야한다
  • 데이터의 전송 순서 보장X
    • 데이터그램이라는 패킷으로 데이터를 조각내서 전송하지만 패킷 순서나 재조립 등의 서비스는 제공X

TCP UDP
속도 느림 빠름
신뢰성 신뢰성 보장 신뢰할 수 없음
연결 형태 연결형 서비스(연결을 성공해야 통신 가능) 비연결형 서비스(연결 없이 통신 가능)
연속성 연속성X 연속성O
사용 예시 HTTP, 이메일, 웹 브라우징, 파일 전송 DNS, 게임, 화상 회의, 스트리밍
통신 방식 1:1 (Unicast) 통신 1:n (Broadcast), n:n (Multicast) 통신
전송 순서 전송 순서 보장 전송 순서 바뀔 수 있음

@ku-kim ku-kim added the HTTP label Oct 15, 2020
@365kim
Copy link
Member

365kim commented Oct 15, 2020

(즉석)
TCP와 UDP 모두 네트워크 계층 중 전송계층에서 사용하는 프로토콜 입니다.
TCP는 3-way handshaking과정을 통해 연결을 설정해서 신뢰도를 확보해서 순서를 보장하는 대신 속도가 느리고,
UDP는 순서를 보장하지 않고 신뢰도가 낮은 데이터 전송을 하는 대신, 단방향 데이터 전송으로 속도가 빠르다는 차이가 있습니다.

(보충)
따라서 TCP는 신뢰도가 필요한 HTTP 통신, 이메일 등에 사용되고,
UDP는 빠른 속도가 중요한 스트리밍 서비스에 사용됩니다.
TCP: Transmission Control Protocol
UDP: User Datagram Protocol

@SeongsangCHO
Copy link
Contributor

TCP, UDP는 OSI 7 계층 중 전송계층에 해당하며 데이터를 전송하기 위해 사용되는 프로토콜입니다.

TCP는 연결형서비스로 데이터 전송 전에 클라이언트, 서버간 3-way-handshake과정을 통해 연결을 수립하고

데이터를 주고 받음으로써 신뢰성을 보장합니다. 수신측의 데이터 처리속도가 송신측 속도보다 느릴경우 둘 간의 속도 차이를 해결하는 흐름제어, 네트워크 내의 패킷양을 제어함으로써 발생하는 오버플로나 손실을 막는 혼잡제어를 제공합니다. 주로 웹 http통신, 이메일, 파일전송에 사용됩니다.

UDP는 비연결형서비스로 신뢰성이 보장되지 않고 연결을 하지 않으므로 TCP보다 속도가 빠릅니다. 흐름,혼잡제어를 지원하지 않고
주로 연속성이 중요한 스트리밍 서비스에 자주 사용됩니다

@hyunjune-lee
Copy link
Contributor

TCP와 UDP는 전송계층에서 사용하는 프로토콜입니다.
여기서 전송계층은 송신자와 수신자를 연결하는 통신서비스를 제공하는 계층으로, 쉽게 말해 데이터의 전달을 담당하는 계층을 말합니다.
TCP는 연결 지향형 프로토콜 3-way handshaking과정을 통해 연결을 설정하고 4-way handshaking을 통해 해제합니다. 이를 통해서 신뢰성 있는 데이터 전송을 할 수 있습니다.
UDP는 비 연결 지향형 프로토콜로 연결을 설정하고 해제하는 과정 없이 데이터그램 방식을 통해 데이터를 전송합니다. 즉,서로 다른 경로로 독립적으로 처리함에도 패킷에 순서를 부여하여 재조립을 하거나 흐름 제어 또는 혼잡 제어와 같은 기능도 처리하지 않기에 TCP보다 속도가 빠르며 네트워크 부하가 적다는 장점이 있지만 신뢰성있는 데이터의 전송을 보장하지는 못합니다. 그렇기 때문에 신뢰성보다는 연속성이 중요한 서비스 예를 들면 실시간 서비스(streaming)에 자주 사용됩니다

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment