보통 IP 주소를 기억하기 힘들기 때문에 호스트명 을 사용하여 어떤 컴퓨터 인지를 표현 하는데 로컬 네트워크 에서는 보통 컴퓨터 명을 호스트명 으로 하고 인터넷 상에서는 호스트 이름과 도메인 이름을 사용한다 예를 들어 로컬 에서는 AlexPC 와 같은 호스트 명을 사용할 수 있고 인터넷 상에서는 www.naver.com 과 같은 호스트명 을 사용한다
호스트/도메인 명에서 IP 주소 얻기
호스트/도메인 명을 IP 주소로 변경하기 위해서는 DNS 를 사용하는데 .NET 에서는 Dns 클래스를 통해 호스트 정보를 얻어 올 수 있다 Dns.GetHostEntry(호스트명) 메서드는 정적 메서드로서 호스트명에 대한 IP 정보 Alias 정보 등을 리턴하는데 이렇게 리턴되는 정보를 IPHostEntry 객체에 담게 된다 해당 호스트에 대한 IP 주소는 복수 개일 수 있으므로 IPHostEntry 객체의 AddressList 속성에 IPAddress[] 배열의 형태로 저장된다 아래 예제는 네이버 호스트명에 대한 IP 정보를 보여주는 예인데 이 호스트는 (현재)4개의 ip 주소를 가지고 있다
//// 호스트/도메인 명에서 IP 알아내기
using System.Net;
/// 인터넷 호스트명 정보 얻기
IPHostEntry hostEntry = Dns.GetHostEntry("www.naver.com");
Console.WriteLine(hostEntry.HostName);
foreach (IPAddress ip in hostEntry.AddressList)
{
Console.WriteLine(ip);
}
// 로컬 호스트명 정보 얻기
string hostname = Dns.GetHostName();
IPHostEntry localhost = Dns.GetHostEntry(hostname);
IP 주소에서 호스트/도메인명 얻기
DNS가 호스트/도메인명으로 부터 IP 주소를 가져오는 것 이라면 Reverse DNS 는 반대로 IP 주소로 부터 호스트/도메인 명을 가져오는 기능이다 rDNS 가 사용되는 한 예로 이메일 스팸 차단 기능을 들 수 있는데 어떤 IP로부터 도착한 메일을 필터링 할때 IP를 도메인명으로 변경한 후 타당한 호스트/도메인인지 검사하는 방식이다
ReverseDNS 가 동작하기 위해서는 DNS 설정에서 해당 서버를 PTR 레코드에 별도로 적어 주어야 한다 (*통상 적으로 DNS 설정에서 A 레코드가 서버 IP를 등록하는것)
아래 예제는 IP 주소로 부터 호스트 / 도메인 명을 얻어내는 것으로서 보통 회사 내 인트라 넷 에서는 잘 동작할 것이고 인터넷 상에서는 DNS 설정에 따라 동작 할 수도 있고 하지 않을 수도 있다
// IP 에서 호스트명 알아내기
IPAddress ipaddr = IPAddress.Parse("223.130.200.219");
IPHostEntry iPHostEntry = Dns.GetHostEntry(ipaddr);
Console.WriteLine(iPHostEntry.HostName);
EndPoint (IPEndPoint 클래스)
TCP나 UDP는 IP 주소와 함께 포트번호를 사용한다 이러한 종단점을 표현하기 위해 IPEndPoint 클래스를 사용한다 IPEndPoint 는 IP 주소와 포트를 받아들인 것으로 ToString() 메서드를 호출하면 IP주소:포트 형식으로 문자열을 리턴한다
IPAddress ip = IPAddress.Parse("74.125.28.99");
IPEndPoint ep = new IPEndPoint(ip, 80);
Console.WriteLine(ep.ToString()); // "74.125.28.99:80" 출력
'개발일지' 카테고리의 다른 글
구매 관리 프로그램 예제 (1) | 2024.11.05 |
---|---|
영업 관리 프로그램 예제 (0) | 2024.11.05 |
시리얼 통신(Serial Port) (0) | 2024.10.10 |
SpringLegacy Project -2- (0) | 2024.02.07 |
SpringLegacy Project -1- (0) | 2024.02.06 |