TCP와 UDP는 모두 인터넷에서 데이터를 전송하기 위한 네트워크 프로토콜이다
TCP : Transmission Control Protocol
인터넷에서 데이터를 전송하기 위한 네트워크 프로토콜
패킷 단위로 전송한다
패킷 Packet 데이터의 조각(Segment) 인터넷 내에서 라우팅(데이터 경로 배정)을 효율적으로 하기 위해 데이터를 여러개의 조각들로 나누어 전송할 때의 데이터 단위
인터넷 == 패킷 스위칭 네트워크 패킷들은 모두 다른 네트워크를 통해 목적지에 모일 수 있음
TCP가 패킷을 추적하고 관리하는 방법 데이터는 패킷단위로 같은 목적지(IP계층)으로 전송됨 패킷에 번호를 부여하여 모두 도착했는지 확인하고 데이터를 받아서 조립함
TCP의 장점
- 운영체제에 상관없이 동작한다 → UDP의 사용 및 동작은 운영체제별로 다를 수 있다
- 데이터 전송 속도를 리시버의 허용량에 맞게 조절한다
- 데이터가 목적지에 도착했는지 확인하고 전송이 실패하면 재전송한다
TCP의 단점
- 대역폭 사용량이 많고 UDP보다 느리다
- 아주 작은 데이터의 유실은 다른 정보도 로딩할 수 없게 함
- 로컬 네트워크나 개인 네트워크에서는 잘 동작하지 않음
TCP 작동 방식
TCP는 연결지향적이다 (connection-based)
UDP는 따로 연결되었는지 확인하는 과정이 없지만 TCP는 클라이언트와 서버가 연결되었는지 확인하는 과정이 있다
패킷들이 여러 루트 중에서 같은 경로를 통해 전달되게 된다
그래서 흐름 제어 및 혼잡 제어가 가능하고 높은 신뢰성을 보장한다. UDP보다 속도가 느리다.
전이중(Full-Duplex), 점대점(Point to Point) 방식.
연결 초기화 시 3 way handshake,
연결 종료시 4 way handshake를 사용한다
왜 3번이 필요한지 의문이 들어서 찾아봤더니
클라이언트가 보낸 요청을 서버가 받을 수 있는지 한 번 확인하고(SYN,SYN ACK)
서버가 보낸 요청을 클라이언트가 받을 수 있는지 한 번 확인하는 과정이 필요하다고 함(SYN ACK,ACK RECEIVED)
TCP 연결 초기화 : 3 way handshake
TCP 세션 종료 : 4 way handshake
UDP : User Datagram Protocol
인터넷에서 데이터를 전송하기 위한 네트워크 프로토콜
데이터그램 단위로 전송한다
데이터그램 UDP의 데이터 세그먼트 패킷 전환 네트워크를 통해 전송된다 TCP에서 사용되는 패킷보다 전달되는 정보가 적다 헤더,source,destination의 IP로 구성됨
UDP의 장점
- 더 작은 패킷들을 보내서 오버헤드가 적고 end-to-end delay가 줄어든다
- 패킷들을 잃어버려도 상관없이 데이터를 전송한다
- 한 번 보내서 여러곳에서 수신할 수 있다 (1:n, n:n도 가능)
- TCP보다 빠르고 대역폭을 적게 사용한다
end-to-end delay = one-way delay round-trip time
( 출발지 → 목적지 )시간 | ( 출발지 → 목적지 → 출발지 )시간 |
UDP의 단점
- 데이터 패킷이 목적지에 성공적으로 도달했는지 체크하지 않는다
- 데이터가 손상된 채로 도착했는지 목적지 측에서 알 수 없다
- 라우터가 TCP패킷을 UDP패킷보다 우선시할 가능성이 있다
- 데이터의 도착 순서도 보장되지 않는다
UDP는 연결지향적이지 않다 (connection-based)
연결을 위해 할당되는 논리적인 경로가 없어 각각의 패킷은 다른 경로로 전송되고 독립적인 관계를 지니게 된다
UDP 작동 방식
TCP와 UDP 비교
TCP | UDP | |
연결 방식 | 연결형(패킷 교환) | 비연결형(데이터그램) |
속도 | 느림 | 빠름 |
신뢰성 | 높음 | 낮음 |
전송 순서 | 보장됨 | 바뀔 수 있음 |
수신 여부 | 확인 | 확인x |
통신 방식 | 1:1 | 1:1 / 1:n / n:n |
혼잡제어 | O | X |
대역폭 | 많이 사용 | 적게 사용 |
'Developing > TIL(CS)' 카테고리의 다른 글
디자인 패턴 (0) | 2024.04.17 |
---|---|
HTTP/HTTPS (0) | 2024.04.11 |
SSL/TLS (0) | 2024.04.11 |
DB 로직 최소화 하기 (0) | 2024.04.05 |
쿼리 최적화 방법 Query Optimization (0) | 2024.04.05 |