IP地址作为一种定位方式,不仅仅代表位置,也会透漏出很多不同的信息。首先就是地理位置:来自哪个大洲-国家-省-市-街道,同时还包含经纬度、邮编等等。当我们想知道这个IP地址是否有害或者是否属于不好、机房流量时,我们可以通过在某个IP地址查询网站上输入IP地址,查询定位,查询到的不仅是对方的地理位置,还有网络属性、应用场景、风险属性、漏洞属性、AS拓扑关系等都可以看到。
TCP作为传输层控制协议,其保证的是数据传输的可靠性和传输效率,但TCP提供的仅仅是数据传输的策略,而真正负责数据在网络中传输的则传输层之下的网络层和链路层。
双方在进行网络通信时,发送的数据并不是直接从一方的传输层直接发送到了另一方的传输层,而是需要传输层将数据继续向下进行交付,在网络层和链路层经过数据封装后再通过网络发送到对方主机,对方主机收到数据后也同样需要在链路层和网络层进行数据解包,此时对方的传输层才拿到了发送过来的数据,然后再继续将该数据向上进行交付。
网络通信的过程,就像两个人在送互相送数据,这两个人分别在两栋楼的四楼,如果一个人要将数据交给对方,那么这个人就必须先从四楼走到一楼,然后再在路上经过路径选择到达对方楼下,最后再上到四楼将数据交给对方。
其中,送数据的这个人从四楼下来的过程就是数据封装的过程,这个人在路上经过路径选择到达对方楼下的过程就是数据路由的过程,而这个人再上到四楼将数据交给对方的过程就是数据解包的过程。
而网络层要解决的问题就是,将数据从一台主机送到另一台主机,也就是数据的路由。
保证数据可靠的从一台主机送到另一台主机的前提
当双方在进行基于TCP的网络通信时,要保证将数据可靠的从一台主机送到另一台主机,前提是发送方要有将数据送到对方主机的能力,要是发送方连将数据发送给对方的能力都没有,那就更不用谈可靠的将数据送给对方主机了。
需要注意的是,发送方有将数据送到对方主机的能力,并不意味着发送方每次发送的数据都能够成功的发送到对方,但如果发送方连将数据发送给对方的能力都没有,那发送方基本就不可能将数据发送给对方。
一旦发送方有了将数据发送给对方的能力,就算发送方某次发送的数据没有成功到达对方,此时上层TCP由于没有收到对应数据的应答,此时上层TCP会要求进行数据重发,直到数据成功发送到对方主机为止。
也就是说,在网络层有能力将数据送到对方主机的情况下,虽然网络层不能保证每次都能将数据成功送到对方主机,但在TCP提供的可靠性策略的保证下,最终网络层就一定能够将数据可靠的发送到对方主机。
说明一下:
网络层解决的问题是,将数据从一台主机送到另一台主机,因此网络层解决的是主机到主机的问题。
一方传输层从上方进程拿到数据后,该数据贯穿网络协议栈进行封装和解包,最终到达对方传输层,此时对方传输层也会将数据向上交给对应的进程,因此传输层解决的是进程到进程的问题。
路径选择
数据进行的网络传输一般都是跨网络的,而路由器就是连接多个网络的硬件设备,因此数据在进行跨网络传输时一定需要经过多个路由器。
数据路由就像我们旅游一样,当确定了要到达的目标主机后,就需要寻找最短的路径到达该目的地。
目的地的确定是非常重要的,因为目的地直接决定了数据路由时的路径选择,这也是跨网络找到目标主机的根本。
只有数据经过了较为正确的路径选择,最终才可能慢慢趋近于目标网络或目标主机。
确定数据路由的目的地后,数据就可以在网络中进行路由了,但数据在路由时无法自行进行路径选择,因为这个数据本身是“不认识路”的,因此数据在路由的过程中需要不断“找路人问路”,而这里所谓的“路人”就是网络当中的一台台路由器。
网络当中的路由器是“认识路的”,它们将自己的“认路经验”都记录到路由表当中,因此路由器可以通过查路由表找到去特定点的最短路径。因此数据在路由时,会不断通过路由器来进行路径选择,以此来一步步靠近目标网络或目标主机。
主机和路由器
主机:配有IP地址,但是不进行路由控制的设备。但实际现在几乎不存在不进行路由控制的设备了,就连你的笔记本也会进行路由控制。
路由器:既配有IP地址,又能进行路由控制。实际现在主流的路由器已经不仅仅具有路由的功能了,它甚至具备某些应用层的功能。
节点:主机和路由器的统称。
IP协议格式
IP协议格式如下:
4位版本号(version):指定IP协议的版本(IPv4/IPv6),对于IPv4来说,就是4。
4位首部长度(header length):表示IP报头的长度,以4字节为单位。
8位服务类型(Type Of Service):3位优先权字段(已经弃用),4位TOS字段,和1位保留字段(必须置为0)。4位TOS分别表示:最小延时,最大吞吐量,最高可靠性,最小成本。这四者相互冲突,只能选择一个。比如对于ssh/telnet这样的应用程序,最小延时比较重要,而对于ftp这样的程序,最大吞吐量比较重要。
16位总长度(total length):IP报文(IP报头+有效载荷)的总长度,用于将各个IP报文进行分离。
16位标识(id):唯一的标识主机发送的报文,如果数据在IP层进行了分片,那么每一个分片对应的id都是相同的。
3位标志字段:第一位保留,表示暂时没有规定该字段的意义。第二位表示禁止分片,表示如果报文长度超过MTU,IP模块就会丢弃该报文。第三位表示“更多分片”,如果报文没有进行分片,则该字段设置为0,如果报文进行了分片,则除了最后一个分片报文设置为0以外,其余分片报文均设置为1。
13位片偏移(framegament offset):分片相对于原始数据开始处的偏移,表示当前分片在原数据中的偏移位置,实际偏移的字节数是这个值× 8 imes 8×8得到的。因此除了最后一个报文之外,其他报文的长度必须是8的整数倍,否则报文就不连续了。
8位生存时间(Time To Live,TTL):数据报到达目的地的最大报文跳数,一般是64,每经过一个路由,TTL -= 1,一直减到0还没到达,那么就丢弃了,这个字段主要是用来防止出现路由循环。
8位协议:表示上层协议的类型。
16位首部检验和:使用CRC进行校验,来鉴别数据报的首部是否损坏,但不检验数据部分。
32位源IP地址和32位目的IP地址:表示发送端和接收端所对应的IP地址。
选项字段:不定长,最多40字节。
但是这一切的前提是,我们要先知道对方的IP地址。
以下是一些可用于查找IP地址的技术方式。
借用某人的计算机:这查询某人IP地址的最简单技术之一。可以借用计算机并通过使用ipconfig /all 命令或使用iplocation等在线服务查找 IP 地址详细信息来查找 IP 地址。
无线网络:如果你的无线网络不够安全或者你与访客共享了无线网络,就会发生:有权访问你的无线网络的人也将共享你的公共IP地址。所以捕获公共和私有IP地址会变得很简单。
在大多数路由器中,你可以选择查看谁连接到无线网络。如果你没有从路由器中找到IP信息,你也可以使用在线IP扫描仪。它会提供一个共享IP地址列表,方便找到你想要查找的IP。
电子邮件:当今大多数电子邮件提供商都不会在标题中显示IP 地址。但是,某些不太受欢迎的电子邮件服务提供商或自托管邮件服务器可能会泄露你的公共IP地址。还有跟踪电子邮件工具,可让你从邮件标头跟踪发件人的IP地址。
博客评论:这是一种监视某人IP地址的有趣方式。如果你是博客管理员,并且有人在你的博客上发表评论,那么你还可以在发表评论的同时获得作者的 IP 地址。
日志记录:如果你有一个网站并试图捕获访问你网站的用户的IP地址,那么这非常简单。大多数 Web 开发语言都支持跟踪远程 IP 地址,这很容易从请求标头中检测到。
例如,客户端 HTTP 标头 X-FORWARDED-FOR 可以提供远程 IP 详细信息。或者,在服务器端,编程语言提供实用程序来获取请求页面的计算机的IP 地址,例如 getRemoteAddr()。
这些基于底层技术的信息可以在 Web 服务器日志中捕获或在数据库等系统中进行跟踪。
互联网论坛:作为在线用户,我们大多数人往往是论坛的一部分在这里主要是讨论和分享话题。但是,除了论坛帖子之外,还有一些其他信息可供管理员获取,其中获取的信息之一就是IP地址。因此,如果你拥有一个论坛,那么获取用户的IP地址是很容易。
社交媒体渠道:虽然我们都喜欢使用 Facebook、Twitter 等社交网站,但一个鲜为人知的事实是你的信息会被共享。站点管理员或站点用户可以轻松追踪 IP 地址。
如果你没有社交媒体网络,那么你知道他人的IP地址?
通过添加一个可点击的链接,将用户带到你的网站。通过这种方式,捕获用户的IP地址。大多数电子商务平台都使用类似的技术,其中链接或图像用于跟踪 IP 地址,通常称为网络信标。
电子商务和消息传递应用程序:我们的IP Tracker工具允许你创建可跟踪的链接,将这些链接提供给你希望跟踪其 IP 的用户可以帮助你在访问此链接时跟踪IP地址。
主机名:如果你知道机器的主机名,并且可以访问或在同一局域网内,那么你就可以查询到IP 地址。这可以通过在 Linux 机器上发出主机主机名命令来完成。作为此命令的输出者,可以查看IP地址。
同样,可以使用 ping 或 nslookup 命令来获取 IP 地址。如果你不知道主机名并想获取 LAN 上的 IP 地址,则可以使用命令arp -a。这将提供网络上所有可用计算机的IP和Mac详细信息。
Netstat 命令:Netstat 基本上是网络管理员最常用的命令之一。但是,Netstat可用于跟踪IP地址。要跟踪某人的IP地址,首先你可以使用Facebook 等社交媒体网络,同时确保关闭计算机上的所有其他窗口,并与需要跟踪IP地址的人开始聊天。
开始聊天后,使用netstat命令作为 netstat -an。这将提供所有已建立连接的所有详细信息,包IP地址。从这里你可以跟踪每个IP地址的位置,从而推断出目标的IP地址。虽然这不会直接给出用户的IP地址,但是仍然可以获得信使的 IP 地址。
结论
其实查询IP地址的方法多样且简单,有的甚至不需要任何复杂的工具。
所以大家在线时需要保持谨慎,防止他人获取你的IP地址,保护好自己的信息安全
懂点网络知识的都知道,每个连入互联网的用户都有一个数字IP,像一串数字一样的,分四段,不管使用何种上网方式,那个互联网IP是必须有的。每个网络IP对应着一个现实生活中的地址,在电信运营商的服务器中都有详细的分配记录。很多人以为查IP就是查用户的实际地址,这个有点太片面了,