TCP / UDP

Jun·2021년 6월 23일
0

전송계층

TCP와 UDP 는 클라이언트와 서버가 데이터를 전달할수 있게 만들어진 프로토콜이며 3계층 전송계층 에서 사용된다.

TCP (Transmission Control Protocol)

TCP의 특징은 "신뢰성"인데 신뢰성이란, 데이터를 통신하는 동안 데이터가 손상되거나, 없어지거나 중복되지 않도록 정확하게 전달하는 것 을 말한다. TCP는 클라이언트랑 서버가 끊임없이 상호작용을 하며 데이터 수신 여부를 판단한다(연결지향형).
TCP 특징으로 3-way handshaking 과 4-way handshaking 이 있다.

3 way handshake

TCP 3 way handshake는 응용프로그램이 데이터를 전송하기전에 정확한 전송을 위해 세션을 구성하는 과정을 뜻한다. (연결을 설정하는 과정)

3 way handshake 동작 방식

3 way handshake 는 클라이언트와 서버에서 SYN(Synchronize sequence numbers) 와 ACK (Acknowledgment, 승인)를 주고 받는다.

1) 클라이언트는 서버에 접속을 요청하기 위해서 SYN 패킷을 보내고 서버의 ACK 응답을 기다리는 상태 SYN-SENT 이다.

2)서버는 클라이언트에서 SYN 패킷을 받고 요청을 수락하는 SYN-ACK응답을 보내는 상태 SYN-RECEIVED 이다.

3) 서버로부터 SYN-ACK 응답을 받은 클라이언트는 서버로 다시 ACK 를 보내고 이 후부터는 연결이 이뤄졌으며 데이터가 오가는 단계 Established 이다.

4 way handshake

TCP 4 way handshake 는 3 way handshake 와는 반대로 서로의 통신이 연결이 된상태를 해제하는 과정 이다. 클라이언트와 서버는 FIN (Finish) flag와 ACK(Acknowledgment, 승인)을 주고받는다

4 way handshake 동작 방식

1) 클라이언트는 서버로 통신 연결을 해제한다는 FIN flag (finish) 를 보낸다. (FIN_WAIT1 상태)

2) 서버는 클라이언트로 FIN flag 를 받고 ACK(승인) 메세지를 보낸뒤 자신의 통신이 모두 마무리 될때까지 기다린다. (CLOSE_WAIT)

3)서버로부터 ACK 받은 클라이언트는 FIN_WAIT2 상태로 변경되며 서버로부터 마지막 FIN flag를 받을때까지 기다린다.

4) 서버는 연결종료를 위해 마지막 FIN flag를 클라이언트에 전송하고 LAST_ACK 상태로 변경한다.

5)서버로부터 마지막 FIN flg를 받고 종료한다는 ACK를 다시 서버로 보낸다. (TIME_WAIT)

6)클라이언트로부터 마지막 ACK를 받은 서버는 CLOSED 상태로 변경하고 통신을 종료한다.

UDP (User Datagram Protocol)

TCP와는 다르게 클라이언트와 서버가 상호작용 하지 않기 때문에 3-way-handshaking 와 4-way-handshaking 같은 연결절차를 거치치 않는다. 이를 비 연결지향형 이라고 한다. 클라이언트측에서 일방적으로 데이터를 보내기 때문에 데이터 전송을 보장하지 않는다. 비해 상대적으로 빠른 통신을 보여준다.

TCP 와 UDP 차이점

TCP는 신뢰할 수있는 데이터들을 정확하게 전달하기 위해서 연결형 통신을 사용한다.
정확한 데이터보다 빠른 전송이 필요할때는 UDP 프로토콜을 사용한다.

TCP

  • 연결형 프로토콜
  • 신뢰성 데이터 전송 ( 데이터가 안전하게전달)
  • 서버와 일대일 통신

UDP

  • 비연결형 프로토콜
  • 비신뢰성 데이터 전송 (데이터 형태가 온전하지 않을수도 있음)
  • 서버와 일대일, 다대다, 일대다 통신이 가능

0개의 댓글