유닉스 소켓에 대한 간단한 설명


20

검색하고 이미 위키 백과 항목 과 다른 곳을 살펴 봤지만 프로그래밍 경험이 있어도 실제로 개념을 파악하지 못합니다. 저를 열 살짜리처럼 취급하고 소켓 통신에 대해 명확하게 설명해 주시겠습니까?


그것들을 사용하여 몇 가지 작은 테스트 앱을 작성하십시오. 두 대의 컴퓨터가 필요하지 않고 시작할 때 두 개의 작은 앱만 있으면됩니다. 빙고.
Patrick Hughes

Beej의 네트워크 프로그래밍 안내서는 유닉스 소켓에 대한 매우 인기있는 소개 텍스트 인 것처럼 보이지만 좋아하지는 않습니다.
Nemanja Trifunovic

나는 @DanielPittman의 대답을 이미지지했다. 만약 내가 써야한다면 같은 대답을 썼을 것이다. 그러나 더 많은 도움이 필요하면 연장 할 것입니다. 질문을 편집하고, 알고있는 것과 모르는 것에 대한 배경 지식을 제공하고, 사용 방법, 내부 작동 방식 또는 이론적 (프로토콜 디자인)에 대한 도움을보고 있는지 또는 시도하고 있는지 알려주십시오. 어떤 목적을 위해 평가?
Dipan Mehta

다음은 책입니다 : Unix Network Programming . 이 질문에 대답 할 사람은이 어머니에게서 배웠을 것입니다. 이 책을 읽으면 질문 자체가 나아질 것입니다.
Dipan Mehta 2012

BSD 소켓을 의미합니까? 유닉스 소켓은 로컬에서만 작동합니다.
imel96

답변:


15

예를 들어 보겠습니다. 주소에없는 친구와 대화 / 채팅하고 싶다고 가정 해 보겠습니다. 이를 위해서는 "통신 채널"을 설정해야합니다. 전화를 사용하여이 통신을 수행하려고합니다. 도시에는 모든 집으로 확장되는 전화선 네트워크가 있다는 것을 알고 있습니다.

이제 집에는 전화 소켓이 있고 친구 집에는 전화 소켓이 있습니다. 통신이 이루어 지려면 통신의 양쪽 끝에서 전화기를 소켓에 꽂아서 친구와 네트워크에 연결해야합니다. 프로그래밍의 소켓은 개념적으로 전화 소켓과 동일합니다.

프로그래밍에는 서로 통신하려는 두 개의 프로세스 (프로그램 실행)가 있습니다. 그러기 위해서는 그들 사이에 커뮤니케이션 링크를 만들어야합니다. 다시 말하지만, 사용 가능한 네트워크가 있으며 일종의 소켓을 사용하여이 네트워크에 연결하면됩니다. 유닉스 소켓은 네트워크에이 연결 / 플러그 기능을 제공하는 소켓 중 하나입니다. 따라서 두 프로그램 각각에는 소켓을 통해 네트워크에 연결하는 작업을 수행하는 코드가 있습니다.

나머지는 세부 사항입니다.


2
평판이 충분하면이를 공감할 것입니다. 귀하의 텍스트는 소켓의 작동 방식을 설명하지 않습니다. Wikipedia에서와 동일한 일반 텍스트입니다. 소켓은 어떻게 습니까? 전화 소켓이 어떻게 연결을 들을 수 있습니까?
녹색

21

유닉스 소켓은 양방향 소켓입니다. IP 기반 소켓과 마찬가지로 친숙하고 아마도 파이프와 비슷합니다.

그들은 흥미로운 특성의 작은 세트를 가지고 있습니다 :

  • "로컬 호스트"의 도메인에만 있습니다. 네트워크를 통해 로컬 컴퓨터에서만 액세스 할 수 없습니다.
  • 파이프처럼 데이터를 바이트 스트림으로 전달하는 "스트림"모드에서 생성 할 수 있습니다.
  • "데이터 그램"모드에서 작성하여 전송 조작 사이의 경계를 유지할 수 있습니다. 이를 통해 바이트 스트림 위에 자체 프레임 프로토콜을 구축하지 않고도 프레임을 유지할 수 있습니다.
  • 파일 시스템 또는 Linux에서 "추상 네임 스페이스"를 "주소"로 사용합니다.
  • OS에 따라 다른 쪽을 가장하거나 연결 소프트웨어를 안전하게 식별하거나 소켓을 통해 파일 핸들을 전달할 수 있습니다.

본질적으로 그것들은 다른 소켓과 동등합니다-파이프보다 약간 더 흥미로운 속성을 가지고 있지만 그렇지 않으면 근본적으로 다르지 않습니다. 일반적으로 파이프보다 IPC 대기 시간이 길고 버퍼가 더 큽니다. 튜닝 할 수는 있지만 플랫폼에 따라 다릅니다.

기억해야 할 마지막 흥미로운 속성은 파일 시스템을 네임 스페이스로 사용한다는 것입니다. 따라서 이전 관계가없는 소프트웨어에서 익명 파이프가 아닌 명명 된 파이프와 비슷합니다. 추상 네임 스페이스 소켓은 동일하지만 "파일"경로가 존재하지 않아도됩니다.

그보다 더 깊은 것은 없습니다-그들은 전형적인 파이프와 근본적으로 다른 슈퍼 비밀 숨겨진 속성을 가지고 있지 않습니다.


3
고맙지 만 여전히 복잡하고 argot으로 가득 차 있습니다.
Elzo Valugi

2
한 줄의 답변으로 "TCP / IP 및 UDP / IP 소켓의 작동 방식을 알고 있습니까? IP 부분이없는 경우에만 동일합니다."
다니엘 피트 맨

나는 기분 나쁘지 않고 단지 이해하고 싶다. 감사. 더 자세히 공부하겠습니다.
Elzo Valugi 2014

4
해당 용어를 사용하여 용어를 정의하면 (예 : "Unix 소켓은 양방향 소켓") 소켓이 무엇을 시작해야할지 모르는 사람에게는 아무 것도 설명하지 않습니다.
Bryan Oakley

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.