Socket이 과연 무엇일까?

박승우·2024년 8월 7일
0

자 85번째 키워드인 'Socket'을 알아 볼 것이다.

소켓프로그래밍은 네트워크 및 통신, 클라이언트과 서버 관련이 있기 때문에 알아보았다.

Socket이 뭐에요?

Socket은 컴퓨터 네트워크에서 통신을 수행하기 위한 양 끝단을 의미한다.

소켓은 네트워크에서 데이터를 보내고 받기 위한 인터페이스로서, 클라이언트와 서버 간의 통신을 가능하게 한다.

1. 소켓의 기본 개념

  • 소켓(Socket): 네트워크를 통해 데이터를 주고받기 위한 양 끝단의 하나이다.
    소켓은 IP 주소와 포트 번호를 조합하여 통신의 종착지를 지정한다.

  • IP 주소: 인터넷에 연결된 각 기기를 식별하는 고유한 주소이다.

  • 포트 번호: 한 컴퓨터 내에서 여러 네트워크 서비스를 구분하는 숫자이다.

2. 소켓의 종류

  1. 스트림 소켓 (Stream Socket): TCP 프로토콜을 기반으로 하며, 신뢰성 있는 데이터 전송을 보장한다. 데이터는 순차적으로 전송되며 손실되지 않는다.

  2. 데이터그램 소켓 (Datagram Socket): UDP 프로토콜을 기반으로 하며, 신뢰성이 없지만 빠른 전송을 제공한다. 데이터가 순서대로 도착하지 않을 수도 있고, 손실될 수도 있다는 점이 있다.

3. 소켓 프로그래밍

소켓 프로그래밍은 소켓을 사용하여 네트워크 상에서 데이터를 주고받는 프로그래밍 기법이라고 한다.
소켓 프로그래밍을 통해 클라이언트와 서버 간의 통신을 구현할 수 있다.

클라이언트 - 서버 모델

  • 서버: 서비스를 제공하는 컴퓨터 또는 프로그램이다. 서버는 특정 포트에서 클라이언트의 요청을 기다진다.

  • 클라이언트: 서비스를 요청하는 컴퓨터 또는 프로그램이다. 클라이언트는 서버에 연결 요청을 보낸다.

4. 소켓의 동작 방식

  1. 서버 소켓 생성: 서버는 socket 함수를 사용하여 소켓을 생성한다.

  2. 바인딩: 서버 소켓은 bind 함수를 사용하여 특정 IP 주소와 포트에 바인딩된다.

  3. 리스닝: 서버는 listen 함수를 호출하여 클라이언트의 연결 요청을 기다린다.

  4. 연결 수락: 클라이언트가 연결을 요청하면, 서버는 accept 함수를 사용하여 연결을 수락한다.

  5. 데이터 송수신: 서버와 클라이언트는 send 및 recv 함수를 사용하여 데이터를 주고받는다.

  6. 연결 종료: 통신이 끝나면 close 함수를 사용하여 소켓을 닫는다.

profile
게임을 좋아하는 사람 입니다!

0개의 댓글