카테고리 없음

소켓통신이란?

Lostinformation 2017. 8. 17. 08:12

소켓통신

소켓통신에는 기본적으로 2가지의 통신 방법이 존재한다.

신뢰성 프로토콜인 TCP와 비신뢰성 프로토콜인 UDP이다.


TCP의 개념

TCP 통신은 전화와 같은 방식으로 작동한다.

보통의 경우에는 상대방의 전화번호를 알고 있어야 전화를 발신하는것처럼 TCP 통신을 하기 위해서는

상대의 IP주소와 포트를 알고 있어야 연결을 할수있다.

그리고 전화를 발신하더라도 상대측에서 수신해주지 않으면 계속해서 대기하여야 한다.

이와 마찬가지로 상대 서버가 응답을 받아주지 않는다면 지속해서 요청을 하여야 한다.

물론 어느 순간에 포기하는 것도 마찬가지이다.


만일 전화를 받았다고 가정해보자.

양방향 통신이 가능하다.

한번 연결이 된다면 상대방에게 음성을 전달할 수 있는 것처럼 TCP 통신에서도

지속하여 소켓을 통한 데이터를 송수신 할수있다.


전화가 연결된 후 끊기 전까지는 지속하여 통신을 할수있는 것이다.

그리고 양방향 모두 가능하다. 데이터의 확인 절차도 거치게 된다.

만일 전화가 잘 들리지 않다면 상대방은 무엇인가? 라고 하지 않는가.

TCP 프로토콜도 원하는 자료를 제공받지 못하였다면 다시 요청하는

메커니즘을 가지고 있다.




UDP 통신은 편지에 비유가 가능하다.

여러분은 편지를 적을 때 편지지에 데이터를 기록하고, 편지봉부에 상대의 주소와

자신의 주소를 표기 후 그냥 전송해버린다.

이후 편지가 정말 안전히 상대에게 도착하였는지 확인할 방도가 없다.

이러한 원리는 UDP에서 그대로 적용이된다.


먼저 데이터를 생성한 후 상대방의 주소와 자신의 주소를 기록하고 전송하면, 그 데이터를

받았는지 확인할 방법이 없다. 단지, 보냈다는 사실만 알수있을 뿐이다.

UDP 통신 그 자체는 상대방과 연결되어 있는 개념이 아니다.

자신의 로컬 머신에서 소켓을 개설하고 데이터를 랜카드에 실어 버리는 개념이라 볼수있다.

그렇기에 편지를 우체통에 넣어버리는 모습과 매우 흡사하다.


UDP 통신의 개념

편지를 받는 사람 입장에서 생각해보자.

편지가 왔는지 오지 않았는지는 편지함을 확인해보기 전까지는 확인할수가없다.

이점과 마찬가지로 상대방이 UDP를 통하여 데이터를 전송하였다 하더라도 UDP 소켓을 통해

자신의 포트를 열어보기 전에는 데이터가 도착했는지 확인할 수 없다.

즉 자신의 로컬 머신에 소켓을 개설하고 데이터가 들어왔는지 오지 않았는지를 확인하는

메커니즘이 된다. 이점은 편지가 우편함에 있는지 없는지 확인할 수 있는 점과 비유할 수 있다.


TCP와 UDP 프로토콜의 통신 메카니즘의 차이는 일반적인 생활에서 쉽게 볼수있다.

TCP 통신은 데이터를 송수신할 때 데이터가 잘 도착했는지 그렇지 아니한지 내부적으로 확인하게 된다.

만약 하지 않았다면 재요청을 하는 메커니즘을 소유한다.

이러한 확인 절차로 인하여 속도면에서는 다소 느리다.

하지만 UDP는 이러한 확인 절차를 일일이 거치지 않고 지속하여 데이터를 전송하기만하고

수신하기만 하기에 훨씬 빠른 속도로 처리될 수 있는 것이다.




속도면에서만 본다면 UDP가 훨씬 우월하지만 UDP는 데이터가 정확히 도착하였는지

알 수 없는 신뢰가 되지 않는 프로토콜이다.

이와는 반대되는 개념으로 TCP는 이를 보장하는 신뢰성 프로토콜이다.


쉽게 정리하여 이야기 한다면 TCP는 전화와 비슷한 방식을 제공한다.

서로 연결된 상태에서만 정보를 교환할 수 있다.

UDP는 편지나 방송과 비슷한 개념이라 볼수있다.

발송된 편지는 수신자가 정말 받았으니 그렇지 아니한지 전달하게 되면 그만인 것이다.


방송과 같은 경우는 UDP와 어울린다.

KBS와 MBC에서 브로드캐스팅된 정보를 각각의 가정에서 받아

TV화면으로 보지만 우리는 그것을 정말 잘 받았다고 MBC나 KBS에 응답하거나 잘못되어

수신된 화면에 대한 복구를 요청하지 않는다.


용어를 조금 정리해 보자면 전화가 유니캐스트라면 방송의 경우는 브로드 캐스팅이며,

멀티캐스트는 브로드캐스트와 비슷하지만 전체 중 선택된 그룹에만 전송할 수 있다는 점에서

각각의 차이가 드러난다.