TCP와 UDP는 OSI 표준모델과 TCP/IP 모델의 전송계층 (데이터의 전달을 담당하며 통신 서비스를 제공하는 계층)에서 사용하는 프로토콜이다. 패킷을 한 컴퓨터에서 다른 컴퓨터로 전달해주는 IP 프로토콜을 기반으로 구현, 포트 번호를 이용하여 주소를 지정하는거과 데이터 오류 검사를 위한 체크섬 존채하는 두 가지 공통점이 있지만 정확성 (TCP)을 추구할지 신속성 (UDP)을 추구할지로 구분하여 나뉜다
TCP (Transmission Control Protocol)
전송을 제어하는 규약이며 인터넷상에서 데이터를 메시지의 형태로 보내기 위해 IP와 함께 사용하는 연결 지향적 프로토콜이다. 연결 지향적이란 클라이언트와 서버가 연결된 상태에서 데이터를 주고받는 의미. TCP는 신뢰성을 보장하는 연결형 서비스이며 안정적으로, 순서대로, 에러없이 데이터를 전송한다
TCP 특징
제어 (Flow Control)
- 흐름 제어
- 수신자가 감당할 수 있도록 데이터 처리 속도 조절
- 혼잡 제어.
- 네트워크 내 패킷 수가 넘치게 증가하는 것 방지
연결형 서비스 (Connection-oriented)
- 연결형 (connection-oriented) 서비스로 가상 회선 방식을 제공한다.
- 3-way handshaking으로 연결 설정
- 서로의 통신을 위한 관문(port)을 확인하고 연결하기 위하여 3번의 요청/응답 후에 연결이 되는 것을 말한다.(이 과정에서 가장 많은 시간이 소요되어 UDP방식보다 속도가 느려지는 주요 원인으로 지목
- 목적지와 수신지를 확실히 하여 정확한 전송 보장
- 4-way handshaking으로 연결 해제
신뢰성 보장 (Reliable)
- 높은 신뢰성을 보장한다.
- 패킷을 성공적으로 전송하면 Acknowledgement(ACK) 신호
- 제시간에 도착하지 읺으면 Timeout 발생
- 손실된 패킷을 재전송한다
UDP vs TCP
- UDP보다 속도가 느리다.
- 패킷에 대한 응답을 해야하기 때문에 느리다 (손실시 재전송)
- 순서 보장을 해야해서 느리다
- 흐름제어, 혼잡제어를 해야해서 느리다
데이터의 경계 구분 X
- Byte-Stream Service
- 데이터가 10, 10, 10 왔을 때 TCP는 경계를 구분하지 못해 30으로 한 번에 받거나 25, 5로 받는 등 보낸 것과 다르게 끊어받을 수 있다
데이터의 전송 순서 보장
- 패킷들에 번호 부여하여 재조립
전이중(Full-Duplex), 점대점(Point to Point) 방식
UDP (User Datagram Protocol)
UDP는 사용자 데이터그램 규약으로 데이터를 데이터그램 단위로 처리하며 전송계층의 비연결 지향적 프로토콜이다. 여기서 비연결 지향적이란 TCP와 달리 연결을 위해 할당되는 논리적인 경로가 없으며 데이터를 주고받을 때 연결 절차를 거치지 않고 발신자가 일방적으로 데이터를 발신하는 방식이다
각각의 패킷은 다른 경로로 전송되고, 각각의 패킷은 독립적인 관계를 지니게 된다.
연결 과정이 없기 대문에 TCP보다는 빠른 전송을 할 수 있지만 데이터 전달의 신뢰성은 떨어진다
TCP와는 다르게 UDP는 중간에 패킷이 유실이나 변조가 되어도 재전송을 하지 않는다
UDP 특징
- 데이타 단위
- 데이타를 데이터그램 단위로 처리
- 데이타그램 - 독립적인 관계를 지니는 패킷
- 비연결형 서비스 (Connectionless)
- TCP와 달리 연결 설정이 없다
- 신뢰성X
- 데이터 전송에 대한 보장X
- 패킷 손실 발생 가능
- 보내는 쪽에서 일방적으로 데이터를 전달하는 통신 프로토콜
- 데이터 전송에 대한 보장X
- 빠른 전송속도
- 혼잡제어를 하지 않아 빠르다
- 확인 응답, 재전송 등 신경 안 씀
- 순서를 보장하지 않아 빠르다
- 데이터의 경계 구분
- Datagram Service
- 데이타가 10, 10, 10 왔을 때 UDP는 무조건 10, 10, 10으로 받아야한다
- 데이터의 전송 순서 보장X
- 데이터그램이라는 패킷으로 데이터를 조각내서 전송하지만 패킷 순서나 재조립 등의 서비스는 제공X
속도 느림 빠름 신뢰성 신뢰성 보장 신뢰할 수 없음 연결 형태 연결형 서비스(연결을 성공해야 통신 가능) 비연결형 서비스 (연결 없이 통신 가능) 연속성 연속성X 연속성 O 사용 예시 HTTP, 이메일, 웹 브라우징, 파일 전송 DNS ,게임, 화상 회의, 스트리밍 통신 방식 1:1 (Unicast) 통신 1:n (Broadcast), n:n (multicast) 통신 전송 순서 전송 순서 보장 전송 순서 바뀔 수 있음 - TCP와 UDP는 둘다 전송 계층에서 데이터를 보내기 위해 사용하는 프로토콜
- TCP는 연결형 서비스로 가상 회선 방식을 제공하고, 높은 신뢰성을 보장하고 흐름 제어 및 혼잡 제어 기능을 제공
- UDP는 비연결형 서비스로 데이터그램 방식을 제공하고, 패킷에 순서 부여나 재조립등의 기능을 처리하지 않기 때문에 연속성이 중요한 서비스에 사용
- 출처 : 아래의 사이트들을 보면서 큰 공부 하였습니다
- https://velog.io/@jehjong/개발자-인터뷰-TCP-vs-UDP
- https://coding-factory.tistory.com/614
- https://livlikwav.github.io/study/tcp-and-udp/
'Front-End > Web & 표준 & ETC' 카테고리의 다른 글
[ETC] 웹 이미지 (0) | 2022.02.26 |
---|---|
[Network] 웹 표준과 크로스 브라우징 (0) | 2022.02.26 |
[Network] OSI 7계층 (0) | 2022.02.26 |
[Network] HTTP vs HTTPS (0) | 2022.02.24 |
[Network] TCP / IP 4계층 (0) | 2022.02.24 |