본문 바로가기

C#/네트워크

소켓

728x90

소켓(Socket)

네트워크로 연결돼있는 두 컴퓨터가 데이터를 주고 받을 수 있게 하는 것이 네트워크 프로그래밍이다.네트워크로 연결되어 있는 두 컴퓨터가 데이터를 주고받기 위해서는 물리적인 연결이 필요하다.

그런데 현재는 대부분의 컴퓨터가 인터넷이라는 거대한 네트워크로 연결돼있으니 물리적인 연결을 신경쓰지 않아도 된다. 때문에 SW를 통한 데이터 송수신 방법만 고민하면 된다.

그런데 운영체제에서 '소켓'이라는 것을 제공하기 때문에 이 역시 고민할 필요가 없다. 소켓은 물리적으로 연결된 네트워크상에서 데이터 송수신에 사용할 수 있는 소프트웨어적인 장치를 의미한다.

그래서 데이터 송수신의 원리는 몰라도 소켓을 이용하면 데이터를 주고받을 수 있다. 이때 네트워크 프로그래밍을 소켓 프로그래밍이라고도 한다.

데이터를 주고받아야하는데 컴퓨터간의 거리가 멀리 떨어져있다면 인터넷이라는 네트워크 망에 연결해야한다. 이때 소켓은 네트워크 망의 연결에 사용되는 도구이다.

연결이라는 의미가 담긴 소켓은 네트워크를 통한 두 컴퓨터의 연결을 의미하기도 한다.

 

소켓 API

네트워크 프로그래밍에 있어 소켓은 네트워크 표준 API로 여겨지고 있는데, 소켓은 버클리 유닉스에서 처음 개발되었으며, 다양한 OS에서 네트워크 표준으로 사용되고 있다. 예를 들어, 소켓 API는 가장 대중적인 TCP/IP를 비롯하여 AppleTalk, IPX 프로토콜 등에서 사용된다.

 

WinSock API

마이크로소프트는 버클리 유닉스 소켓 API를 윈도우즈에서 구현한 WinSock 1.1 (Windows Sockets API)을 1992년에 출시하였다. 이때 윈속(WinSock)은 winsock.dll 의 형태로 설치되어 사용하였는데 Windows 95에서 OS의 일부로 추가되었으며, 현재는 WinSock 2 (WinSock 2.x 통칭) 을 사용하고 있다. 일반적으로 WinSock API를 사용하기 위해서는 C/C++ 프로그램을 사용한다.

 

.NET 네트워크 클래스

.NET Framework은 WinSock API 를 사용하기 위해 Wrapper 클래스들을 제공하고 있는데, 핵심 클래스로 System.Net.Sockets 네임스페이스 안에 있는 TcpClient, TcpListner, UdpClient, Socket 클래스들이 있다.

TcpClient는 TCP 클라이언트를 위한 기능들을 제공하고, TcpListner는 TCP 서버에 대한 기능을 제공한다. UdpClient는 UDP 클라이언트와 서버 기능을 제공하고, Socket 클래스는 Low Level의 소켓 프로그래밍 기능을 제공한다. TcpClient, TcpListner, UdpClient는 내부적으로 Socket 클래스를 사용하고, Socket 닷넷 클래스는 WinSock API를 호출한다.

 

 

[출처]

https://www.csharpstudy.com/net/article/2-WinSock%ea%b3%bc--NET-%ed%81%b4%eb%9e%98%ec%8a%a4

https://andjjip.tistory.com/274

728x90

'C# > 네트워크' 카테고리의 다른 글

네트워크 소켓 통신을 하는 방법  (0) 2023.11.06
C# 네트워크 프로그래밍  (0) 2023.11.06