오늘은 네트워크의 계층 중에서 전송계층에서 사용하는 프로토콜 종류인 TCP와 UDP에 대해서 설명해볼까합니다.
사실 회사에서 통신관련된거 찾아보다가 한번 다시 공부하게되어서 공부하는김에 작성했습니다!.
정보처리기사 시험볼때도 공부했었던 TCP와 UDP 그땐 잘 몰랐는데 저는 역시 일하면서 공부하는 타입인거 같습니다.
TCP 란?
TCP는(Transmission Control Protocal) 서버와 클라이언트간에 데이터를 신뢰성 있게 전달하기 위해 만들어진 프로토콜입니다. 정보처리기사 자격증을 취득할때에도 공부한적 있었는데, TCP는 가장 큰 특징이 3way handshake입니다.
3way handshake란 쉽게 설명하면
1. 클라이언트가 서버에다가 연결을 맺을때 특정 SYN(Synchronization) 이라는 연결 요청을 보냅니다.
2. 그럼 서버에서는 클라이언트가 보낸 SYN값과 ACK(Acknowledgement)라는 값을 추가하여 다시 클라이언트에게 보냅니다.
3. 클라이언트는 그럼 처음에 자신이 보낸 SYN값을 확인하고 다시 서버에게 ACK값을 전달하는 방식입니다.
이렇게 3번 데이터를 주고 받으며 통신이 맺어진것을 확인 하는것입니다.
또한 TCP는 3way handshake 방식이기 때문에 높은 신뢰성을 보장합니다 하지만 높은 신뢰성을 보장하는 만큼 속도는 UDP보다 느립니다. 또한 TCP는 특정 포트로 통신을 합니다.
TCP를 사용하는것들은 신뢰성이 보장되어야하는 파일 전송같은것들이 필요합니다. UDP같은 경우에는 서버에서 클라이언트 여러곳에 뿌리고 끝이지만, 만약 파일 전송같은것들을 UDP방식으로 할경우에는 패킷같은 것들이 유실되어 문제가 될 수 있기 때문에 패킷의 손실이 없어야 하는 것들은 TCP 통신을 합니다.
UDP란?
UDP(User Datagram Protocal) 란 비연결형, 신뢰성을 보장하지 않는 전송 프로콜입니다.
UDP는 서버1개에서 여러 클라이언트에게 전송을 하고 연결을 종료합니다.
쉽게 설명하면 버스회사는 버스 정류소에 버스들을 보내기만하고 승객이 버스정류장에서 잘탔는지 안탔는지는 확인하지 않는 방식입니다. 그렇기 때문에 패킷이 처음 패킷이나 끝의 패킷이 유실되어도 신경쓰지 않는 전송 프로토콜입니다. 이러한 특성 때문에 실시간 스트리밍 서비스나, Noti 메시지 일괄 전송같은 데이터를 중간에 유실 되더라도 크게 피해를 입지 않을 경우 사용하게 됩니다.
TCP같은 경우에는 클라이언트당 특정 포트를 사용하기 때문에 서버의 포트가 제한적이지만 UDP같은 경우에는 한개의 포트로 여러개의 클라이언트에게 전송이 가능하기 때문에 각각의 장단점이 있으며, 전송하는 데이터의 종류 즉 파일 같은 데이터 패킷이 유실되면 깨지는 파일같은경우에는 신뢰성이 보장되는 TCP / 중간중간 없더라도 크게 문제가 되지않고 다시 보내면 되는 전송일경우에는 UDP 방식이 적절합니다.
이러한 특성을 이해한다면 어떤 프로토콜 방식이 속도가 빠른지, 패킷을 클라이언트가 잘 받았는지 확인하는 추가적인 절차가 있기 때문에 TCP는 UDP에 비해서 속도가 느리지만 클라이언트가 잘 받았는지 확인하기 때문에 신뢰성이 보장되며 UDP는 클라이언트가 잘 받았는지는 확인하지 않고 서버가 보내기만 하고 확인을 안하기 때문에 속도는 빠르고, 연결을 할 필요가 없는 비연결형이라는 것을 기억하면 차이점도 쉽게 구분할 수 있습니다.
댓글