이제 네트워킹도 조금씩 정리해보려고합니다!
둘 다 전송계층에서 데이터를 보내기 위해 사용하는 프로토콜이다
전송계층
: 송신자와 수신자를 연결하는 통신서비스를 제공하는 계층으로, 데이터 전달을 담당한다.
각각을 자세히 설명하기 보다는 둘을 비교하는데 초점을 맞춰 설명을 진행하겠습니다~
TCP
Transmission Control Protocol
: 인터넷 상에서 데이터를 메세지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜
(IP: 데이터의 배달을 처리 / TCP: 패킷을 추적 및 관리)
TCP 특징
- 연결형 서비스
3-way handshaking 과정을 통해 연결을 설정하고 4-way handshaking 과정을 통해 연결을 해제 (다음 글에서 핸드셰이킹에 대해 자세히 다룰 예정입니다)
연결형 서비스 a.k.a. 가상 회선 방식
: 패킷을 전부 같은 경로를 통해 전송하는 방식으로 가상 번호를 기반으로 가상 회선을 구현. 즉, 논리적으로 경로를 설정하는 방식
- Stream oriented
IP datagram으로 전송 시 큰 데이터가 여러개의 segment로 나누어지긴 하지만 이를 다시 재조립하기 때문에 stream처럼 보인다! (UDP는 하지 않는 segmentation 과정 덕분에 가능)
- 흐름 제어 및 혼잡 제어를 제공
흐름 제어: 수신자의 오버플로우를 방지하기 위해 데이터처리 속도를 조절
혼잡 제어: 네트워크 내 패킷 수 조절
- 높은 신뢰성을 보장
#ACK #타임아웃 #재전송
세그먼트에 시퀀스를 부여해 세그먼트가 정상적으로(else-> get lost, are damaged, duplicated or received out of their correct order) 전달되었는지 확인함
- 연결을 맺고 끊는 해제하는 과정 때문에 UDP 보다 속도가 느림
- 전이중(Full-Duplex), 점대점(Point to Point) 방식
전송이 양방향으로 동시에 일어날 수 있고 각 연결의 종단점은 2개. 따라서 일 대 다, 다 대 다 통신이 불가능
즉, TCP는 연속성보다 신뢰성 있는 전송이 중요할 때 사용하는 프로토콜이다 !
UDP
User Datagram Protocol
: 데이터를 데이터그램 단위로 처리하는 프로토콜
데이터그램
: 독립적인 관계를 지니는 패킷
UDP 특징
- 비연결형 서비스
즉, 연결을 위해 할당되는 노리적인 경로가 없음 == 연결 수립을 위한 신호 절차X
- Message oriented
- UDP 헤더의 Checksum 필드를 통해 최소한의 오류만 검출
- 낮은 신뢰성
- TCP보다 빠른 속도 (패킷에 순서를 부여해 재조립하는 과정, 혼잡/흐름 제어가 없기 때문)
즉, UDP는 신뢰성보다는 연속성이 중요한 서비스에 적합하다 !