[네트워크] TCP와 UDP
01. TCP와 UDP
- 전송 계층(Transport Layer) 에서 사용하는 프로토콜
- 데이터를 보내기 위해 사용하는 프로토콜
02.TCP
- 연결형 서비스를 지원하는 프로토콜
- 3-Way handshake 과정을 통해 연결 수립 4-Way handshake 과정을 통해 연결 해제
- 높은 보안, 신뢰성
- UDP보다 느린 속도
💡 연속성보다는 신뢰성 있는 전송이 중요할 때에 사용한다.
02-1. TCP 서버의 특징
- 서버 소켓은 ‘연결’을 담당
- 서버와 클라이언트는 1:1로 연결
- 스트림 전송으로 전송 데이터의 크기가 무제한
- 패킷에 대한 응답을 해야하기 때문에 성능이 낮다. (시간 지연, CPU 소모)
- Streaming 서비스에 불리하다. (손실된 경우 재전송 요청을 하기 때문.)
- 전이중(full-duplex), 점대점(point to point) 방식
전이중(full-duplex) : 전송이 양방향으로 동시에 일어날 수 있음.
> 점대점(point-to-point) : 각 연결이 정확히 2개의 종단점을 가지고 있음.
03. UDP
- UDP(User Datagram Protocol, 사용자 데이터그램 프로토콜)
- 비연결형 프로토콜
- TCP와 다르게 IP 데이터그램을 캡슐화 하지 않고 보내는 방법 연결 설정을 하지 않고 보내는 방법을 지원
- UDP 헤더의 CheckSum 필드를 통해 최소한의 오류만 검출
- 신뢰성이 낮다.
- 속도가 빠르다.
💡 연결을 설정하고 헤제하는 과정이 존재하지 않다. 신뢰성 보다는 연속성이 중요한 서비스에 자주 사용된다.
03-1. UDP 서버 특징
- 서버 소캣과 클라이언트 소캣의 구분이 존재하지 않는다. (connect 함수가 필요하지 않기 때문)
- 소캣 대신 IP를 기반으로 데이터 전송
- 서버와 클라이언트는 1:1, 1:N, N:M 등으로 연결 가능
- 데이터그램(메세지) 단위로 전송 크기는 65535byte로 크기가 초과되면 잘라서 보낸다.
- 흐름제어(flow control)이 존재하지 않아 패킷이 잘 전송되었는지, 오류가 없는지 확인 불가
04. TCP와 UDP 비교
참고
https://velog.io/@hidaehyunlee/TCP-와-UDP-의-차이
https://mangkyu.tistory.com/15
https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Network#tcp와-udp의-비교
댓글남기기