맨위로가기

버클리 소켓

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 본문

버클리 소켓(Berkeley socket)은 BSD 소켓이라고도 불리며, 프로세스 간 통신(IPC, Inter-Process Communication)에 사용되는 API (응용 프로그래밍 인터페이스)입니다. 1983년 4.2BSD 유닉스 운영 체제에서 처음 도입되었으며, 네트워크 프로그래밍의 사실상의 표준으로 자리 잡았습니다.
주요 특징:


  • 프로세스 간 통신: 버클리 소켓은 서로 다른 프로세스 간에 데이터를 주고받을 수 있게 해줍니다. 이는 동일한 컴퓨터 내의 프로세스 간 통신(유닉스 도메인 소켓)뿐만 아니라, 네트워크를 통해 다른 컴퓨터의 프로세스와 통신(인터넷 도메인 소켓)하는 데에도 사용됩니다.
  • API: 버클리 소켓은 일반적으로 라이브러리 형태로 제공되는 API입니다. 개발자는 이 API를 사용하여 소켓을 생성, 연결, 데이터 송수신 등의 작업을 수행합니다.
  • 추상화: 소켓은 네트워크 통신 경로의 로컬 끝점에 대한 추상적인 표현(핸들)입니다. 유닉스 철학에 따라 파일 디스크립터(파일 핸들)로 표현되어, 데이터 스트림에 대한 입출력을 위한 공통 인터페이스를 제공합니다.
  • 표준: 버클리 소켓 API는 여러 주요 운영체제 및 프로그래밍 언어로 포팅되어 네트워크 프로그래밍의 표준으로 널리 사용됩니다. POSIX 소켓은 버클리 소켓과 사실상 동의어이며, BSD의 첫 구현을 인정하여 BSD 소켓이라고도 합니다.

버클리 소켓 API 주요 함수:

  • `socket()`: 소켓을 생성합니다. 소켓 타입 (스트림, 데이터그램, Raw, Sequenced Packet 등)을 지정할 수 있습니다.
  • `bind()`: 소켓에 주소(IP 주소와 포트 번호)를 할당합니다. 서버 소켓에서 주로 사용됩니다.
  • `listen()`: 연결 지향형(TCP) 서버 소켓에서, 클라이언트의 연결 요청을 대기합니다.
  • `connect()`: 클라이언트 소켓에서 서버 소켓에 연결을 시도합니다.
  • `accept()`: 서버 소켓에서 클라이언트의 연결 요청을 수락하고, 새로운 소켓을 생성합니다.
  • `send()`, `recv()` / `write()`, `read()`: 데이터를 송수신합니다.
  • `close()`: 소켓을 닫습니다.

소켓 프로그래밍 (C++ 예시, 윈도우):윈도우에서는 Winsock2.h 헤더 파일을 포함하여 버클리 소켓 API를 사용할 수 있습니다. (구 버전인 Winsock.h는 Winsock2와 함께 사용하면 충돌이 발생할 수 있으므로 사용하지 않는 것이 좋습니다.)
참고:

  • "소켓"이라는 용어는 통신 경로의 끝점(endpoint)을 의미하며 엄밀하게 정의된 용어는 아닙니다.
  • BSD는 "버클리 소프트웨어 배포판(Berkeley Software Distribution)"의 약자입니다.




본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com