소켓이란?

누군가 소켓이 무엇인지 설명해 주시겠습니까? SSL 등의 맥락에서 많은 약어에서 볼 수 있습니다.

또한 소켓이라고 부르는 이유는 무엇입니까? 순전히 그들이 발명 한 이름이기 때문입니까? 아니면 그들이 떠 올린 첫 번째 이름 이었습니까?

댓글

  • 평신도 ' 용어로 : 소켓은 전화기입니다. ' 손에 들고있는 것이 다른 휴대 전화와 대화 할 수있게 해줍니다. 비유는 약간 나뉩니다. 대부분의 전화 대화는 P2P 방식입니다. 소켓 연결은 클라이언트 대 서버입니다. 클라이언트 (예 : 브라우저와 같은 워크 스테이션 소프트웨어)는 서버 (예 : 웹 서버, 파일 서버, 인증 서버 또는 기타)에 연결합니다. 비유의 또 다른 결함 : 소켓 연결을 닫으면 소켓이 파괴되고 새 연결을 설정하기 전에 새 소켓을 만들어야합니다.
  • It '는 비유로 나쁘지 않습니다. 서버는 콜센터 일 뿐이며 한 번에 수백 건의 활성 통화를 가질 수 있습니다.

응답

소켓은 통신을위한 논리적 끝 점일뿐입니다. 그들은 전송 계층에 존재합니다. 소켓에서 사물을 보내고받을 수 있으며 소켓에 바인딩하고 수신 할 수 있습니다. 소켓은 프로토콜, 머신 및 포트에 따라 다르며 패킷 헤더에서 주소가 지정됩니다.

Beej의 네트워크 가이드 프로그래밍 프로세스 간 통신 은 모두 소켓 사용 방법에 대한 좋은 정보를 제공하며 이 정확한 질문에 답하십시오 .

답변

간단한 용어로 소켓은 다음을 나타내는 의사 파일입니다. 소켓이 생성되면 (적절한 프리미티브와 적절한 매개 변수를 사용하여 다른 호스트를 식별) 소켓에 대한 쓰기가 전송되는 네트워크 패킷으로 바뀌고 네트워크에서 수신 된 데이터를 읽을 수 있습니다. 소켓에서.

한 가지 점에서 소켓은 파이프와 매우 유사합니다. 소켓을 사용하는 프로그램에서는 파일처럼 보이지만 디스크에 대한 읽기 또는 쓰기가 발생하지 않고 통신을 허용합니다. 다른 프로그램 (파이프의 경우 로컬, po 소켓의 경우 눈에 띄게 원격). 또한 언급했듯이 양방향 통신을 제공합니다 (올바르게 연결된 파이프 쌍과 매우 유사).

마지막으로 단일 시스템의 프로그램이 TCP와 같은 표준 네트워크 프로토콜을 사용하여 통신하는 것이 일반적입니다. ; 동일한 호스트로 돌아 가기 위해 네트워크 하드웨어 (있는 경우!), 컴퓨팅 체크섬 등으로 이동하는 것은 낭비입니다. 바로 Unix 도메인 소켓이 들어오는 곳입니다. 이들은 일반 소켓과 매우 유사합니다. 단, 원격 프로세스가 아닌 동일한 호스트의 프로세스를 연결하고 네트워크 리소스를 전혀 사용하지 않습니다. 이러한 방식으로 프로세스 간 통신의 매개체입니다.

트리플이 언급했듯이 , BSD의 역사 과정에서 파이프는 소켓보다 먼저 도입되었으며 소켓이 존재하면 다시 구현되었습니다. 동일한 참조 인 FreeBSD 운영 체제의 설계 및 구현 에서 파이프는 그런 다음 성능상의 이유로 소켓이 아닌 구현으로 되돌 렸습니다. 이것은 파이프가 유사점을 공유한다는 사실을 분명히 강조합니다.

댓글

답변

이제 무엇입니까?

