개발지식 먹는 하마 님의 블로그
TCP와 UDP 본문
인터넷상에서는 데이터를 안전하게 전달하기 위한 규칙이 있다.
이를 전송 계층 프로토콜이라고 한다.
대표적인 전송 계층 프로토콜에는 TCP와 UDP가 있다.
두 방법의 가장 큰 차이는 신뢰성을 고려하는 지의 여부이다.
프로토콜 | TCP | UDP |
신뢰성 고려 | 3 Way HandShake로 신뢰성 있는 연결 | 비신뢰성 |
속도 | 느림 | 빠름 |
공통점 | PORT가 존재한다 |
📌 TCP ( Transmission Control Protocol )
신뢰성 있는 데이터 전송을 보장하는 연결 지향형 프로토콜
- 신뢰성 있는 데이터
데이터를 송수신하기 전에 3 Way HandShake를 통해 연결을 설정한다. - 오류 처리
손상된 패킷 감지 후 재전송한다. - 흐름 제어 및 혼잡 제어
데이터가 올바르게 전송될 수 있도록 전송 속도 등을 조절한다.
📌 3 Way HandShake
데이터를 전송하기 전에 먼저 수행하여 양쪽 모두 데이터를 전송할 준비가 되었다는 것을 보장한다.
또한, TCP는 SEQ 번호를 설정해 패킷의 올바른 순서로 도착하도록 보장한다.
✅ SEQ(시퀀스) 번호
TCP는 신뢰성 있는 데이터 전송을 보장하기 위해 각 패킷마다 고유한 SEQ 번호를 부여한다.
- 올바른 순서 확인
- 누락된 패킷 확인
- 중복된 데이터인지 확인
*SYN (Synchronize) 동기화 *ACK (Acknowledge) 인정하다
1) SYN 패킷 전송
클라이언트가 서버에게 SYN 패킷을 전송한다.
(저희 쪽 계약 조건 확인해 보시죠)
클라이언트 상태 - SYN_SENT
클라이언트의 SEQ = 1000
2) SYN, ACK 패킷 전송
서버는 클라이언트가 보낸 SYN 패킷을 받고 ACK 패킷과 함께 반환한다.
(확인했습니다. 이쪽 계약 조건은 이렇습니다 확인해 주세요)
서버 상태 - SYN_RECEIVED
서버의 SEQ = 3000
서버의 ACK = 1000 ( 클라이언트의 SEQ ) + 1
3) ACK 패킷 전송
클라이언트는 서버가 보낸 SYN-ACK 패킷을 받고, ACK 패킷을 보내며 연결을 완료한다.
(괜찮네요 이렇게 체결하시죠. 계약 성립!)
서버 상태 - ESTABLISHED
클라이언트의 SEQ = 1001
클라이언트의 ACK = 3000 (서버의 SEQ) + 1
📌 UDP ( User Datagram Protocol )
비연결형, 신뢰성이 없지만 빠른 전송이 중요한 실시간 통신에 적합한 프로토콜
기능이 없고 연결을 하지 않아 속도가 빠르지만,
잘못된 데이터가 전송되지 않도록 Checksum을 통해 데이터 무결성을 검사한다.
'Web' 카테고리의 다른 글
DTO (Data Transfer Object) (0) | 2025.03.31 |
---|---|
웹 서비스 구조 및 흐름을 비유와 함께 이해하기 (0) | 2025.03.20 |
REST API와 RESTful API (0) | 2025.03.20 |
HTTP Message (0) | 2025.03.18 |
API 간략 정리 (0) | 2025.02.17 |