들어가며
웹 소켓을 공부하다보면 TCP 라는 단어를 많이 봤다.
웹 소켓 뿐만 아니라 프로그래밍을 공부하는 사람들은 TCP/UDP 라는 단어를 본다
TCP/UDP 가 뭔지 알아보자
TCP 와 UDP

TCP 와 UDP 는 네트워크 계층의 전송 계층에서 사용하는 프로토콜이다.
전송 계층은 신뢰성 있는 데이터를 전송하기 위한 계층으로,
데이터의 신뢰성을 보장하며, 포트 번호로 데이터를 적절한 응용 프로그램에 전달하는 역할을 한다.
TCP
TCP 는 패킷 사이의 순서를 보장하고 연결지향 프로토콜을 사용해서 연결을 하여
신뢰성을 구축해서 수신 여부를 확인하며 '가상회선 패킷 교환 방식'을 사용한다.
연결형 서비스를 지원하고 데이터의 신뢰성을 보장한다.
TCP는 아래와 같은 특징이 있다.
- 송신부와 수신부의 연결을 확인하는 연결형 서비스다.
- 패킷 교환 방식은 패킷이 전달되는 회선이 정해져 있는 가상 회선 방식이다.
- 패킷의 전송 순서가 보장된다.
- 패킷의 수신 여부를 확인한다.
- 송신부와 수신부는 1:1 통신을 한다.
- 데이터 손실이 없음을 보장하므로 신뢰성이 높다.
- 데이터 송수신 속도가 느리다.
이러한 특징 때문에 데이터의 신뢰성을 보장해야 하는 HTTP 통신, 이메일 전송, 파일 전송 등에 사용된다.
TCP 핸드셰이킹
연결을 시작할 때는 3-way 핸드셰이킹(3-way handshaking)
연결을 해제할 때는 4-way 핸드셰이킹(4-way handshaking) 을 한다.
3-way Handshking

1) 송신부가 수신부와 연결하기 위해 SYN 메시지를 보낸다.
송신부는 SYN을 보내고 응답이 오기 전까지 SYN_SENT 상태가 된다.
2) 수신부는 SYN 메시지를 받고 연결 요청을 수락하는 의미인 ACK 메시지를 전송한다.
ACK 와 SYN flag 가 설정된 패킷을 발송하고, 송신부가 다시 ACK 로 응답하기를 기다린다.
수신부는 SYN_RECEIVED 상태가 된다.
3) 송신부가 수신부로부터 SYN+ACK 메시지를 받으면 연결이 성립되었다는 의미인 ESTABLISHED 상태가 된다
메시지에 대한 응답으로 ACK 메시지를 수신부에 보낸다
송신부로부터 수신부가 ACK 메시지를 받으면 수신부는 ESTABLISHED 상태가 된다.
4-way Handshking

1) 송신부가 연결을 종료하기 위해 수신부에 FIN 메시지를 보낸다.
이 때 송신부는 FIN-WAIT1 상태가 된다
2) 수신부는 송신부로부터 FIN 메시지를 받으면 이에 대한 응답으로 ACK 메시지를 보낸다
이 때 수신부는 CLOSE_WAIT 상태가 된다.
송신부는 수신부가 보낸 ACK 메시지를 받고 FIN_WAIT2 상태가 된다.
3) 수신부에서 연결을 종료할 준비가 끝나면 송신부에 FIN 메시지를 보내고 LAST_WAIT 상태가 된다
4) 송신부는 FIN 메시지를 받고 수신부에 ACK 메시지를 보내고 TIME_WAIT 상태가 되고, 일정 시간이 지나면 CLOSED 상태가 된다.
(일정 시간 후에 변경되는 이유는 데이터 유실을 방지하기 위함이다.)
수신부는 ACK 메시지를 받고 CLOSED 상태가 된다.
TCP 제어 방법
TCP 의 데이터 신뢰성을 보장하기 위한 방법으로 흐름 제어, 혼잡 제어, 오류 제어가 있다.
1) 흐름 제어
데이터 송신부와 수신부 간에 데이터 처리 속도 차이로 인한 데이터 손실을 방지하기 위한 방법이다.
정지-대기와 슬라이딩 윈도우 방식이 있다.
2) 혼잡 제어
데이터 송신부의 데이터 전달 속도와 네트워크 속도의 차이로 인한 데이터 손실을 방지하기 위한 방법이다.
AIMD, 느린 시작 등이 해당한다
3) 오류 제어
데이터에서 오류 및 유실 발생 시 재전송을 통해 데이터의 신뢰성을 보장하기 위한 방식이다.
정지-대기, Go-Back-N ARQ, Selective-Repeat ARQ 등이 있다.
UDP
UDP는 순서를 보장하지 않고 수신 여부를 확인하지 않으며 단순히 데이터만 주는 '데이터그램 패킷 교환 방식'을 사용한다.
그래서 TCP 와 달리 핸드셰이킹 과정 없이 패킷을 바로 송수신한다.
이 방식은 신뢰성은 낮지만 속도가 빠르다는 장점이 있다.
UDP 의 특징은 아래와 같다.
- 송신부와 수신부의 연결이 보장되지 않는 비연결형 서비스다.
- 패킷이 서로 다른 회선으로 교환될 수 있는 데이터그램 패킷 교환 방식이다.
- 송신부에서 전달한 패킷 순서와 수신부에서 받은 패킷 순서가 다를 수 있다.
- 패킷의 수신 여부를 확인하지 않는다.
- 1:1 통신, 1:N 통신, N:N 통신 모두 가능하다.
- 데이터의 신뢰성이 낮다.
- 데이터의 전송 속도가 빠르다.
이러한 특징으로 실시간 서비스(streaming) 에 자주 사용한다.
UDP 의 오류 검출
UDP 도 최소한의 신뢰성을 보장하기 위해 체크섬(checksum) 방식으로 오류를 검출한다.
송신부에서 UDP 헤더, IP 헤더의 일부 정보, 데이터로 체크섬 값을 생성한다.
생성된 체크섬 값을 수신부에 보내면 수신부는 체크섬을 포함한 모든 값을 더해 비트가 모두 1이 나오는지 확인한다.
비트가 모두 1이라는 것은 송신부와 동일한 체크섬 값이 나온다는 것을 의미한다.
이것은 최소한의 신뢰성을 보장하는 것익 때문에 1이 나온다고 하더라도 잘못된 데이터가 전송될 수 도 있다.
TCP 와 UDP 비교

