* 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) 전송

+ Recent posts