TCP와 UDP의 특징
TCP와 UDP는 OSI의 7 계층 중 전송계층에서 사용되는 프로토콜이다.
포트 번호를 이용해 목적지 주소를 지정하고 데이터 오류검사를 위한 체크섬이 존재한다는 공통점이 있다.
체크섬 : 나열된 데이터를 더해서 만든 바이트로 데이터가 손상되었는지 확인할 수 있다.
체크섬 원리 관련 참고 글
TCP(Transmission Control Protocol)
TCP는 연결 지향적 프로토콜로서, 클라이언트와 서버가 연결된 상태에서 데이터를 주고받는 통신 방식이다.(3-way handshake로 연결, 4-way handshake로 연결 해제)
연결된 경로에서 양방향 통신을 하기 때문에 데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 방지, 네트워크 내의 패킷 수가 과도하게 증가하지 않도록 조절할 수 있다.
신뢰성 향상을 위한 연결과정 때문에, UDP보다 속도는 느리고 1:1 통신만 가능하며, 패킷 순서 보장 때문에 중간에 패킷이 유실되면 재전송해야해서 통신 속도가 저하될 수 있다.
UDP(User Datagram Protocol)
UDP는 비연결형 프로토콜이다. (연결 단계 없이 데이터 전송 진행)
패킷의 전송 순서가 바뀔 수 있고 데이터 수신 여부를 확인하지 않아 신뢰성이 낮다.
하지만 속도가 빠르다는 이점이 있어 실시간 스트리밍, DNS(Domain Name System) 등 데이터의 신속한 전송이 중요한 비대화형 애플리케이션에 적합하다.
왜냐하면, 데이터의 순서나 신뢰성이 크게 중요하지 않고 TCP의 연결 설정과 재전송 기능이 실시간 요구사항을 충족하지 못할 수 있기 때문이다.
참고로, 헤더 설정을 추가하면 커스터마이징이 가능하기 때문에 신뢰성을 보장받도록 할 수 있다. HTTP/3가 UDP기반 통신을 적용한 이유중에 하나로 볼 수 있다.
HTTP/3 (웹 상 정보 전달 프로토콜) 는 QUIC(Quick UDP Internet Connection)이라는 프로토콜 기반이다.