TCP와 UDP 의 특징을 표로 비교하면 다음과 같다
| 구분 | TCP | UDP |
| 연결 방식 | 연결형 서비스 | 비연결형 서비스 |
| 패킷 교환 방식 | 가상 회선 방식 | 데이터그램 방식 |
| 전송 순서 | 순서 보장 | 순서가 바뀔 수 있음 |
| 수신 여부 | 확인 | 확인하지 않음 |
| 통신 방식 | 1:1 통신 | 1:1, 1:N, N;N |
| 신뢰성 | 높음 | 낮음 |
| 속도 | 느림 | 빠름 |
Reference
https://product.kyobobook.co.kr/detail/S000208504237
기술 면접 대비 CS 전공 핵심요약집 | 이수진 - 교보문고
기술 면접 대비 CS 전공 핵심요약집 | 1분 1초가 아쉬운 취업/이직 준비생을 위해 기술 면접에 필요한 CS 전공의 핵심 내용만 간추렸다!비전공자는 물론 IT 전공자라도 광범위한 CS 전공 중에 어떤
product.kyobobook.co.kr
https://product.kyobobook.co.kr/detail/S000001834833
면접을 위한 CS 전공지식 노트 | 주홍철 - 교보문고
면접을 위한 CS 전공지식 노트 | 디자인 패턴, 네트워크, 운영체제, 데이터베이스, 자료 구조, 개발자 면접과 포트폴리오까지! CS 전공지식 습득과 면접 대비, 이 책 한 권이면 충분하다! 개발자 면
product.kyobobook.co.kr
TCP/UDP와 WebSocket (웹 소켓)
TCP (Transmission Control Protocol) 인터넷상에서 데이터를 메시지 형태로 보내기 위해 IP와 함께 사용하는 프로토콜 패킷을 추적 및 관리 연결 지향 방식이다. 흐름 제어 및 혼잡 제어. 높은 신뢰성을 보
velog.io
[ 네트워크 쉽게 이해하기 22편 ] TCP 3 Way-Handshake & 4 Way-Handshake
우선 TCP의 3-way Handshaking 에 대하여 알아보겠습니다. * TCP 3-way Handshake 란? TCP는 장치들 사이에 논리적인 접속을 성립(establish)하기 위하여 three-way handshake를 사용한다. TCP 3 Way Handshake는 TCP/IP프로토
mindnet.tistory.com
https://dev-coco.tistory.com/144
TCP와 UDP의 특징 및 차이점 알아보기
TCP와 UDP는 OSI 7 계층들 중 TCP/IP의 전송 계층에서 사용되는 프로토콜이다.※ 전송 계층은 송신자와 수신자를 연결하는 통신서비스를 제공하는 계층이다.즉, 데이터의 전달을 담당하며 전달되
dev-coco.tistory.com
'Study > CS' 카테고리의 다른 글
| SSR 과 CSR 의 차이 (0) | 2024.11.27 |
|---|---|
| 브라우저의 렌더링 과정 (0) | 2024.11.25 |
| WebSocket에 대해서 알아보기 (0) | 2024.11.11 |