네트워크

[네크워크] 소켓(Socket) 통신이란?


노드를 사용한 소켓통신 을 구현해 보기전에 개념적인 부분을 짚고 넘어가고싶어서 검색을 해보다가 

말그대로 개념에 대해서 쉽게 정리된 글을 찾아서 가져왔다.

원본링크는  http://jonnung.blogspot.kr/2013/05/soket.html



소켓통신


네트워크를 통하여 서로 다른 컴퓨터에서 수행되는 프로세스간의 통신 채널이다.

소켓통신에는 신뢰성 프로토콜인 TCP(Transfer Control Protocol)와 

비신뢰성 프로토콜인 UDP(User Datagram Protocol)가 있다.


TCP 통신의 개념


TCP 통신은 쉽게 전화 통화하는 방식으로 동작한다. 상대방의 전화번호를 알고 있어야 전화를 걸 수 있듯이 상대방의 IP 주소와 포트를 알고 있어야 연결을 할 수 있다.

서버가 응답을 받아주지 않으면 계속적으로 요청을 하게 된다. 어느 시점에서 요청을 포기하게 될 수도 있다.

이처럼 TCP 통신은 계속적으로 소켓을 통해 데이터를 주고 받을 수 있는 양방향 통신이 가능하다. 

또한 데이터를 받지 못했을 때 다시 요청하는 메커니즘을 가지고 있다.


UDP 통신의 개념


UDP 통신은 상대방과 연결되어 있는 개념이 아니다. 소켓을 개설하고 그냥 데이터를 흘려 보내는 개념이다.

이는 편지를 보내는 방식과 유사하다. 편지를 보냈더라도 편지를 받는 사람은 편지함을 열어보기 전까지는 편지가 왔는지 안왔는지 알 수 없다. 

따라서 UDP 통신은 UDP 소켓을 통해서 자신의 포트를 열어보기 전에는 데이터가 왔는지 오지 않았는지 알 수 없다.


TCP 와 UDP 비교


TCP 통신은 데이터를 주고 받을 때 데이터가 도착했는지 여부를 내부적으로 확인한다.

만약 데이터가 오지 않았다면 재요청을 하는 메커니즘을 가지고 있어 양방향으로 연결 되어 있지만 이러한 확인 절차로 인해 속도면에서 느리다.

하지만 UDP는 이러한 확인 절차를 거치지 않고 계속적으로 데이터를 전송하기만 하기 때문에 속도면에서 훨씬 빠르다.

속도면에서는 UDP가 빠르지만 UDP는 데이터가 도착했는지 알 수 없는 비신뢰성 프로토콜이다.


'BACK-END > .etc' 카테고리의 다른 글

[네트워크] 소켓(Socket) 통신이란?  (0) 2017.08.24

+ Recent posts

티스토리 툴바