008-IP地址转换与域名解析

TCP/IP(传输控制协议/网际协议)不是一个协议,而是一组协议的总称,包括IP、TCP、UDP、ICMP、ARP等。它规范了网络上的所有通信设备,尤其是一个主机与另一个主机之间的数据交换格式以及传送方式。


image.png

IP地址

给每个连接在因特网上的主机(或路由器)分配一个在全世界范围内惟一的标识符。一个IP地址主要由两部分组成:网络地址和主机地址。
网络地址由因特网权力机构分配,主机地址由各个网络的管理员统一分配。
IP地址编制方案有两种:IPV4和IPV6 。
IPV4:二进制表示共32位(4个字节)
IPV6:二进制表示共128位(16个字节)
在IPV4编制方案中,一般使用点分十进制表示法表示IP地址。例如:192.168.3.1

子网掩码

子网掩码用于屏蔽IP地址的一部分以区别网络标识和主机标识。把所有的网络位(二进制)用1来标识,主机位用0来标识。
例如:对于IP地址192.168.0.X,可以将子网掩码设置为255.255.255.0,对于IP地址192.168.0.X,其网络标示部分为192.168.0;主机标示为:X

端口

IP地址仅仅能够具体标识到某台主机,而端口则表示与计算机上的哪个进程通信。
根据IP地址找到是与哪台机器通信,根据端口号找到是与该机器的哪个进程通信。 (一个进程可能会使用多个端口)
端口地址的范围是十进制的0~65535

IPAddress类

IPAddress类(System.Net命名空间下):常用IPAddress的
Parse方法将IP地址字符串转换为IPAddress的实例。�例如:IPAddress ip = IPAddress.Parse(“192.168.1.1”);
构造函数有:
(1)public IPAddress (byte[] address)
byte[] iparray = new byte[] { 143,24,20,36 };
IPAddress localIP = new IPAddress(iparray);
(2)public IPAddress (long newAddress)
long ip = 0x2414188f;
IPAddress localIP = new IPAddress(ip);

IPAddress类常用属性

  • Any 提供一个IPv4地址,指示服务器应侦听所有网络接口上的客户端活动。(等效于0.0.0.0)
  • Broadcast 提供IPv4广播地址(等效于255.255.255.255)
  • Loopback 表示IPv4回送地址(等效于127.0.0.1)
  • None 表示Socket不应侦听客户端活动(不使用任何网络接口)。
  • IPv6Any 提供可用的IPv6地址
  • IPv6Loopback 表示IPv6回送地址
  • IPv6None 提供不使用任何网络接口。

IPEndPoint类

IPEndPoint类包含了连接到主机上的服务所需的IP地址和端口信息。
IPEndPoint类常用的构造函数为:
public IPEndPoint(IPAddress, int);
其中第一个参数指定IP地址,第二个参数指定端口号。

IPHostEntry类

IPHostEntry类的对象中包含了与主机相关的信息。常用属性:
(1)AddressList属性:�获取或设置与主机关联的IP地址列表,是一个IPAddress类型的数组,包含了指定主机的所有IP地址;
(2)HostName属性:包含了服务器的主机名。
(3)Aliases属性包含了与主机关联的别名列表。
在Dns类中,有一个专门获取IPHostEntry对象的方法。
  例如
IPAddress[] ips = Dns.GetHostEntry(“http://news.sohu.com").AddressList;

域名解析

DNS(Domain Name System,域名系统)提供了一系列静态的方法,用于获取提供本地或远程域名等功能,常用方法有:
(1)GetHostAddresses方法
获取指定主机的IP地址,返回一个IPAddress类型的数组。格式为:
public static IPAddress[] GetHostAddresses(string hostNameOrAddress);
例如:IPAddress[] ips=Dns.GetHostAddresses("www.cctv.com");
注意:如果hostNameOrAddress是IP地址,则不查询DNS服务器,直接返回此地址。
(2)GetHostEntry方法
在DNS服务器中查询与某个主机名或IP地址关联的IP地址。
当参数为空字符串时,此方法返回本地主机的IPv4地址和主机名。
例如:
IPHostEntry host = Dns.GetHostEntry("");
listBox1.Items.AddRange(host.AddressList); //本机所有IPv4地址
listBox1.Items.Add(host.HostName); //本机主机名
(3) GetHostName方法
获取本机主机名。
例如:string hostname = Dns.GetHostName();

示例

         /// <summary>
        /// 获取本机IP信息
        /// </summary>
        private void buttonLocalIP_Click(object sender, EventArgs e)
        {
            listBoxLocalInfo.Items.Clear();
            string name = Dns.GetHostName();
            listBoxLocalInfo.Items.Add("本机主机名:" + name);
            IPHostEntry me = Dns.GetHostEntry(name);
            listBoxLocalInfo.Items.Add("本机所有IP地址:");
            foreach (IPAddress ip in me.AddressList)
            {
                listBoxLocalInfo.Items.Add(ip);
            }
            IPAddress localip = IPAddress.Parse("127.0.0.1");
            IPEndPoint iep = new IPEndPoint(localip, 80);
            listBoxLocalInfo.Items.Add("IP端点: " + iep.ToString());
            listBoxLocalInfo.Items.Add("IP端口: " + iep.Port);
            listBoxLocalInfo.Items.Add("IP地址: " + iep.Address);
            listBoxLocalInfo.Items.Add("IP地址族: " + iep.AddressFamily);
            listBoxLocalInfo.Items.Add("可分配端口最大值: " + IPEndPoint.MaxPort);
            listBoxLocalInfo.Items.Add("可分配端口最小值: " + IPEndPoint.MinPort);
        }


        /// <summary>
        /// 获取远程主机信息
        /// </summary>
        private void buttonRemoteIP_Click(object sender, EventArgs e)
        {
            
            this.listBoxRemoteInfo.Items.Clear();
            IPHostEntry remoteHost = Dns.GetHostEntry(this.textBoxRmoteIP.Text);
            IPAddress[] remoteIP = remoteHost.AddressList;
            IPEndPoint iep;
            foreach (IPAddress ip in remoteIP)
            {
                iep = new IPEndPoint(ip, 80);
                listBoxRemoteInfo.Items.Add(iep);
            }
        }
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,047评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,807评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,501评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,839评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,951评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,117评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,188评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,929评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,372评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,679评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,837评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,536评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,168评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,886评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,129评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,665评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,739评论 2 351