본문 바로가기
Server

Socket 통신에 대해서(HTTP 통신과 비교)

by Taron 2022. 8. 18.

소켓 통신이란?

소켓이란 두 프로그램이 서로 데이터를 주고받을 수 있도록 양쪽에 생성되는 통신 단자입니다. 이 소켓으로 서버와

클라이언트가 양방향으로 연결이 이루어지는 통신입니다. 

 

서버 소켓

클라이언트 소켓의 연결요청을 대기하고, 연결 요청이 오게 되면 클라이언트 소켓을 생성하여 통신을 합니다.

  • socket() 함수로 소켓을 생성
  • bind() 함수로 클라이언트에서 연결할 수 있도록 ip 와 port를 할당함
  • listen() 함수로 클라이언트에서 요청하는 연결요청을 대기합니다
  • accept() 함수는 클라이언트에서 연결요청이 들어왔을 때 연결 요청을 수락합니다.
  • write/read() 함수로 데이터를 송/수신 하게 됩니다.

클라이언트 소켓

실제로 데이터 송/수신이 일어나는 클라이언트 소켓입니다..

  • socket() 함수로 소켓을 생성
  • connect() 함수로 소켓 통신할 서버에 설정된 ip와 port 번호로 통신을 시도합니다.
  • write/read() 함수로 데이터를 송/수신 하게 됩니다.

소켓 통신의 흐름

  • 소켓 종류

스트림(TCP)

  • 양방향으로 바이트 스트림을 전송합니다.(연결 지향성)
  • 소량의 데이터보다 대량의 데이터 전송에 적합합니다.
  • 오류 수정, 정송처리, 흐름 제어가 보장됩니다. 

데이터 그램(UDP)

  • 비연결형 소켓
  • 데이터의 크기에 제한이 있습니다.
  • 확실하게 전달이 보장되지 않습니다.

 

Socket 통신과 HTTP 통신의 차이점

 

HTTP 통신

  • Client의 요청이 있을 때만 서버가 응답하여 데이터를 전송한 후 연결을 끊어 버리는 단방향 통신입니다.

Socket 통신

  • Server와 Client가 IP와 특정 포트를 통해 연결해 연결이 유지되며 실시간으로 통신하는 양방향 통신입니다.

 

정리

  • 데이터를 자주 주고 받는 상황이 아니라면 Socket 통신보다 HTTP 통신을 사용하는 것이 유리합니다.
  • 데이터를 실시간으로 주고받는 상황(ex)) 채팅) 이라면 Socket 통신을 사용해야 유리합니다

댓글