소켓 또는 “소켓”은 여러 가지가 될 수 있습니다.

우선 생각입니다. 모델 및 애플리케이션 프로그래밍 인터페이스 (API) . 즉, 정확히 지정된 계약에 따라 따라야 할 규칙 세트와 무언가를 수행하는 프로그램을 작성하는 데 사용할 수있는 기능 세트가 있습니다. 이 특별한 경우에 무언가 는 다른 프로그램과 데이터를 교환하는 것을 의미합니다.

소켓 API는 일반적으로 “통신”의 세부 사항을 광범위하게 추상화합니다. 하나의 (거의) 일관되고 동일한 쿠키 커터 형식을 통해 누구와 어떻게 대화하는지 캡슐화합니다.
다른 “도메인”(예 :”유닉스 소켓”또는 “인터넷 소켓”)과 서로 다른 유형의 통신 (예 : “데이터 그램”소켓 또는 “스트림”소켓)과 서로 다른 수신자와 대화하며 모든 것이 정확히 동일하게 작동합니다 (글쎄요, 99 %, 분명히 고려해야 할 사소한 차이가 있습니다.

동일한 컴퓨터에서 다른 프로그램과 대화하는지 여부를 알 필요가 없습니다 (알고 싶지도 않습니다!). 다른 컴퓨터에서 또는 해당 컴퓨터 사이에 IPv4 또는 IPv6 네트워크가 있는지 또는 들어 본 적이없는 다른 프로토콜이 있는지 여부.

socket 는 특수한 종류의 파일 인 “소켓 “을 생성하는 라이브러리 함수 (또는 시스템 호출)의 이름이기도합니다. 유닉스에서는 파일입니다).

어떻게 비교합니까?

소켓은 파이프와 동일한 범주에 속합니다. 이름 파이프

파이프는 o의 수단입니다. 동일한 컴퓨터에서 독자와 작성자 (둘 다 프로그램 임) 사이의 통신. 이것은 데이터의 스트림 을 시뮬레이션합니다 (예 : TCP와 유사).
즉, 파이프의 관점에서 개별 “메시지”또는 “데이터 블록”이 존재하지 않습니다. 복사 할 수 있습니다. 모든 양의 데이터를 “한 쪽 끝”으로, 다른 사람은 사용자가 입력 한 것과 동일한 바이트 순서로 “다른 쪽 끝”에서 원하는 양의 데이터를 읽을 수 있습니다 (반드시 동일하지는 않으며 반드시 한 번에있을 필요는 없음). .

이름이 지정된 파이프는 단순히 파일 시스템에서 이름을 소유하는 파이프입니다. 즉, 파일처럼 보이고 동작하는 것입니다. 디렉토리 목록에 나타나며 열거 나 쓸 수 있습니다. 소켓 특수 파일 (이름이 지정된 파일)을 만들 수도 있습니다. 소켓).

반면에 소켓은 양방향 ( ” 이중 “) 통신, 즉 동일한 소켓에서 쓰고 읽을 수 있으며 양방향 통신을 위해 두 개의 별도 소켓이 필요하지 않습니다.
또한 소켓은 스트림 (파이프와 동일)으로 작동 할 수 있습니다. ) 또는 개별적이고 신뢰할 수없는 메시지를 보내거나 개별적이고 순서가 지정된 메시지를 보낼 수 있습니다 (처음 두 개는 모든 도메인에서 작동하고 마지막 두 개는 “unix 도메인”에서만 작동). 누군가에게 메시지를 보내거나 스트림을 시뮬레이션 할 수 있습니다. 소켓은 일부 조건에서 일대 다 통신 (멀티 캐스트) 형태를 수행 할 수도 있습니다.

이 점을 염두에두고 소켓이 훨씬 더 복잡한 작업을 수행하고 일반적으로 은 파이프보다 더 많은 오버 헤드를 갖지만 (기본적으로 버퍼를 오가는 간단한 memcpy에 불과합니다!), 로컬 소켓을 생성하는 경우 (예 : 동일한 컴퓨터에서) 운영 체제는 일반적으로 고도로 최적화 된 빠른 경로를 적용하므로 실제로 큰 차이가 없습니다.

