소켓이란 ?
프로세스가 네트워크를 통해 데이터를 내보내거나 받기위한 실질적인 창구 역할을 한다. 데이터의 송수신을 위해서는 반드시 소켓을 열어서 소켓을 통해 쓰고 읽어야한다.
- TCP 와 UDP 로 종류가 나뉜다.
소켓은 프로토콜, IP, 포트 넘버로 정의 된다.
소켓은 떨어져 있는 두 호스트를 연결해 주는 도구로 인터페이스 역할을 하는데, 데이터를 주고 받을 수 있는 구조체로 소켓을 통해 데이터 통로가 만들어진다.
소켓은 역할에 따라
서버 소켓
, 클라이언트 소켓
으로 나뉜다.소켓 통신의 흐름
서버
클라이언트 소켓의 연결 요청을 대기하고, 요청이 오면 클라이언트 소켓을 생성하여 통신이 가능하게 한다.
- socket() 을 사용하여 소켓 생성
- bind() 를 사용해 ip 와 port 번호를 설정
- listen() 을 사용해 클라이언트의 접근 요청에 수신 대기열을 만들어 몇 개의 클라이언트를 대기 시킬지 결정
- accept() 를 사용해 클라이언트와 연결
클라이언트
데이터 송수신이 일어나는 것은 클라이언트 소켓이다.
- socket()을 통해 소켓을 연다.
- connect()를 통해 통신할 서버의 ip와 port번호로 통신 시도
- 서버가 accept()를 사용해 클라이언트의 socket descriptor를 반환
- 클라이언트와 서버가 read(), write()으로 데이터 통신(반복)
Loading Comments...