컴퓨터 네트워킹을위한 소켓 프로그래밍 개요

소켓은 컴퓨터 네트워크 프로그래밍의 가장 기본적인 기술 중 하나입니다. 소켓을 사용하면 네트워크 소프트웨어 응용 프로그램이 네트워크 하드웨어 및 운영 체제에 기본 제공되는 표준 메커니즘을 사용하여 통신 할 수 있습니다.

인터넷 소프트웨어 개발의 또 다른 기능처럼 들리 겠지만, 소켓 기술은 웹보다 오래 전에 존재했습니다. 또한 오늘날 가장 많이 사용되는 네트워크 소프트웨어 응용 프로그램은 소켓을 사용합니다.

어떤 소켓이 네트워크에서 할 수 있습니까?

소켓은 정확하게 두 개의 소프트웨어 간 단일 연결을 나타냅니다 (소위 지점 간 연결). 두 개 이상의 소프트웨어가 다중 소켓을 사용하여 클라이언트 / 서버 또는 분산 시스템과 통신 할 수 있습니다. 예를 들어 많은 웹 브라우저는 서버에 만들어진 소켓 그룹을 통해 단일 웹 서버와 동시에 통신 할 수 있습니다.

소켓 기반 소프트웨어는 대개 네트워크의 두 컴퓨터에서 실행되지만 소켓을 사용하여 단일 컴퓨터에서 로컬로 ( 프로세스 간 ) 통신 할 수도 있습니다. 소켓은 양방향 이므로 연결의 양쪽에서 데이터를 보내고받을 수 있습니다. 때로는 통신을 시작하는 한 응용 프로그램을 "클라이언트"라고하고 다른 응용 프로그램을 "서버"라고하지만이 용어는 피어 투 피어 네트워킹에 혼란을 야기하며 일반적으로 피해야합니다.

소켓 API 및 라이브러리

표준 응용 프로그램 프로그래밍 인터페이스 (API) 를 구현하는 여러 라이브러리가 인터넷에 있습니다. 최초의 주류 패키지 인 Berkeley Socket Library는 여전히 UNIX 시스템에서 널리 사용되고 있습니다. 매우 일반적인 또 다른 API는 Microsoft 운영 체제 용 Windows 소켓 (WinSock) 라이브러리입니다. 다른 컴퓨터 기술에 비해 소켓 API는 매우 성숙합니다. WinSock은 1993 년부터 사용되었으며 1982 년부터 버클리 소켓을 사용하고 있습니다.

소켓 API는 비교적 작고 간단합니다. 함수의 대부분은 read () , write () , close () 와 같은 파일 입출력 루틴에서 사용되는 것과 유사하다. . 사용하는 실제 함수 호출은 선택한 프로그래밍 언어와 소켓 라이브러리에 따라 다릅니다.

소켓 인터페이스 유형

소켓 인터페이스는 세 가지 범주로 나눌 수 있습니다.

  • 가장 일반적인 유형 인 스트림 소켓은 두 통신 당사자가 먼저 소켓 연결을 설정 한 다음 해당 연결을 통해 전달 된 모든 데이터가 전송 된 순서와 동일한 순서로 도착하도록 보장합니다. 즉 연결 지향 프로그래밍 모델.
  • 데이터 그램 소켓은 "연결없는 (connection-less)"의미를 제공합니다. 데이터 그램을 사용하면 연결은 스트림처럼 명시 적이지 않고 암시 적입니다. 어느 쪽이든 필요에 따라 단순히 데이터 그램을 보내고 다른 쪽이 응답하기를 기다립니다. 메시지가 전송 중에 손실되거나 순서가 잘못되어 수신 될 수 있지만 이러한 문제를 처리하는 것은 응용 프로그램의 책임이며 소켓이 아닙니다. 데이터 그램 소켓을 구현하면 일부 응용 프로그램에서 스트림 소켓을 사용하는 것과 비교하여 성능이 향상되고 유연성이 향상되어 일부 상황에서 사용을 정당화 할 수 있습니다.
  • 원시 소켓 인 세 번째 유형의 소켓은 TCPUDP 와 같은 표준 프로토콜에 대한 라이브러리의 내장 지원을 우회합니다. 원시 소켓은 사용자 정의 저수준 프로토콜 개발에 사용됩니다.

네트워크 프로토콜의 소켓 지원

최신 네트워크 소켓은 일반적으로 인터넷 프로토콜 (IP, TCP 및 UDP)과 함께 사용됩니다. 인터넷 프로토콜 용 소켓을 구현하는 라이브러리는 스트림 용 TCP, 데이터 그램 용 UDP 및 원시 소켓 용 IP 자체를 사용합니다.

인터넷을 통해 통신하기 위해 IP 소켓 라이브러리는 IP 주소 를 사용하여 특정 컴퓨터를 식별합니다. 인터넷의 많은 부분이 이름 지정 서비스와 함께 작동하므로 사용자 및 소켓 프로그래머는 주소 ( 예 : 208.185.127.40) 대신 이름으로 컴퓨터를 사용할 수 있습니다 ( 예 : "thiscomputer.wireless.about.com"). 스트림 및 데이터 그램 소켓은 IP 포트 번호 를 사용하여 여러 응용 프로그램을 서로 구별합니다. 예를 들어, 인터넷상의 웹 브라우저는 웹 서버와의 소켓 통신을 위해 포트 80을 기본값으로 사용하는 것을 알고 있습니다.