사실 TCP/UDP의 차이를 명료하게 정리하고자 글을 다시 쓴다.
* TCP(Transmission Control Protocol)?
이름에서도 알 수 있듯 전송 제어 프로토콜이다. 인터넷을 사용하는 모든 통신의 기본적인 프로토콜이며 신뢰성 있는 데이터 전송을 보장한다. 연결 지향형(connection-oriented) 서비스를 제공한다. 전송 계층(transport layer)에서 동작한다. 다른 타입의 컴퓨터 간에 연결을 설정하는데 도움이 된다. 운영 체제와는 상관 없이 독립적으로 작동하며 많은 라우팅 프로토콜을 지원한다.
- 동작
3 way handshake 방식을 통해 established 되며 연결이 설정된 뒤 데이터 전송이 시작된다.
- 특징
- 전송(수신)확인
- 재전송
- 네트워크가 혼잡할 경우 지연할 수 있음
- 에러 탐지가 용이함
- TCP의 단점
- 브로드캐스트 또는 멀티 캐스트 전송에는 사용할 수 없다.
- 느리다...
* UDP(User Datagram Protocol)?
데이터그램 지향 프로토콜이다. 브로드 캐스트 및 멀티 캐스트 유형의 네트워크 전송에 사용된다. 비연결형(connection-less) 서비스를 제공한다. 역시 전송계층에서 동작한다. 네트워크를 통한 전송 및 멀티 캐스팅 전송을 위한 패킷 브로트 캐스트와 호환된다. 연결 기반 통신 모델이 아니어도 통신할 수 있다.-> 빠른 시작 가능 (3 WAY HANDSHAKE 과정 안 거쳐도 되니까)
- 동작
데이터그램 간의 전후관계를 고려한 전송을 하지 않는다. 따라서 hand shaking 방식을 사용하지 않는다. 그 얘기는 수신 확인도 하지 않는다는 이야기이다. 또한 에러 체크와 오류를 바로잡는걸 중요하게 생각하지 않기 때문에 오류 제어 기능도 없다.
- 특징
- 지연이 적다
- 많은 양을 보낼 수 있다.
- 데이터 손실의 가능성이 있다.
- 소구모 트랜잭션이 가능하다.
- UDP의 단점
- UDP는 오류가 발생한 패킷을 버릴 뿐 그 오류를 고치지 않기 때문에 패킷이 두번 전달 되거나 전달되지 않는 경우도 생길 수 있다. 또한 순서대로 전송되지 않을 수도 있다.
- 라우터는 충돌하더라도 다시 전송하지 않는다.
- 네트워크 혼잡 제어 및 흐름 제어가 없어서 그런거 구현하려면 사용자가 알아서 해야한다.
* TCP와 UDP의 차이점
<주요 차이점>
- TCP는 연결 지향 프로토콜인 반면 UDP는 비연결형 서비스를 지원하는 프로토콜이다.
- TCP 속도는 느리고 UDP 속도는 빠르다.
- TCP는 SYN, SYN-ACK, ACK와 같은 핸드셰이크 프로토콜을 사용하는 반면, UDP는 사용하지 않는다.
- TCP는 오류 검사, 복구를 하지만 UDP는 오류 검사를 하나 잘못된 패킷을 삭제한다.
- TCP는 상대적으로 무겁고 UDP는 가볍다.
- TCP에는 acknowledgment (승인) 세그먼트가 있지만 UDP에는 없다.
'CS > network' 카테고리의 다른 글
Load Balancing(로드 밸런싱) (0) | 2021.05.09 |
---|---|
URI와 URL, URN (0) | 2021.05.08 |
TCP 3 way handshake (0) | 2021.05.02 |
IPv6 (Internet Protocol version 6) (0) | 2021.04.25 |
반 이중(Half Duplex) 방식 vs 전 이중(Full Duplex) 방식 (0) | 2021.04.23 |