소켓통신 (TCP 통신과 UDP 통신 비교)
소켓통신에는 기본적으로 2가지의 통신방법이 있습니다. 신뢰성 프로토콜인 TCP(Transfer Control Protocol)와 비신뢰성 프로토콜인 UDP(User Datagram Protocol)가 그것입니다.
TCP 통신의 개념
TCP(Transmission Control Protocol) 통신은 전화와 같은 방식으로 동작합니다. 보통의 경우 상대방의 전화번호를 알고 있어야 전화를 거는 것처럼 TCP 통신을 하기 위해서는 상대방의 IP 주소와 Port를 알고 있어야 연결을 요청할 수 있습니다. 그리고 전화를 걸더라도 받아주지 않으면 계속해서 대기해야 합니다. 이와 마찬가지로 서버가 응답을 받아주지 않으면 계속적으로 요청을 하게 됩니다. 물론 어느 순간에 포기하는 것도 마찬가지입니다.
만약 전화를 받았다고 생각해 보죠. 양방향 통신이 가능합니다. 한번 연결되면 계속해서 상대방에게 음성을 전달할 수 있는 것처럼 TCP 통신에서도 계속적으로 소켓을 통해서 데이터를 주고받을 수 있습니다.
전화가 연결된 후 끊기 전까지는 계속해서 통신을 할 수 있는 것입니다. 그리고 양방향 모두 가능합니다. 데이터의 확인 절차도 거치게 됩니다. 만약 전화가 잘 들리지 않는다면 상대방은 '뭐라고요?'라고 하지 않습니까! TCP 프로토콜도 자료를 받지 못했다면 다시 요청하는 메커니즘(Mechanism)을 가지고 있습니다.
UDP(User Datagram Protocol) 통신은 편지에 비유할 수 있습니다. 여러분은 편지를 쓸 때 편지지에 데이터를 기록하고, 편지봉투에 상대방의 주소와 자신의 주소를 표시한 후 그냥 보내 버립니다. 편지가 도착했는지 하지 않았는지는 알 수 없죠. 이러한 원리는 UDP에서 그대로 적용됩니다.
먼저 데이터를 생성한 후 상대방의 주소와 자신의 주소를 기록하고 보내버리면, 그 데이터를 받았는지 확인할 방법은 없습니다. 단지 보냈다는 사실만 존재할 뿐입니다. UDP 통신 자체는 상대방과 연결되어 있는 개념이 아닙니다. 자신의 로컬 머신에서 소켓을 개설하고 데이터를 랜카드에 실어 버리는 개념입니다. 그렇기 때문에 편지를 우체통에 넣어버리는 개념과 흡사한 것입니다.
UDP 통신의 개념
편지를 받는 사람 입장에서 생각해 보죠. 편지가 왔는지 오지 않았는지는 편지함을 열어보기 전에는 알 수 없습니다. 이것과 마찬가지로 상대방이 UDP를 통해서 데이터를 보냈다 하더라도 UDP 소켓을 통해서 자신의 포트를 열어보기 전에는 데이터가 왔는지 오지 않았는지 알 수 없습니다. 즉 자신의 로컬 머신에 소켓을 개설하고 데이터가 들어왔는지 오지 않았는지를 확인하는 메커니즘이 됩니다. 이것은 편지가 우편함에 있는지 없는지를 확인하는 것에 비유할 수 있습니다.
TCP와 UDP 프로토콜의 통신 메카니즘의 차이는 일반적인 생활에서 쉽게 찾아볼 수 있습니다. TCP 통신은 데이터를 주고받을 때 데이터가 도착했는지 하지 않았는지 내부적으로 확인하게 됩니다. 만약 하지 않았다면 재요청을 하는 메카니즘을 가지고 있습니다. 이러한 확인 절차로 인해 속도면에서 느립니다. 하지만 UDP는 이러한 확인 절차를 거치지 않고 계속적으로 데이터를 보내기만 하고 받기만 하기 때문에 훨씬 빠른 속도로 처리될 수 있습니다.
속도면에서 UDP가 빠르지만 UDP는 데이터가 정확하게 도착했는지 하지 않았는지 알 수 없는 비신뢰성 프로토콜입니다. 이에 반해 TCP는 이를 보장하는 신뢰성 프로토콜입니다.
쉽게 이야기 하자면 TCP 는 전화와 비슷한 방식을 제공한다. 서로 연결된 상태에서만 정보를 교환 할 수 있다. UDP 는 편지나 , 방송과 비슷하다고 할 수 있다. 발송된 편지는 수신자가 받았는지 안받았는지 알수 없다 전달하게 되면 그만 인것이다(적절한 표현인지 모르겠다...)
방송과 같은경우는 UDP 와 잘 맞는거 같다. KBS나 MBC에서 브로드캐스팅된 정보를 각각의 가정에서 받아 TV 화면으로 보지만 우리는 그것을 잘 받았다고 MBC 나 KBS에 응답하거나. 잘못된 수신된 화면에 대해 재요청하거나 하지 않는다.
용어를 조금 정리해 보자면 전화가 유니캐스트 라면 방송의 경우는 브로드 캐스팅이며, 멀티캐스트는 브로드캐스트와 비슷하지만 전체 중 선택된 그룹만 보낼수 있다는 점이 각각 다르다.
예를 들어보자. CP 사와 관련되어 결제 및 중요한 인증부분을 개발 할 경우 TCP/IP 로 개발하는 것이 신뢰성을 높일 것이며, 사내 A 네트워크에 포함된 컴퓨터들에게 일종의 패치 파일이나 메시지를 전달 하고자 한다면 UDP 를 이용해야 할 것이다.
다음 표는 상기에서 설명한 TCP와 UDP의 특징을 비교 정리한 것이다.
'old > Mobile' 카테고리의 다른 글
유니코드(Unicode) (0) | 2010.05.10 |
---|---|
포트(Port) 개념잡기 (0) | 2010.05.10 |
스텁(Stub)과 스켈레톤(Skeleton) (0) | 2010.05.10 |
Vcard 타입과 Vcalendar 타입 (0) | 2010.05.10 |
OSI 7계층 개념잡기 (0) | 2010.05.10 |