精华内容
下载资源
问答
  • 解析URL得到IP地址

    千次阅读 2018-08-26 23:48:50
    解析URL DNS解析获得IP地址 多IP域名DNS查询解决方案 什么是域名(补充内容) 1.浏览器判断是URL还是搜索关键字 上一篇说到过浏览器有联想查询服务并且会根据输入内容选择搜索的方式。浏览器会去...

    导读

    上一篇总结中涉及到的是输入URL的过程中浏览器做出的一些反馈,这一篇将总结之后发生的事情。

    • 浏览器判断是URL还是搜索关键字
    • 解析URL
    • DNS解析获得IP地址
    • 多IP域名DNS查询解决方案
    • 什么是域名(补充内容)

    1.浏览器判断是URL还是搜索关键字

    上一篇说到过浏览器有联想查询服务并且会根据输入内容选择搜索的方式。浏览器会去解析输入的字符串,判断是URL还是搜索关键字,要是解析为URL则开始寻求URL对应的IP地址,否则按照搜索关键字处理交给默认搜索引擎搜索。

    2.解析URL

    下面是参考百度百科-URL的定义给出的URL的解释

    URL:(Uniform Resource Locator)统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。

    通俗的解释就是网络资源的地址,所有你在浏览器上加载的内容都有一个地址,这个地址就是URL。通过浏览器的开发者工具可以查看一次网页加载的时候所请求的资源,这里的每一个链接都是一个URL。

    下面以一个去旅馆里找人的场景解释什么是URL。你要去旅馆找一个人你必须知道他住在那个房间,这时候房间号就是你要找的人对应的地址,也就是这个场景下的URL

    2.1常见URL格式

    旅馆的房间号有着特定的编码方式,有的旅馆为了图吉利会以8开头进行编码,比如1楼1号房间会以8101的形式编码。URL编码也是这样有自己的编写规则。

    URL的语法随访问资源和服务的协议不同而不同。URL的最常见的格式如下:

     protocol://hostname[:port]path search hash
    • protocol(协议)表示访问资源和服务的协议。例如http,ftp,mailto和file等。
    • hostname(主机名)表示资源所在主机的完全限定域名,例如www.baidu.com。
    • port(端口)表示协议使用的TCP端口号,具体的端口号是可选的,省略端口号时前面的冒号也要省略,即表示采用"最著名的端口"。HTTP协议的常用端口为80,一般采用默认省略的模式。
    • path(路径)表示资源的目录/文件路径名。
    • search查找元素表示URL中传递的查询字符串。
    • hash散列符元素表示指定的文件偏移量,包括散列符(#)加上该文件偏移量相关的位置点名。

    一个URL由不同的部分组成,其中一些是必须的,而另一些是可选的。让我们以下面这个URL为例看看其中最重要的部分:

    http://www.example.com:80/path/to/myfile.html?key1=value1&key2=value2#SomewhereInTheDocument
    • http:// 是协议。它表明了浏览器必须使用何种协议。它通常都是HTTP协议或是HTTP协议的安全版,即HTTPS。Web需要它们二者之一,但浏览器也知道如何处理其他协议,比如mailto:(打开邮件客户端)或者 ftp`:(处理文件传输)。

    • www.example.com 是域名。 它表明正在请求哪个Web服务器。或者,可以直接使用IP地址, 但是因为它不太方便,所以它不经常在网络上使用。.

    • :80 是端口。 它表示用于访问Web服务器上的资源的技术“门”。如果Web服务器使用HTTP协议的标准端口(HTTP为80,HTTPS为443)来授予其资源的访问权限,则通常会被忽略。否则是强制性的。下面章节会有对端口号知识的补充。

    • /path/to/myfile.html 是网络服务器上资源的路径。在Web的早期阶段,像这样的路径表示Web服务器上的物理文件位置。如今,它主要是由没有任何物理现实的Web服务器处理的抽象。

    • ?key1=value1&key2=value2 是提供给网络服务器的额外参数。 这些参数是用 & 符号分隔的键/值对列表。在返回资源之前,Web服务器可以使用这些参数来执行额外的操作。每个Web服务器都有自己关于参数的规则,唯一可靠的方式来知道特定Web服务器是否处理参数是通过询问Web服务器所有者。

    • #SomewhereInTheDocument 是资源本身的另一部分的锚点. 锚点表示资源中的一种“书签”,给浏览器显示位于该“加书签”位置的内容的方向。例如,在HTML文档上,浏览器将滚动到定义锚点的位置;在视频或音频文档上,浏览器将尝试转到锚代表的时间。值得注意的是,#后面的部分(也称为片段标识符)从来没有发送到请求的服务器。

    2.2 端口号知识小补充

    一台服务器为什么可以同时是Web服务器,也可以是FTP服务器,还可以是邮件服务器等,其中一个很重要的原因是各种服务采用不同的端口分别提供不同的服务,比如:通常TCP/IP协议规定Web采用80号端口,FTP采用21号端口等,而邮件服务器是采用25号端口。这样,通过不同端口,计算机就可以与外界进行互不干扰的通信。服务器端口数最大可以有65535个,但是实际上常用的端口才几十个。

    根据端口号的性质划分,可以分为3类

    • 公认端口:这类端口也常称之为"常用端口"。这类端口的端口号从0到1023,它们紧密绑定于一些特定的服务。

      • HTTP:80
      • FTP:21
      • Telent:23
      • SMTP:25
      • POP3:110
    • 注册端口:端口号从1024到49151。它们松散地绑定于一些服务。比如Express启动web服务器的时候占用3000端口。
    • 动态和/或私有端口:端口号从49152到65535。理论上,不应把常用服务分配在这些端口上。实际上,有些较为特殊的程序,特别是一些木马程序就非常喜欢用这些端口,因为这些端口常常不被引起注意,容易隐蔽。

    2.3 URL编码

    通常如果一样东西需要编码,说明这样东西并不适合传输。原因多种多样,如Size过大,包含隐私数据,对于Url来说,之所以要进行编码,是因为Url中有些字符会引起歧义。Url的编码格式采用的是ASCII码,而不是Unicode,这也就是说你不能在Url中包含任何非ASCII字符,例如中文。否则如果客户端浏览器和服务端浏览器支持的字符集不同的情况下,中文可能会造成问题。所以需要对非ASCII码进行编码,这也便于后续的DNS查询。

    网址URL中常见特殊字符转义编码

    字符 - URL编码值

    空格 - %20

    " - %22

    # - %23

    % - %25

    & - %26

    ( - %28

    ) - %29

    + - %2B

    , - %2C

    / - %2F

    : - %3A

    ; - %3B

    < - %3C

    = - %3D

    > - %3E

    ? - %3F

    @ - %40

    - %5C

    | - %7C

    URL特殊字符转义,URL中一些字符的特殊含义,基本编码规则如下:

    1、空格换成加号(+)
    2、正斜杠(/)分隔目录和子目录
    3、问号(?)分隔URL和查询
    4、百分号(%)制定特殊字符
    5、#号指定书签
    6、&号分隔参数

    如果需要在URL中用到,需要将这些特殊字符换成相应的十六进制的值
    + %2B
    / %2F
    ? %3F
    % %25
    # %23
    & %26

    3. DNS解析获得IP地址

    经过之前的URL解析之后,能够知道我们要访问的主机名,端口号以及请求资源的路径等信息,但是还有一个问题没有解决,就是去哪获取这些资源(资源的真正地址)。

    举个例子,就好比你的朋友请你吃黄焖鸡米饭(URL),你知道自己的目的地是一家叫黄焖鸡米饭的店,但是你会发现在你的附近有N多家黄焖鸡米饭,你想要再具体一点,比如说“青岛市黄岛区长江西路66号中国石油大学对面的黄焖鸡大楼(IP)”。有了这个地址你可以很轻松的找到目的地。

    那为什么搞那么复杂,不直接使用IP地址要先搞个URL然后去进行域名解析呢?主要是IP地址在网络上用起来不方便,难于记忆,用域名(别称)方便一些。你可能记不住百度的IP地址,但是你能记住www.baidu.com。从URL中解析出IP地址的过程就是DNS解析。

    3.1什么是DNS

    DNS具有两层含义

    • 一个由分层的DNS服务器实现的分布式数据库;
    • 一个允许主机查询分布式数据库的应用层协议。

    有三种类型的DNS服务器:根DNS服务器、顶级DNS服务器和权威DNS服务器。这些服务器以下图的层次结构组织起来。

    除此之外,还有一类重要的DNS,称为本地DNS服务器。严格来说本地DNS服务器并不属于DNS服务器的层次结构,但它在整个查询的过程中却扮演着重要的角色。

    3.2解析IP地址查找的顺序

    (1)首先查找的是浏览器的DNS缓存

    浏览器会缓存DNS记录一段时间。所以浏览器会先去查自己的缓存,要是域名在缓存中有记录则使用缓存中的IP进行下一步处理。要是没有则进行下一步查找。对于chrome可以使用chrome://net-internals/#dns查看当前缓存的DNS,不同浏览器保存的时间长短不一。

    (2)查询系统缓存

    如果浏览器缓存中没有,浏览器会去查找系统中记录的DNS信息。首先检查域名是否在本地 hosts 里,再查系统本地缓存的其他DNS 记录。

    hosts是一个没有扩展名的系统文件,其基本作用就是将一些常用的网址域名与其对应的 IP 地址建立一个关联“ 数据库 ”。

    查看windows的dns缓存的命令ipconfig /displaydns,linux如果启用了nscd 服务,才有dns 缓存,否则是没有dns缓存的

    (3)查路由器缓存

    如果在系统缓存里面还是没找到对应的IP,那么接着会发送一个请求到路由器上,然后路由器在自己的路由器缓存上查找记录,路由器一般也存有DNS信息(缓存你上过的网站,所以有时路由器需要进行DNS刷新)

    (4) ISP DNS缓存

    如果本地路由器还是没有,这个请求就会被发送到ISP(注:Internet Service Provider,互联网服务提供商,所谓的电信网,联通网和移动网),ISP也会有相应的ISP DNS服务器。

    会跑到这里进行查询是因为你没有改动过”网络中心”的”ipv4”的DNS地址,万恶的运营商可以改动这个DNS服务器,换句话说他们可以让你的浏览器跳转到他们设定的页面上,这也就是人尽皆知的DNS和HTTP劫持。我们也可以自行修改DNS服务器来防止DNS被ISP污染。

    这里也分享一个小技巧,在校园网环境下更改ipv6的DNS可以轻松的浏览YouTube等网站,传送门

    PS:这里通过发送DNS查询报文给ISP也是很有深度的,首先你要知道ISP的IP地址。如果 DNS 服务器和我们的主机在同一个子网内,需要对 DNS 服务器进行 ARP查询;如果 DNS 服务器和我们的主机在不同的子网,则会对默认网关进行查询。ARP请求部分之后再详细的补充。

    (5)递归DNS查询

    如果在ISP DNS服务器还没有查到的话,那么就要进行DNS递归查询了。假设我需要www.baidu.com的IP

    首先,浏览器所在的主机向本地DNS服务器发送一个含有百度域名的DNS查询报文。本地DNS服务器把查询报文转发到根DNS服务器,该根DNS服务器注意到其com后缀并向本地DNS服务器返回com的顶级域名服务器的IP地址。该本地DNS服务器再次向comDNS服务器发送查询请求,comDNS服务器注意到其www.baidu.com后缀并用负责该域名的权威DNS服务器的IP地址作为回应。最后,本地域名服务器将含有www.baidu.com的IP地址的响应报文发送给客户端主机。

    www.baidu.com在本地域名服务器上找不到

    1. 这时候本地域名服务器就会到根域名服务器查找,根域名服务器说这个是一个.com域名。
    2. 然后本地域名服务器就跑到管理.com域名的服务器上进行进一步查询,顶级域名服务器说是 .baidu二级域名。
    3. 最后本地域名服务器再跑到管理 .baidu这个二级域名所在的权限域名服务器,去查询 www这个三级域名的ip 地址。

    所以域名结构为:三级域名.二级域名.一级域名。

    这里的查询过程是包含递归查询和迭代查询的,客户端主机发送给本地服务器的查询是递归查询,而后面的三个查询是迭代查询。

    不是所有域名都能够查到IP的,什么原因你懂得

    4.多IP域名DNS查询解决方案

    并不是一个域名只能对应到一个IP地址的,IP地址是连接互联网主机的一个身份证,一般一台主机只有一个IP地址,像一些大型的网站怎么可能只有一台主机,所以多个IP是必然的。通过查询有一下几种方式来解决这个问题,自己的理解有限,只列出不深究。

    1. 循环DNS —— 单个域名、多个IP列表循环应对DNS查询
    2. 负载均衡器 —— 一个特定IP的负载均衡服务器(例如:反向代理服务器)负责监听请求并转发给后面的多个服务器集群的某一个,实现多个服务器负载均衡。 而且现在很多云服务都有提供负载均衡服务,比如AWS 的 ELB。
    3. 地理DNS —— 根据用户所处地理位置,返回不同的IP(应用:CDN)
    4. anycast —— 一个IP地址映射多个物理主机的路由技术

    5.什么域名(补充内容)

    5.1域名的组成

    .分隔的字符串,每一部分有特定的含义。查看域名的时候习惯是从左往右读,但是应该从右往左理解,可以参考上边www.baidu.com的解析过程。

    主要可以分类两个部分TLD和标签

    • TLD(Top-Level Domain,顶级域名)

    顶级域名提供了最多的信息。顶级域名告诉用户通用服务背后的域名。最通用的顶级域名(.com, .org, .net)不需要web服务器满足严格的标准,但一些顶级域名则执行更严格的政策。比如本地的顶级域名,如.us.fr,或.sh,可以要求必须提供给定语言的服务器或者托管在指定国家。

    • 标签 (或者说是组件)

    标签都是跟随着TLD的。一个标签可以是任何东西,从一个字母到一个句子。刚好位于TLD前面的标签也被称为二级域名 (SLD)。一个域名可以有多个标签(或者说是组件),没有强制规定必须要3个标签来构成域名。例如,www.ecnu.edu.cn是一个正确的域名。当拥有了“上级”部分(例如qq.com),你还可以创建另外的域名 (有时被称为 "子域名") (例如 mail.qq.com).

    在Linux中可以使用whois命令查看域名信息

    Reference

    展开全文
  • url解析ip地址

    千次阅读 2018-09-19 17:47:51
    static int WebSocket_Get_ServerIp(char *p_Url, char *p_Ip) { assert(p_Url); assert(p_Ip); struct hostent *objHostInfo; objHostInfo = gethostbyname(p_Url); if(objHostInfo == NULL) { printf(&...
    static int WebSocket_Get_ServerIp(char *p_Url, char *p_Ip)
    {
    	assert(p_Url);
    	assert(p_Ip);
    
    	struct hostent *objHostInfo;	
    	objHostInfo = gethostbyname(p_Url);
    	if(objHostInfo == NULL)
    	{
    		printf("Get Ip By Host Failed !!! \n");
    	    return SN_ERROR;
    	    
    	}
    	sprintf(p_Ip,"%s", inet_ntoa(*((struct in_addr *)objHostInfo->h_addr)));
    	printf("==========HostName :%s , IP Address :%s\n",objHostInfo->h_name, p_Ip);
    	
        return SN_SUCCESS;
    }

    在此记录留着以后自己用

    展开全文
  • 批量查询域名解析IP

    热门讨论 2011-10-13 15:05:55
    功能说明: 批量查询域名解析的IP。 1、把域名整理好,放在Domain.txt文件,域名每行一个不要有空格之类的; 2、打开run.bat等待...注意:查询速度受网速、域名所解析IP与当前网络的连通时间值影响、还有查询数量
  • URL转换成IP的过程

    千次阅读 2019-04-17 20:24:55
    URLIP到底是什么?   我的冒险,要从一张“羊皮卷”说起。那天,浏览器大叔神秘兮兮招呼我过去,告诉我CPU下达了一个命令:派遣使者访问外邦。而我是大叔最得力的门生,也是这类任务最合适的人选。大叔为我...
    【程序人生 编者按】对于互联网,人们总是高谈阔论,却很少有人愿意去了解电脑、手机、电视这些设备到底是如何被“连接”起来的。本文通过“我”,一个普通的网络请求的视角,给大家介绍下“我”的工作流程是如何的。

    人们动动手指,点点鼠标,图片、视频便顺理成章地即时显示在屏幕上。只是,这一切并非理所应当,五光十色的互联网世界之下,是我们在夜以继日地工作。

    我是一个普通的网络请求。我很渺小,但始终都在履行责任——寻找被指定的资源,再将它们交付到我的主人手中。就像这座城市中成千上万而又默默无闻的快递小哥,穿梭在大厦与楼宇之间,完成使命。

    不同的是,真正的网络环境可不像现代化城市那么光鲜亮丽。它阴暗、潮湿,充满了未知的危险,如同一座黑暗森林。而我要做的,就是一场不折不扣的冒险。

     

    640?wx_fmt=png

    URL与IP到底是什么?

     

    我的冒险,要从一张“羊皮卷”说起。那天,浏览器大叔神秘兮兮招呼我过去,告诉我CPU下达了一个命令:派遣使者访问外邦。而我是大叔最得力的门生,也是这类任务最合适的人选。大叔为我准备了一张羊皮卷,上面记录了我这次冒险需要用到的必要信息。

    当仁不让地,我接过了它,即刻启程。

    我缓缓展开羊皮卷,第一行赫然写着:URL: https://mail.google.com

    什么是“URL”?我在脑中快速回忆着,对了!URL即 Uniform Resource Locator的缩写,翻译成中文便是“统一资源定位符”。因为互联网世界存在着不计其数的资源,每一处资源都需要有一个标记来定位它,正如人类城市中的门牌号。

    有人可能会认为,既然有了门牌号,找到指定地点不是轻而易举吗?朋友们,我也希望如此,但现实往往没有这么简单。

    即使有了URL,恕我愚笨,我还是无法直接理解它所指向的目的地。因为这是人类的语言,我无法翻译解读。(其实是人类太笨了,记不住IP地址,需要用方便记忆的域名来代替)

    对我来说,IP地址才是唯一的坐标。什么是IP?IP即Internet Protocol的缩写,中文译为“互联网协议”,一个如雷贯耳的名字,互联网的基石之一,一切依赖互联网通信的软件都得遵循这个协议。

    那么,如何才能将域名转换为IP地址呢?

    浏览器大叔在平日工作之余,十分细心,他将用户访问过的站点整理了一份“域名-IP对应清单”。假如是一个已被记录的IP地址,那么他会直接告诉我,我可以立即向着目标IP地址出发,这就是浏览器缓存的作用。

    假如用户输入的URL不在浏览器的记录范围之内,那么操作系统会查找一个名为“hosts”的文件。它是一份文本,记录了域名和IP地址的映射。如果“hosts”能够告诉我目标IP地址,那也能节省我不少工夫。这就是系统缓存。

    此外,还有路由器缓存,相信不用我多介绍了,即保存在路由器中的域名-IP映射。

    这些缓存都能有效帮助我以最快的速度找到相应的IP地址。但是,互联网世界日新月异,各种资源层出不穷。在很多情况下,用户会想要访问一个全新的、任何缓存都没有记录过的域名。

    为此,人类专门设计了DNS。在这次任务中,我的第一站,就是赶往DNS。为了更短的响应时间与更好的用户体验,我快马加鞭。

     

     

    640?wx_fmt=png

    关于DNS劫持的记忆

     

    DNS是什么?全称Domain Name System,是一个将域名和IP相互映射的分布式数据库。

    全球有很多家DNS服务中心,假如你关心过你的计算机,你会发现,在你的网卡上,有着一项“DNS服务器”的配置项,它设定了我将要抵达的目的地。

    640?wx_fmt=png

    一转眼的工夫,我来到了114.114.114.114DNS中心。

    这个地方我来过很多次,表面上风平浪静,实则暗流涌动。我小心翼翼地来到办事大厅,不禁想起了我第一次被DNS劫持的经历。

    那天,我来到办事窗口,柜员热情地接待了我。

    “先生,请问你想要查询哪个地址?”当时我还是一位新晋的网络请求,涉世尚浅,不知晓一些不可说的条例,于是毫不避讳地回答:“你好,我要去大名鼎鼎的mail.google.com!”

    柜员的表情一下子凝固了,他上下打量了我一番,然后硬挤出一丝微笑,“好的先生,请稍等。”说完,他便向旁边的同事使了个眼色。我正纳闷呢,突然两边窜出身材魁梧的警卫,架着我强行往一处拖拽。

    我这才意识到大事不妙,“这是怎么回事?!你们凭什么劫持我?”我发疯了一般嘶吼着。

    “你好,根据本ISP(电信运营商)颁布的条例,世界上不存在你所说的站点,现怀疑你是一个不合规的网络请求,将把你转发至baidu.com的IP地址。你有权保持沉默!”警卫冷漠地望着我。

    我知道,现在无论如何解释、挣扎都没有用了,只怪自己太年轻。无奈,我只好乖乖就范。

    640?wx_fmt=png

    还好当时正在使用计算机的用户有一些网络知识,当他发现自己输入的是google,返回的是baidu的页面时,并没有怪罪于我,大概是他心中已经猜到了原因。于是他将网卡的DNS配置为:8.8.8.8,这是一个国际上“不存在”的公司提供的DNS服务中心。

    仅仅这样就能畅通无阻地访问互联网了吗?经历了被DNS劫持,我依然不敢放松。

     

    640?wx_fmt=png

     

     

    我遇到过DNS投毒

     

    还未休息片刻,浏览器大叔再一次地给我分配了任务:继续尝试请求mail.google.com的资源。

    人类出国要坐飞机,要办护照。我们网络请求也是这样,全国只有在几个主要城市才会部署国际出口,所有访问境外资源的网络请求,都得经过这儿接受检查。

    与上次不同,因为这次我要访问的DNS服务器位于海外,所以我首先来到了大中华局域网的上海国际出口。

    我一路奔波到上海真的是又累又乏,正当我火急火燎地准备过安检,通道附近有一位穿着制服的小伙迎了上来。

    还没等我开口,他热情地迎了上来:“远道而来的朋友,一定是十分疲惫了吧?天气这么热,先喝杯水吧!”我悄悄地打量着他,看他的打扮应该是一位服务人员。

    “国际出口就是不一样啊,服务真到位!”由于确实是太渴了,我放松了警惕。“啊,真清凉,谢……”我一边感叹着,一边接过了小伙递给我的水。

    可当我第二个“谢”字还没说出口,立即感到一阵头晕目眩。

    “不好!遇上了黑客,这是DNS投毒!”我的视线渐渐模糊,小伙的微笑也渐渐似乎变成了狞笑。我尽力搜索着脑海中和这一切有关的知识,想要知道寻求的办法。

    640?wx_fmt=png

    DNS投毒,英文叫DNS cache poisoning,也叫做DNS污染。从客户端向DNS服务器发出查询IP的请求,到响应返回到客户端的这段时间里,如果有黑客或者其他一些不可说的设施伪造返回了一个错误的DNS应答,那么用户将不能访问到真正的资源。

    想到这里,我已经明显感觉难以控制自己的身体了,眼前一黑,就什么都不知道了。

     

    640?wx_fmt=png

     

    DNS正常解析

     

    以前发生过的险情历历在目,如今想起来,我依旧心有余悸。这次,为了确保万无一失,我打起了十二分精神。

    这次,我已经顺利来到8.8.8.8 DNS服务中心。

    “你好亲,有什么可以帮到您的嘛”办事窗口内传来了软妹子的声音。

    “我想查询域名mail.google.com的IP地址。”我试探性地问,依然不敢松懈。

    “好的呢亲,这边通过树状检索,在顶级域名com下,查询到google目录,在google目录下查询到mail,IP地址是xx.xxx.xx.xx呢。”

    640?wx_fmt=png

    我松了口气,谢天谢地,终于拿到了结果。可我知道作为一次完整的网络请求,这刚刚开始,这才是万里长征第一步,我得赶紧将这个解析结果带回去,等会还得马不停蹄往返三次建立连接。

    640?wx_fmt=jpeg

    展开全文
  • 用C++实现了cmd命令行程序的ping命令,并能够将域名解析成实际的ip地址,详情请见博客地址:http://blog.csdn.net/goforwardtostep/article/details/52988142
  • package test.ping; import java.io.IOException; import java.net.InetAddress;...import java.net.URL; public class TestGetIp { public static void main(String[] args) throws IOException { // // ...
    package test.ping;
    
    import java.io.IOException;
    import java.net.InetAddress;
    import java.net.URL;
    
    public class TestGetIp {
    	
    	public static void main(String[] args) throws IOException {
    		   //
    //		   String href = "http://www.cncounter.com/tools/shorturl.php";
    		String href = "http://www.baidu.com";
    		   // 端口号
    		   int port = parsePort(href);
    		   // 域名
    		   String host = parseHost(href);
    		   // IP 地址
    		   String address = parseIp(host);
    		 //
    		   System.out.println("host=" + host); 
    		   System.out.println("port=" + port); 
    		   System.out.println("address=" + address); 
    		 }
    	
    	/**
    	  * 获取端口号
    	  *
    	  * @param href 网址, ftp, http, nntp, ... 等等
    	  * @return
    	  * @throws IOException
    	  */
    	 public static int parsePort(String href) throws IOException {
    	   //java.net中存在的类
    	   URL url = new URL(href);
    	   // 端口号; 如果 href 中没有明确指定则为 -1
    	   int port = url.getPort();
    	   if (port < 0) {
    	     // 获取对应协议的默认端口号
    	     port = url.getDefaultPort();
    	   }
    	   return port;
    	 }
    	 
    	 /**
    	  * 获取Host部分
    	  *
    	  * @param href 网址, ftp, http, nntp, ... 等等
    	  * @return
    	  * @throws IOException
    	  */
    	 public static String parseHost(String href) throws IOException {
    	   //
    	   URL url = new URL(href);
    	   // 获取 host 部分
    	   String host = url.getHost();
    	   return host;
    	 }
    	 
    	 /**
    	  * 根据域名(host)解析IP地址
    	  *
    	  * @param host 域名
    	  * @return
    	  * @throws IOException
    	  */
    	 public static String parseIp(String host) throws IOException {
    	   // 根据域名查找IP地址
    	   InetAddress inetAddress = InetAddress.getByName(host);
    	   // IP 地址
    	   String address = inetAddress.getHostAddress();
    	   return address;
    	 }
    }
    
    展开全文
  • python3 url 获取域名ip

    千次阅读 2020-07-08 12:28:42
    url中提取域名 方法一: In [1]: from urlparse import urlparse In [2]: url = 'https://www.jianshu.com/writer#/notebooks/30425954/notes/43737977' In [3]: urlparse(url).hostname Out[3]: '...
  • 主要介绍了Python实现通过解析域名获取ip地址的方法,结合实例形式总结分析了两种比较常见的解析域名对应IP地址相关操作技巧,需要的朋友可以参考下
  • Python——域名解析IP地址

    万次阅读 2016-03-10 22:12:53
    Python——域名解析IP地址方法 Python的Socket模块提供有域名转为对应IP地址的方法socket.gethostbyname(url)方法
  • Springboot工程根据URL输入获取IP归属地,直接运行:java -jar dust-ip2region-1.0.0-SNAPSHOT.jar 端口:9090 启动后,样例:http://127.0.0.1:9090/index/convert/182.151.251.3 其中{182.151.251.3} 就是需要解析...
  • name:是一个指针,该指针指向的是要被解析的主机名字符串,以NULL结尾。 返回值:是一个指针,指向一个struct hostent类型的指针。   在使用该函数要注意的是:  (1) name指针指向的字符串...
  • C#控制台应用程序,可将FiveM服务器URL解析IP 科技类 要重现此“漏洞利用”,我使用了: [C#]-用于自动控制台应用程序 使用的API 我使用外部API来读取HTTP标头。 原料药 网址 hackertarget.com 笔记 您可能想...
  • 今天得了一批域名,需要把域名解析ip 因为量比较大所以采用了多进程和队列的方式 from multiprocessing import Process,Queue,Pool import socket import multiprocessing import os #写入文件 def write(q,lock...
  • go url解析 详解

    千次阅读 2020-12-23 14:43:33
    package main import ( "fmt" "net/url" "strings" ) func main() { Url := ... //Parse函数解析Url为一个URL结构体,Url可以是绝对地址,也可以是相对地址 // type URL struct { /
  • 优点:使用隐性url的优点是能够,直接转发到一个新的网址,尤其是可以指定新的端口号,注意这里的网址不能是ip地址形式的必须是域名形式的网址。 缺点: 缺点就是虽然能隐形的转发新的网址,但是如果加入这个网站有...
  • ip解析域名.zip

    2020-04-13 09:30:43
    批量url解析ip的py工具,先将域名放于url.txt文档中,执行py脚本,ip解析如果该域名解析到多个ip,默认为第一个,解析完成进行删重即可。
  • Android如何获取指定urlip地址

    千次阅读 2017-03-20 16:28:11
    获取指定域名的IP
  • URL解析

    2018-02-11 17:26:00
    URL : 统一资源定位符(Uniform Resource Locator ),用来定位互联网上的资源位置。 统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个...
  • URL解析过程及URL组成

    千次阅读 2021-03-12 10:13:11
    URL解析过程及URL组成 1.网页访问解析全过程 用户输入网址之后,浏览器解析网址,域名解析系统(DNS)查找对应的IP地址 向服务器发起TCP链接请求,通过TCP三次握手建立链接,浏览器将http请求(基于TCP应用层协议–...
  • • 第一步,浏览器会检查缓存中有没有这个域名对应的解析过的 IP 地址,如果有,解析结束。 浏览器中的缓存有时间空间限制。 • 查找操作系统的缓存中是否有这个域名对应的 DNS 解析结果。 在 Windows 系统中通过 C:...
  • 浏览器解析URL

    千次阅读 2019-03-10 21:11:04
    URL 地址进行 DNS 域名解获得IP地址。 建立 TCP 连接(三次握手)。 浏览器向 web 服务器发送一个 HTTP 请求报文。 服务器返回 HTTP 响应报文给客户端。 关闭 TCP 连接(四次挥手)。 浏览器解析文档资源并...
  • C++实现简单的url解析

    2021-02-17 08:25:16
    C++基础之实现的简单的url解析,可以获取分离出端口号、主机名、域名、通过winsock解析出ip地址列表、参数等
  • IP地址解析

    万次阅读 2017-07-25 15:53:13
    说明本篇用于记录一个简单的通过ip地址解析定位的方法,主要是为了便于记忆,代码为主.ip解析通过ip解析地址,我采用的是网上免费的ip解析接口freegeoip,为github开源项目,采用的是免费的开源ip库。解析准确率较高...
  • python3 url 提取 ip 端口 协议

    千次阅读 2020-08-02 16:20:17
    实例: from urllib.parse import urlparse url = 'amqp://guest:guest@localhost:5642' _url = urlparse(url) hostname = _url.hostname ...《python3 url解析 urllib.parse.urlparse 库简介》 https.
  • 前端URL解析函数

    千次阅读 2016-07-01 10:09:54
    客户端解析URL的工具函数(来自网络),用起来很不错: function parseURL(url) { var a = document.createElement('a'); a.href = url; return { source: url, protocol: a.protocol.replace...
  •   [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 您可能感兴趣的文章:一个非常全面的javascript URL解析函数和分段URL解析方法JS解析url查询参数的简单代码一个JavaScript函数把URL参数解析成Json
  • PRESTO的URL解析

    千次阅读 2019-07-25 18:35:07
    url_extract_protocol url_extract_host url_extract_port url_extract_path url_extract_query url_extract_fragment url_extract_parameter URL方法用于从HTTP URLs(或者是任何满足RFC 2396标准的有效...
  • 一个完整的URL 解析过程

    万次阅读 2018-12-29 10:35:17
    用户访问网页,DNS服务器(域名解析系统)会根据用户提供的域名查找对应的IP地址 域名解析服务器是基于UDP实协议实现的一个应用程序,通常通过监听53端口来获取客户端的域名解析请求。DNS查找过过程如下: 浏览器...
  • 通过url获取ip

    千次阅读 2017-03-31 10:51:11
    * 通过url获取ip * @author wjb * @date 2107/3/31 * @param $url * @return bool|string */ function get_ip_by_url($url){ //获取它的主机部分,例如:http://43.251.231.178:8123/#/opeReport $url = ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 170,460
精华内容 68,184
关键字:

url解析ip