241212 CS 스터디

apple-mint·2024년 12월 12일

CS study

목록 보기
14/15

소켓 프로그래밍

(1) 소켓=네트워크 소켓

소켓

  • 프로세스가 주고받는 데이터의 종착점
  • 프로세스 간 네트워크 통신의 엔드포인트
  • 프로세스가 소켓을 열고 읽고 쓸 수 있으므로 많은 운영체제에서 파일로 간주됨
  • 소켓 디스크립터로 소켓을 식별하고 이를 통해 소켓 입출력 기능 구현

(2) 소켓 통신

  • HTTP 통신은 기본적으로 요청과 응답으로 이루어짐
  • 클라이언트에 송수신을 시작하며 송수신이 끝나면 연결이 끝나므로 정보 전달이 다수 발생할 경우 연결을 생성하고 해제하는 과정을 반복해야 함
  • 소켓을 활용해 클라이언트, 서버가 특정한 포트를 통해 실시간으로 양방향 통신이 가능하게 함으로써 위와 같은 단점을 보완함
  • 채팅, 온라인 게임과 같이 지속적이고 반복적인 통신을 보다 적은 자원으로 가능하게 만듦
  • 서버에서도 클라이언트 방향으로 먼저 정보를 제공할 수 있어 클라이언트와 무관하게 발생하는 이벤트에 대한 정보를 정확한 시점에 전달하는 것이 가능
    소켓 통신 흐름
  1. socket()으로 소켓 생성
  2. bind()으로 소켓을 해당하는 IP주소, 포트에 연결
  3. listen()으로 클라이언트 요청을 받을 수 있도록 연결 대기
  4. connect()로 연결 요청
  5. accept()로 연결 수립 시 소켓 객체와 클라이언트 주소 반환
  6. send(), recv()로 데이터 송수신
  7. close()으로 소켓 종료

소켓 통신 1-2단계
소켓 통신 3-4단계
소켓 통신 5-6단계

참고

0개의 댓글