소켓통신(Socket Communication)이란?

소켓통신이란?

소켓은 떨어져 있는 두 호스트를 연결해주고, 데이터를 주고 받을 수 있는 데이터 통로를 만들어 주는 도구로써 인터페이스의 역할을 한다. 역할에 따라 서버 소켓, 클라이언트 소켓으로 구분이 되는데 클라이언트 프로세스는 소켓을 열어 소켓에 데이터를 써서 서버에 보내며, 서버 프로세스는 소켓으로부터 받은 데이터를 읽어 사용한다.

소켓통신의 흐름

socket-interface

서버 (Server)

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

  1. socket() 함수를 이용하여 소켓을 생성
  2. bind() 함수로 ip와 port 번호 설정
  3. listen() 함수로 클라이언트의 접근 요청에 수신 대기열을 만들어 몇 개의 클라이언트를 대기 시킬지 결정
  4. accept() 함수를 사용하여 클라이언트와의 연결 대기

클라이언트 (Client)

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

  1. socket() 함수로 CLOSED 소켓 생성
  2. connect() 함수를 이용하여 통신 할 서버의 설정된 ip와 port 번호에 통신 시도
  3. 통신 시도 시, 서버에서 accept() 함수로 클라이언트의 socket descriptor 반환
  4. 클라이언트와 서버가 서로 read(), write() 함수로 반복 통신

참고

소켓(Socket)이란?

소켓이란?

TCP/IP로 통신을 행하는 컴퓨터가 가지는 네트워크 내에서의 주소에 해당하는 IP어드레스와, IP어드레스의 서브(보조)어드레스인 포트 번호를 조합한 네트워크 어드레스를 말한다.

소켓은 네트워크 상에서 서버와 클라이언트 사이의 통신 방법으로 특정 포트를 통해 양방향 통신이 가능하도록 하는 소프트웨어 장치로써 소켓에 데이터를 써보내거나 소켓으로부터 데이터를 읽어들일 수 있다.

소켓은 프로토콜, IP 주소, 포트 넘버로 정의된다.

  • 프로토콜
    프로토콜은 원래 외교상의 언어로써 의례나 국가간의 약속을 의미하며, 통신에서는 어떤 시스템이 다른 시스템과 통신을 원할하게 수용하도록 해주는 통신 규약
  • IP
    전 세계 컴퓨터에 부여된 고유 식별 주소
  • 포트(Port)
    네트워크를 통해 데이터를 주고받는 프로세스를 식별하기 위해 호스트 내부적으로 프로세스가 할당받는 고유한 값
    한 호스트 내에서 네트워크 통신을 하고 있는 프로세스를 식별하기 위해 사용되는 값으로, 같은 호스트 내에서 서로 다른 프로세스가 같은 포트 넘버를 가질 수 없다.

참고