프로세스 간 통신 때때로 네트워크와 관련하여 언급됩니다.

예, 소켓은 프로세스 간 통신의 한 가지 가능한 방법입니다 (공유 메모리 및 파이프는 대안의 예입니다). 동시에 위에서 설명한 것처럼 “네트워킹”에 사용됩니다.

Answer

A socket an abstraction . 운영 체제가 제한된 리소스의 사용을 임의의 수의 애플리케이션으로 조정하고 구성 할 수있는 방식으로 애플리케이션이 시스템 리소스 (이 경우 네트워크 연결)를 활용할 수있는 인터페이스를 제공합니다.

소켓을 통해 전송되는 데이터를 메일 봉투로 생각할 수 있다면 소켓은 메일 상자가됩니다. 집 (프로그램)에 우편함 (소켓)을 부착하고 보내는 메일 (데이터)을 그 안에 넣습니다. 예정된 시간에 우편 배달원 (운영 체제)이 나와서 보내는 메일을 집어 들고 동일한 사서함에 들어오는 메일을 삭제합니다. 귀하의 발신 메일은 모든 이웃의 우편물과 함께 우편 배달원의 트럭 (네트워크 연결)을 통해 귀하를 대신하여 수신자에게 전달됩니다. 이렇게하면 편지를 직접 전달하는 데 드는 비용, 시간, 어려움없이 멀리 떨어진 사람들과 통신 할 수 있습니다.

그들이 “소켓”이라고 부르는 이유는 다음과 같습니다. 발명가들은 원하는대로 부르게되는데 아마 그곳에서 큰 역할을 할 것입니다.하지만 제 생각에는 나쁜 이름은 아닙니다. 🙂

Answer

IP를 통한 udp 또는 tcp의 경우

소켓 주소는 IP 주소와 포트 번호의 조합입니다.

IP 주소는 예를 들어 인터넷상의 기계 unix.stackexchange.com has address 198.252.206.140

그러나 각 시스템은 둘 이상의 서비스를 제공 할 수 있어야하므로 대부분의 시스템은 포트 80에서 http (웹 페이지)를 제공하고 포트에서 ssh를 제공합니다. 22 등

unix.stackexchange.com:80 포트 80 / unix.stackexchange.com (소켓)은이 웹 사이트의 액세스 포인트입니다.

그러나 다른 유형의 소켓이 있습니다. 아래 설명을 참조하십시오.

설명

  • tcp / ip는 소켓. tcp / ip와 관련이없는 다른 것들이 있습니다.
  • 소켓의 종류가 몇 개입니까?
  • @AbdulAlHazred, ip 네트워킹에 사용되는 4 가지 일반적인 유형을 알고 있습니다. ip6과 동일, 유닉스에 2 개, IPX에 2 개. 나는 ax25, atm 또는 appletalk를 보지 않았습니다. Linux에서 지원되는 다른 프로토콜이 있으며 Linux에서 지원하지 않는 프로토콜이 있습니다. 대부분의 경우 각 프로토콜에는 스트림 (tcp) 및 데이터 그램 (udp) 소켓이 있습니다. 원시 소켓도 일반적이며 imcp에는 소켓 인터페이스도있을 수 있습니다.
  • 요점은이 답변이 한 가지 유형의 소켓 만 다루고 있다는 점에서 불완전하며 일반적으로 소켓을 다음과 같이 표현한다는 점에서 오해의 소지가 있습니다. 항상 네트워크 소켓, 특히 IP (AF_INET) 소켓 인 경우

Answer

네트워킹에 대해 질문하신 것 같습니다. 따라서 TCP 서비스는 소켓을 통신 지점으로 사용하며 IP 주소, 프로토콜 및 포트 번호로 구성됩니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다