728x90
TCP(Tansmission Control Protocol)와 UDP(User Datagram Protocol)는 둘 다 네트워크 통신의 전송 계층에서 사용되는 프로토콜이다. 각각의 프로토콜은 서로 다른 방식으로 데이터를 전송하고 통신을 관리한다.
TCP (Transmission Control Protocol)
인터넷을 통해 디바이스에서 웹 서버로 데이터를 전송하는 네트워크 프로토콜
TCP/IP 프로토콜이라고 불리기도 한다.
- 연결 지향적 프로토콜: 통신을 하기 위해 먼저 연결을 설정한 후 데이터를 전송한다.
- 연결 지향 방식: 논리적 경로를 배정한다.
- 3-way handshaking과정을 통해 연결을 설정한다.
- 순서 보장: 패킷 교환 방식을 사용하고 데이터의 전송 순서가 보장되어 데이터가 수신측에 도착하는 순서대로 재조립된다.
- 신뢰성 높음: 데이터의 손실이나 손상을 감지하고, 필요하면 재전송을 요청하여 신뢰성을 보장한다.
- A,B,C 라는 패킷을 순차적으로 전송한다 했을 때, 목적지에서 손실을 감지하기 위해 각각의 패킷에 번호를 부여하여 패킷 분실 확인 후 재전송을 요청하고 목적지에서 재조립을 할 수 있게한다.
- 크기 제한 없음: 전송되는 데이터의 크기에 제한이 없다.
- 큰 데이터도 조각 내어 전송하고 조각을 재조립하여 원본 데이터로 복구한다.
- 속도 느림: UDP보다 속도가 느리다.
- 연결 해제 과정: 통신을 종료하기 위해 연결 해제 과정(4-way handshaking)이 필요하다.
UDP (User Datagram Protocol)
데이터를 데이터그램 단위로 처리하는 프로토콜
- 비연결 지향적 프로토콜: 데이터를 전송하기 위해 사전에 연결 설정 과정이 필요하지 않다.
- 비연결 지향적 방식 -> 논리적인 경로가 없다 -> 각각의 패킷은 다른 경로로 전송되며 독립적인 관계를 지낸다.
- 순서 보장 안 됨:데이터의 전송 순서가 보장되지 않는다.
- 신뢰성 낮음: 데이터를 전송할 때 UDP헤더의 CheckSum 필드로 최소한의 오류 검사만을 검출하고, 데이터의 손실이나 손상을 감지하고 복구하지는 않는다.
- UDP는 일부 패킷이 누락되더라도 데이터를 전송하므로 패킷 손실로 인해 전체 전송이 중단되지 않는다.
- 크기: 65535바이트가 초과하면 잘라서 보낸다.
- 속도 빠름: TCP보다 속도가 빠르고 오버헤드가 적다.
- 일반적으로 실시간 스트리밍, 온라인 게임등에서 사용된다.
TCP는 신뢰성 있는 데이터 전송이 필요한 애플리케이션에 적합하며,
UDP는 실시간 통신이 중요하거나 오버헤드를 최소화해야 하는 경우에 적합하다.
따라서 애플리케이션의 요구사항에 따라 적절한 프로토콜을 선택해야 한다.
728x90
'knowledge > computer science' 카테고리의 다른 글
프록시 서버: 포워드 프록시와 리버스 프록시 (0) | 2024.02.14 |
---|---|
[네트워크] 쿠키와 세션 (1) | 2024.02.13 |
[DB] 여러 트랜잭션이 경쟁하면 생기는 문제 (0) | 2024.02.01 |
[OS][Java] 인터럽트(Interrupt) interrupt() 함수 사용하기 (0) | 2024.01.29 |
[OS][Java] 쓰레드(Thread) (1) | 2024.01.23 |