Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# 네트워킹 기초: System.Net 네임스페이스로 URI, SSL, DNS 다루기

C# 네트워킹이란?

.NET Framework는 계층적이고 확장 가능하며 완전히 관리되는(managed) 네트워킹 서비스를 제공합니다. 이러한 서비스들은 별도의 복잡한 설정 없이도 애플리케이션에 손쉽게 통합할 수 있으며, 모든 네트워크 기능은 System.Net 네임스페이스를 통해 접근합니다.

이 글에서는 C#에서 네트워킹을 구현하는 핵심 요소인 Uri 클래스, SSL 암호화 연결, 그리고 DNS 조회 방법을 예제 코드와 함께 살펴보겠습니다.

Uri 클래스로 리소스 표현하기

C#의 Uri 클래스는 URI(Uniform Resource Identifier, 통합 자원 식별자)를 객체 형태로 표현해 줍니다. 웹 요청을 생성하려면 먼저 대상 주소를 Uri 객체로 만든 뒤, 이를 WebRequest에 전달하면 됩니다.

Uri uri = new Uri("https://www.example.com/");
WebRequest w = WebRequest.Create(uri);

WebRequest.Create()의 유연성

WebRequest.Create() 메서드는 Uri 객체뿐만 아니라 문자열 형태의 URL도 직접 받을 수 있어 상황에 맞게 편리하게 사용할 수 있습니다.

SSL을 이용한 보안 연결

System.Net 네임스페이스는 SSL(Secure Socket Layer)을 사용한 연결 암호화를 지원합니다. 동작 방식은 간단합니다.

  • URI가 https:로 시작하면 → SSL 암호화 연결 사용
  • URI가 http:로 시작하면 → 암호화되지 않은 일반 연결 사용

FTP에서 SSL을 적용하려면 GetResponse() 메서드를 호출하기 전에 EnableSsl 속성을 true로 설정하면 됩니다.

String uri = "https://www.example.com/";
WebRequest w = WebRequest.Create(uri);

String uriServer = "ftp://ftp.example.com/new.txt";
FtpWebRequest r = (FtpWebRequest)WebRequest.Create(uriServer);
r.EnableSsl = true;
r.Method = WebRequestMethods.Ftp.DeleteFile;

위 예제에서는 FTP 서버의 파일 삭제 요청에 SSL 보안을 적용했습니다. 민감한 데이터를 주고받는 경우에는 항상 SSL 사용을 권장합니다.

DNS 조회: 호스트 이름과 IP 주소 얻기

System.Net 네임스페이스의 DNS 관련 기능을 활용하면 로컬 컴퓨터의 호스트 이름과 IP 주소를 쉽게 확인할 수 있습니다. 아래 예제는 Dns.GetHostEntry, Dns.GetHostName 메서드와 IPHostEntryAddressList 속성을 사용하는 방법을 보여줍니다.

예제 코드

using System;
using System.Net;

class Program {
    static void Main() {

        String hostName = string.Empty;
        hostName = Dns.GetHostName();
        Console.WriteLine("Hostname: " + hostName);
        IPHostEntry myIP = Dns.GetHostEntry(hostName);

        IPAddress[] address = myIP.AddressList;

        for (int i = 0; i < address.Length; i++) {
            Console.WriteLine("IP Address {0} : {1}", i, address[i].ToString());
        }
        Console.ReadLine();
    }
}

코드 설명

  1. Dns.GetHostName(): 현재 컴퓨터의 호스트 이름을 가져옵니다.
  2. Dns.GetHostEntry(hostName): 호스트 이름에 해당하는 DNS 정보를 조회하여 IPHostEntry 객체를 반환합니다.
  3. AddressList: 해당 호스트에 연결된 모든 IP 주소를 IPAddress 배열 형태로 담고 있습니다. 하나의 컴퓨터에 여러 네트워크 인터페이스(IPv4, IPv6 포함)가 있을 수 있으므로 배열로 반환됩니다.

마무리

C#의 System.Net 네임스페이스는 URI 처리부터 SSL 보안 연결, DNS 조회까지 네트워크 프로그래밍에 필요한 필수 기능을 체계적으로 제공합니다. 위 예제들을 응용하면 웹 요청, FTP 파일 전송, 네트워크 정보 진단 등 다양한 기능을 손쉽게 구현할 수 있습니다.