TCP vs. UDP
업데이트:
TCP와 UDP
TCP와 UDP는 OSI 모형의 4번째 계층인 전송 계층(Transport Layer)에서 사용되는 프로토콜로 데이터를 보내기 위해 사용한다.
TCP, UDP 미리보기
🗣️ 데이터를 누락 없이, 확실히 주고 받고 싶어! — TCP
🗣️ 다 필요 없고 데이터 전송 속도가 중요해! — UDP
용어 정리
TCP와 UDP에 대해 알아보기 전에 용어를 먼저 정리해보자. 모르는 용어가 너무 많았다..
💡 연결 지향형 프로토콜
: 클라이언트와 서버가 연결된 상태에서 데이터를 주고 받는 프로토콜
💡 비연결형 프로토콜
: 전송 전에 미리 연결을 설정하지 않고 발신자가 일방적으로 데이터를 전달하는 프로토콜
💡 흐름 제어
: 송신과 수신의 데이터 처리 속도 차이를 조절해주는 것
💡 혼잡 제어
: 네트워크 내의 패킷 수가 넘치게 증가하지 않도록 방지하는 것
💡 패킷
: 인터넷 내에서 데이터를 주고받을 때 라우팅을 효율적으로 하기 위해 나눈 데이터 조각
💡 전이중 전송방식 Full Duplex
: 데이터를 항상 양방향으로 동시에 전송 가능
💡 점대점 방식 Point to Point
: 양 노드 또는 네트워크가 1 : 1로 연결된 구조
Transmission Control Protocol, TCP
TCP(전송 제어 프로토콜)는 연결 지향형 프로토콜로 신뢰성을 보장한다. 일반적으로 IP와 함께 사용되며 IP는 데이터 전송의 처리를, TCP는 패킷 추적 및 관리를 담당한다.
특징
- 전송되는 데이터의 신뢰성 보장 (흐름 제어, 혼잡 제어, 오류 제어)
- 가상 회선을 만들어 신뢰성을 보장
- 데이터의 전송 순서를 보장 (각 바이트마다 번호 부여)
- 데이터의 경계를 구분하지 않음 (Byte Stream 서비스)
- 전이중 (Full Duplex), Point to Point 서비스
- 1 : 1 통신만 가능
- UDP 보다 상대적으로 데이터 전송 속도가 느림
사용
- 서버 연결
- 이메일 전송
- 파일 전송
작동
1. 연결 생성 (3-way handshaking 사용)
SYN : 클라이언트가 서버에게 SYN 메시지 전송
SYN-ACK : 서버가 클라이언트에게 SYN-ACK 메시지로 응답
ACK : 클라이언트가 서버에게 ACK 메시지 전송
정해진 시간이 지났거나 중복 ACK가 도착하면 재전송 시도
2
. 자료 전송
3
. 연결 종료 (4-way handshaking 사용)
TCP 세그먼트 구조
IP Datagram 안에 TCP 세그먼트가 캡슐화 되어있다. 세그먼트는 헤더와 데이터 섹션으로 구성되며 헤더는 10개의 필수 필드 및 옵션 확장 필드들을 포함한다. 몇 개만 알아보자.
Checksum
: 헤더 및 데이터의 에러 확인
Sequence number
: 순서 번호로 순서가 어긋나지 않도록 함
Acknowledgement number
: 확인 응답 번호로 실제 수신 여부 확인 및 그 다음 순서를 지시, 데이터에 대한 응답 포함 X
User Datagram Protocol, UDP
UDP(사용자 데이터그램 프로토콜)은 비연결형 프로토콜로 데이터를 데이터그램 단위로 처리한다. TCP보다 빠른 전송이 가능하지만 데이터 전달의 신뢰성은 떨어진다.
특징
- 신뢰성 없는 데이터 전송 (데이터 재전송과 데이터 순서 유지를 위한 작업을 하지 않음)
- 연결 없이 통신 가능
- 패킷 오버헤드가 적어 네트워크 부하 감소
- 데이터의 경계 구분 (Datagram 서비스)
- 패킷 관리 필요
- Checksum 필드로 최소한의 오류만 검출
- TCP 보다 상대적으로 데이터 전송 속도가 빠름
사용
- 주로 실시간 서비스
- 도메인 이름 서비스 DNS
- 음성 인터넷 프로토콜 VoIP
- 온라인 게임
작동
TCP vs. UDP
- | TCP | UDP |
---|---|---|
연결 방식 | 연결형 서비스 | 비연결형 서비스 |
패킷 교환 방식 | 가상 회선 방식 (데이터 경계 구분 X) | 데이터그램 방식 (데이터 경계 구분 O) |
전송 순서 보장 | O | X |
수신 여부 확인 | O | X |
통신 방식 | 일대일 통신 | 일대일, 일대다, 다대다(Multicast) 통신 |
신뢰성 | 높음 (데이터 재전송 O) | 낮음 (데이터 재전송 X) |
속도 | 느림 | 빠름 |
Notice: 이 게시물은 coding-factory.tistory.com, mangkyu.tistory.com 사이트를 참고하였습니다.
댓글남기기