1. TCP(Transmission Control Protocol)
TCP는 패킷 전송을 제어하여 신뢰성을 보증하는 프로토콜입니다.
그렇기 때문에 은행 업무나 메일처럼 수신자가 반드시 정보를 받아야 하는 신뢰성 있는 통신에 사용됩니다.
1.1 3-way handshake
통신을 시작할 때 클라이언트와 서버가 데이터를 주고 받을 준비가 되었는지 확인하는 과정입니다.
1. 클라이언트가 접속을 요청하는 SYN 패킷을 서버에 보냅니다.
2. SYN 패킷을 받은 서버는 접속 요청을 수락하는 ACK 패킷과 SYN 패킷을 보냅니다.
3. 클라이언트는 서버로부터 받은 ACK 패킷을 다시 서버로 보내고 데이터 통신이 가능한 상태가 됩니다.
1.2 TCP의 전송 제어 기법
TCP는 원활한 통신을 위해 전송 흐름을 제어하는 기능을 포함하고 있는데,
크게 3가지의 기법이 존재합니다.
1.2.1. 흐름 제어 : 송신자가 수신자의 데이터 처리 속도를 파악하고 전송할 데이터의 속도와 양을 제어하는 것을 말합니다.
슬라이딩 윈도우(Sliding Window) 방식을 사용합니다.
- Window라는 데이터 저장 공간을 동적으로 조절하여 데이터의 양을 제어합니다.
1.2.2. 오류 제어 : 통신 중에 유실되거나 잘못된 테이터가 수신되었을 경우를 제어하는 것을 말합니다.
Go Back N 기법과 Selective Repeat 기법을 사용합니다.
Go Back N 기법 : 어떤 데이터에서 오류가 발생했는 지를 파악해서 그 부분만 다시 순서대로 전송합니다.
Selective Repeat 기법 : 에러가 발생한 데이터만 재전송하고 전에 받은 순서가 잘못된 데이터를 재정렬합니다.
1.2.3 혼잡 제어 : 네트워크가 불안정해서 데이터 통신이 원활하지 않으면 제어를 통해 재전송을 하는데,
이러한 작업이 반복되면 네트워크가 붕괴될 수도 있습니다.
그렇기 때문에 네트워크 혼잡 상태가 감지되면 송신 측의 전송 데이터 크기를 조절하여 전송량을 제어합니다.
TCP에는 Tahoe, Reno, New Reno, Cubic, Elastic-TCP 등의 혼잡 제어 기법이 존재합니다.
2. UDP(User Datagram Protocol)
데이터 전송에 데이터그램 방식을 사용하는 프로토콜입니다.
각각의 패킷 간의 순서가 존재하지 않는 독립적인 패킷을 사용하고
신뢰성을 확보하는 과정이 없기 때문에 속도가 빠릅니다.
2-1 QUIC(Quick UDP Internet Connections)
UDP를 기반으로 TCP, TLS, HTTP의 기능을 모두 구현하는 프로토콜입니다.
HTTP 3.0에서 사용 중입니다.
'기술면접' 카테고리의 다른 글
| Web server와 WAS의 차이점 (0) | 2023.04.03 |
|---|---|
| 트랜잭션이란? (0) | 2023.04.03 |
| 프로세스와 스레드의 개념 및 차이점 (0) | 2023.03.31 |
| Filter, Interceptor, AOP 정의 (0) | 2023.03.30 |
| DI 구현 방법 비교해보기 (0) | 2023.03.30 |