기술면접 대비 13탄 TCP/UDP

양진영·2022년 4월 20일
0

오늘 알아보고자 하는 주제는 TCP/UDP이다. 사실 나는 이 네트워크 통신 관련 cs는 너무 어려워 건드리지 않을 생각이었지만, 백엔드 개발자의 알아야 할 기본소양중 하나라고 하여 두렵지만 공부해보았다. TCP/UDP의 공통점부터 간단하게 설명하고 가자면 둘다 데이터를 전송하고 받는 통신 프로토콜이다, 하지만 데이터를 보내고 받는다 정도만 같지 그 안에든 연결 방식이라던가 데이터의 신뢰성 등에서는 커다란 차이를 보인다. 우선 TCP부터 소개해 보도록 하겠다.

TCP는 연결지향형 프로토콜이다. 쉽게 말하면 연결 즉 데이터의 통신에 대한 신뢰성을 보장하는 프로토콜이다. TCP는 데이터 통신을 맺기전 상대와 연결을 확인한다. 그 과정을 Three way handshake라고 한다. three way handsake의 첫 과정은 통신하고자 하는 디바이스가 상대방에게 통신을 해도 괜찮은지 물어본다. 이 과정을 sync를 보낸다 라고하고, sync를 받은 디바이스는 상대에게 통신을 해도 괜찮다 라고 응답과 동시에 자신도 통신을 해도 괜찮냐는 메시지를 보낸다. 이 과정을 통신을 해도 괜찮다 를 ack 그리고 자신도 통신을 해도 괜찮겠냐고 하는 과정을 sync라고 하여 보통 ack/sync라고 한다. 이후 마지막으로 처음 통신을 하자고 했단 디바이스 측에서 오케이 사인으로 ack를 보내면 그때부터 통신을 시작한다. TCP는 이렇게 연결을 맺고 전달 받은 정보를 패킷 이라하고 그 패킷에 대해 유효성 검사를 하여 검사에 통과한 데이터만 받는 특징이 있고 또한 어떠한 문제가 일어나 통신 과정에서 에러가 발생했다면 그 과정에서 난 데이터를 다시 검수하여 손실을 막는다. 하지만 UDP는 이와는 다른 특징을 갖는다.

UDP는 비연결지향성을 갖는다. TCP와 전부 반대라서 특징을 말하자면 했던 말을 반복할것 같지만 가장 중요한 점은 통신중 에러가 난다면 그 과정에서 전달되던 데이터는 복구할수가 없다. 하지만 그렇다고 UDP가 별로고 TCP가 무조건 좋다고는 할수없다. UDP는 여러 검증이나 신뢰성을 보증하지 못하는 대신 굉장히 빠르다. 그래서 용량이 커다란 스트리밍 서비스에 많이 쓰여지곤 한다. TCP와UDP에 가장 대표적인 예시가 방송이다. TCP는 녹화방송 이라고 보면 이해하기 쉬울것이고 UDP는 생방송이라고 이해하면 편할것이다.

오늘의 블로그는 다른 주제 보다 조금더 자료조사에 시간을 많이 들였던 만큼 뭔가 뿌듯하다.

profile
왜? 라는 질문을 중요시하는 서버 개발자입니다

0개의 댓글