* TCP 와 UDP 는 네트워크 계층 중 전송계층(transport layer)에서 사용하는 프로토콜
종류 | TCP | UDP |
연결방식 | 연결형 서비스 | 비연결형 서비스 |
패킷교환방식 | 가상 회선 방식 | 데이터그램 방식 |
전송순서 | 보장 | 보장하지 않음 (순서가 바뀔 수 있음) |
수신 여부 | 수신 여부 확인 (유실 시 재전송 요청) | 수신 여부 확인하지않음 |
통신 방식 | 1:1 통신 | 1:1 or 1 : N or N : N |
신뢰성 | 보장 | 보장하지 않음 |
속도 | 느리다 | 빠르다 |
TCP (Transmisson Control Protocol)
[연속성 보다 신뢰성 있는 전송이 중요할 때 사용하는 프로토콜]
- 연결형 서비스
- 가상 회선 방식 (논리적 연결 설정)
- 신뢰성 보장 (3-way handshake, 4way handshake)
- 흐름제어와 오류 제어
- 서버와 클라이언트가 1:1 연결
- 성능이 UDP에 비해 느리다
- 데이터가 손실될 경우 재전송 요청 (streaming 서비스에 불리)
UDP (User Datagram Protocol)
[신뢰성 보다 연속성 전송이 중요할 때 사용하는 프로토콜]
- 비연결형 서비스
- 데이터그램 방식 (독립적인 관계를 지니는 패킷)
- 신뢰성 보장하지 않음 (데이터 유실, 보낸 순서와 받는 순서가 다를 수 있음)
- 서버와 클라이언트가 1:1 or 1 : N or N : N
- 성능이 TCP에 비해 빠르다
- 데이터가 손실 되어도 재전송 요청을 하지않는다 (streaming 서비스에 유리)
------------------------------------------------------------------------------------------------
3-way handshake (TCP 연결시 사용)
[클라이언트와 서버가 신뢰성 있는 연결을 하기 위해 이루어지는 과정]
1. [클라이언트 -> 서버] 연결 요청 (SYN) 전송
2. [서버 -> 클라이언트] 서버에서 연결 요청을 수락 (SYN + ACK) 전송
3. [클라이언트 -> 서버] 클라이언트가 (ACK) 전송
4. 연결 완료 - > 신뢰성 있는 연결로 데이터 송수신 가능
4-way handshake (TCP 연결 해제시 사용)
[클라이언트와 서버가 종료 후에도 데이터 유실을 막기위해 이루어지는 과정]
1. [클라이언트 -> 서버] 연결 종료 (FIN) 전송
2. [서버 -> 클라이언트] (ACK) 전송 후 서버의 통신이 끝날 때까지 대기 (TIME_WAIT)
3. [서버 -> 클라이언트] 서버의 통신이 끝나면 연결 종료 (FIN) 전송
4. [클라이언트 -> 서버] 확인 (ACK) 전송
'서버 공부 > TCP IP 윈도우 소켓 프로그래밍' 카테고리의 다른 글
I/O멀티 플레싱 서버 Select() 함수 (0) | 2022.03.01 |
---|---|
멀티 스레드 서버 (0) | 2022.02.09 |
멀티 프로세스 서버 (0) | 2022.02.02 |
다중 접속 서버 (0) | 2022.02.02 |
1장 - 1. TCP/IP 프로토콜 개요 (0) | 2015.11.23 |