728x90
반응형
SMALL
TCP와 UDP의 공통점과 차이점을 설명해보세요.
TCP(Transmission Control Protocol)와 UDP(User Datagram Protocol)는 인터넷 프로토콜 스택의 전송 계층에 있는 두 가지 주요 프로토콜입니다. 이 두 프로토콜은 데이터를 네트워크를 통해 전송하는 방법을 정의합니다.
TCP (Transmission Control Protocol)
- 연결형 (connnection-oriented) 프로토콜이며, 연결이 성공해야 통신이 가능하다.
- 데이터 경계를 구분하지 않는다. 바이트 스트림(byte-stream) 서비스
- 신뢰성 있는 데이터를 전송한다. 데이터의 순서 유지를 위해 각 바이트마다 번호를 부여한다. 데이터를 재전송한다.
- 1 대 1 통신(unicast)
- 전송속도가 느리다.
- 패킷관리가 필요없다.
특징
- 가상 회선 연결 방식, 연결형 서비스를 제공
- 높은 신뢰성(Sequence Number, Ack Number를 통한 신뢰성 보장)
- 연결의 설정(3-way handshaking)과 해제(4-way handshaking)
- 데이터 흐름 제어(수신자 버퍼 오버플로우 방지) 및 혼잡 제어(네트워크 내 패킷 수가 과도하게 증가하는 현상 방지)
- 전이중(Full-Duplex), 점대점(Point to Point) 서비스
UDP (User Datagram Protocol)
- 비연결형 (connectionless) 프로토콜이며, 연결 없이 통신이 가능하다.
- 데이터 경계를 구분한다. 데이터그램(datagram) 서비스
- 비신뢰적인 데이터를 전송한다. 데이터 재전송과 데이터 순서 유지를 위한 작업을 하지 않는다.
- 1 대 1 통신(unicast), 1 대 다 통신(broadcast), 다 대 다 통신(multicast)
- 전송속도가 빠르다.
- 패킷관리가 필요하다.
특징
- 비연결형(port만 확인하여 소켓을 식별하고 송수신)
- 패킷 오버헤드가 적어 네트워크 부하 감소
- 비신뢰성
- 오류검출(헤더에 오류 검출 필드를 포함하여 무결성 검사)
- TCP의 handshaking 같은 연결 설정이 없다
- DNS, NFS, SNMP, RIP 등 사용
공통점:
- 데이터 전송: 둘 다 데이터를 패킷으로 분할하여 인터넷을 통해 전송하는 역할을 합니다.
- IP와의 결합: TCP와 UDP는 모두 IP(Internet Protocol)와 결합하여 데이터를 목적지로 전송합니다. 이 때문에 종종 TCP/IP, UDP/IP로 표기됩니다.
- 포트 번호 사용: 둘 다 포트 번호를 사용하여 송신자와 수신자의 애플리케이션을 식별합니다.
차이점:
- 연결 유무: TCP는 연결형 프로토콜로, 데이터 전송 전에 송수신자 간에 연결을 설정하고 데이터 전송 후 연결을 종료합니다. 반면, UDP는 연결이 없는 프로토콜로, 데이터를 전송하기 전에 명시적인 연결 설정 없이 데이터를 전송합니다.
- 데이터의 신뢰성: TCP는 신뢰성 있는 데이터 전송을 보장합니다. 패킷이 손실되거나 순서가 바뀌면 TCP는 재전송을 요청하고 순서를 재조정합니다. 반면, UDP는 이러한 메커니즘이 없으며, 패킷의 손실이나 순서 변경에 대해 별도로 처리하지 않습니다. 따라서 UDP는 TCP에 비해 빠르지만, 신뢰성은 낮습니다.
- 흐름 제어와 혼잡 제어: TCP는 네트워크의 혼잡 상황을 고려한 흐름 제어와 혼잡 제어 메커니즘이 있습니다. 이는 네트워크의 효율성과 안정성을 높입니다. 반면, UDP는 이러한 기능이 없습니다.
어떤 프로토콜을 사용할지는 애플리케이션의 요구 사항에 따라 달라집니다. 예를 들어, 신뢰성이 중요한 이메일이나 웹 서비스는 TCP를, 실시간 서비스나 스트리밍 같이 속도가 중요한 경우는 UDP를 사용하는 것이 일반적입니다.
728x90
반응형
LIST
'일상 > 스터디' 카테고리의 다른 글
7일차 과제 - Stack, Queue, Array, Linked List 자료구조와 차이점 (0) | 2023.05.16 |
---|---|
7일차 과제 - 웹 서버와 WAS의 차이는? (0) | 2023.05.16 |
6일차 과제 - 트랜잭션이 무엇인지 설명해 주세요. (0) | 2023.05.15 |
5일차 과제 - @SpringBootTest와 @WebMvcTest의 차이점 (0) | 2023.05.13 |
5일차 과제 - Rest Client (0) | 2023.05.12 |