IP协议位于网络层次的网络层(网络层与ip协议配套使用的协议)

作者:一天 首发公众号:网络之路博客(ID:NetworkBlog)前言在上一篇,学习了链路层的以太网协议,知道了MAC地址,在以太网中,找到对应的终端最终依靠的是MAC地址,但是在实际使用中,大家可能发现并不是使用的MAC地址,而是IP协议,比如(1)浏览器输入域名会通过DNS解析到IP地址;访问共享文件夹时,输入对方电脑的IP地址即可;在进入某个设备的后台的时候,输入对应设备的IP地址即可进入。(2)博主比较喜欢看悬疑、推理、警匪的影视/电影,美剧里面经常会出现通过IP攻击了某个服务器、定位到了位置、

作者:微信官方账号:网络路博(ID: Network Blog)

在上一篇文章中,我学习了链路层的以太网协议,知道了MAC地址。在以太网中,找到对应的终端最终还是要看MAC地址,但在实际使用中,你可能会发现使用的不是MAC地址,而是IP协议,比如

(1)浏览器输入的域名会通过DNS解析为IP地址;访问共享文件夹时,只需输入对方电脑的IP地址即可;进入设备后台时,可以输入相应设备的IP地址。

(2)博主更喜欢看悬疑、推理、警匪片/电影。美剧里经常有服务器被IP攻击,位置被定位,监控画面被技术获取。甚至在港剧里,也会有这样的桥段。一名犯罪嫌疑人利用公共场所的网吧/网吧发布有害信息,警方通过这个IP迅速定位到这家网吧的位置。然后,通过监控和抓捕分析犯罪嫌疑人的特征。

(3)每台设备都会有对应的IP信息,包括电脑、手机、摄像头、网络设备甚至智能家居。

可以通过日常使用、电视剧等获取一些信息。

  • 除了MAC地址,每个设备还需要一个IP,否则在今天的网络(TCP/IP协议体系)中无法通信。
  • IP具有定位和跟踪的功能。网上流传着一句话,顺着网线向你走来,可不是闹着玩的。只要你做了违法的事情,这些事情都会根据IP信息和其他有用的信息记录在相应的服务器上,执法者可以定位跟踪你,逮捕你。
  • 互联网协议

    IP是网络层唯一的协议,全称Internet Protocol(互联网协议),也是TCP/IP协议体系中最核心的协议之一。通过IP地址,保证了联网设备的唯一性。IP最大的特点是为两个终端之间的通信提供了更高的效率和更高的传输速度,但也带来了弊端,即无连接和不可靠的传输。

    这张图眼熟吗?是的,在第二个里,但是在这里展开了。例如,图中的访问者1、2和3都需要访问WEB服务器。WEB服务器此时如何区分识别这三个请求,如何保证正常返回?

    试想一下,在我们的现实生活中,整个国家的人口是如此之多。如果用名字来区分的话,重名很多。这个时候,我们需要唯一能识别自己的东西,就是身份证。如果我们有重名也没关系。身份证是唯一的,在网络世界也是一样的。为了唯一性,我们还应该为每个设备添加一个“ID”。在交流过程中,我们应该携带“身份”信息。

    网络中的“ID”就是IP地址。这样,在接入过程中,IP地址被携带在数据包中。服务器收到后,就可以清楚是谁发的了。当它返回时,可以根据IP地址返回。

    这里以访问者1(12.1.56.6)访问服务器(1.1.1.1)为例(这里只看网络层)。

  • 1访问者将源IP(来源:12.1.56.6,目的地:1.1.1.1)封装在请求服务器的数据前面,并将这个带有IP地址信息的数据包发送给interent。
  • 互联网上有很多网络设备,比如路由器。收到这个包后,它们会根据包中的目的IP地址查询路由表,将这个包发送给它最近的邻居设备,从而以接力棒的形式到达目的地。在服务器接收到数据请求并进行处理后,它会将结果返回给Visitor 1。这时它会改变源和目的IP地址(源:1.1.1.1,目的:12.1.56.6),将数据包打包发送到互联网,最后以同样的方式返回给Visitor 1。
  • 第二篇文章已经介绍了这个过程。以天天快递的形式进行代入,将包裹视为数据包,将快递单号视为来源和目的IP(快递单号包括寄件人和收件人)。快递公司的运输工具,被视为互联网中的路由器等设备。在运输过程中,按照单号接收方的地址(目的IP)进行运输,中途会被转运到另一个运输车辆上进一步运输(路由器查询路由表,交给下一个设备进一步处理。

    通过以上内容可以获得的信息

  • IP地址在IP协议中提供,数据包包含源IP地址。中间处理数据包的路由器可以根据目的地址查询路由表得到转发方向(谁来处理)。
  • IP地址中的源IP为接收方提供回复消息,它可以根据这个源做出正确的响应。
  • 虽然IP数据包包含源地址和目的地址信息,但一旦数据包发送出去,就不一定能到达目的地。比如路由线路中途断了或者不知道怎么到目的地(类似快递丢了一件),这恰恰反映了IP协议的缺点,比如无连接、传输特性不可靠等。这就带来了一个问题。如果出现丢包,IP协议无法处理。谁来处理?这就是后面要提到的TCP协议。
  • IP协议的消息格式

    在最后的二层以太网协议中,我知道以太网的报文格式,所以它在IP协议中也有自己的报文格式。由于这种格式,当数据从上到下封装时,可以完整地生成每一层对应的头。

    用红色标注的是目前初学者的必备知识,剩下的可以等以后有一定基础再知道,不然记太多会有点混乱。(下面将描述每个字段的功能)

  • 版本:4位,标识当前IP协议版本,此处为IP v4(IPv6的数据包结构已调整)。
  • 长度:4位,标识整个IP头的长度。正常情况下,IP头是20字节,最大60字节。
  • 服务类型:8位,为不同的IP数据包提供不同的QOS,用于QoS技术。
  • 总长度:16位,标识上层数据的IP头和包大小。最大IP数据包为65,535字节。
  • 标识符:16位,用于实现IP分片的重组功能,标记每次分配。
  • 标记:3位,用于指示是否存在IP分片或是否允许分片。
  • 分片偏移量:13位,明确告知这个IP分片的位置,以便接收方接收到IP分片后重新组装。
  • 存活时间:8位。早期的定义是这个数据包在传输中的时间单位,但后续的发现是不可行的。改为每通过一个三层设备,TTL就减1,然后直接丢弃,直到变成0,避免了数据包在网络中无休止的传输,起到了防止环路的作用。而且每个系统的TTL都不一样。Windows个人版的TTL是64,Windows server版是128,Linux是64,普通网络设备是255。
  • 协议:8位,标识IP协议上层使用的协议。第二章介绍的TCP协议号是6,UDP协议号是17。(这样会随着你的学习接触更多,所以只要记住目前TCP和UDP的协议号就可以了。)
  • 报头校验和:16位,用于检查IP包是否完整,是否被修改。如果检查失败,将直接丢弃。
  • 源地址:32位,表示发送方的IP地址。
  • 地址:32位,表示目的地(接收方)的IP地址。
  • 可选:此字段很少使用。
  • 标准IP报头有12个字段。对于初入网络的朋友,不需要全部掌握。红色部分是必须掌握的,其余部分暂时可选,但需要了解功能。这里对功能相同的领域的知识点做一个总结。

  • 作为IP协议的核心字段,源地址和目的地址表明了这个数据包的来源和目的地。这个上面已经举例说明了,这里就不赘述了。
  • 报头长度和总长度表示IP报头和数据的大小,分别标记。
  • 区分IP头和数据的作用是什么?比如从上图我们可以知道,IP协议的报头是20个字节,总长度是200个字节。那么,去掉头之后,还剩下180个字节。我们可以回忆一下第二篇文章中的解释。路由器收到数据包后,需要对去除IP头的信息进行解封装,读取里面的目的IP地址信息,有时甚至需要修改IP信息。封装操作完成后,路由器如何知道这个IP头的范围?默认IP头是20字节,最大IP头可以是60字节,不固定。如果它在操作过程中修改了作为IP报头一部分的数据部分,这个包的内容将不会被破坏,从而使它变得没有意义。因此,在标记范围以区分IP报头和数据之后,设备将具有明确的分界线,从而避免这样的情况。

  • 生存时间(TTL):标识IP数据包的“生存时间”。被禁用的操作系统的初始TTL值是不同的,例如64、128和255。当一个IP包通过三层设备时,TTL会减1。当TTL=0时,表示这个包“GG”。此时,处理该分组的设备将返回通知以通知发起者的终端(这将在后面解释)。
  • Ping还没解释(暂时不关注),可以发现不工作的终端类型TTL是不一样的。PC是64,服务器是128。这个理解还是有用的,我们可以通过后面的TTL值来判断这个终端是路由器、普通PC还是服务器。

    TTL每减少1,也起到了“被动防环”的重要作用。在某些情况下,由于工程师的粗心大意,网络会出现“环路”。如果数据包从1-2-3-4-5这样走,会发现它已经回到A了,A继续发送,然后沿着2-3-4-5回到A。这个循环,如果没有TTL,如果每个三层器件减去1后,最终变成0,0会被丢弃,所以不会永远循环下去。但是这里需要注意的是,这种方法只是一种“被动”的解决方案,真正的计划网络在这种情况下是不会存在的。

  • 协议:明确标明上层用的是什么协议,比如TCP(6)和UDP(17),记住协议号就行了。其实可以发现,在上一篇文章学习的以太网协议中也有一个type字段是表示上层协议的,在IP协议中也有。那么这种存在的意义是什么呢?
  • 例如,Visitor 1向服务器发送多次访问,包括TCP应用程序和UDP应用程序。服务器收到它们后,会交给TCP还是UDP?所以有了协议,服务器就可以清楚的知道自己交给了哪个上层协议,完成正确的交互。就像我们平时用电脑的时候,不同的应用有不同的后缀,打开阅读的应用也不一样。如果有txt记事本打开一部MP4电影,肯定会出错。同样,如果服务器使用UDP协议处理TCP数据,也会出现错误。

    最后,无论是以太网协议的类型字段,IP协议的协议字段,以及接下来要学习的TCP和UDP协议的端口号,都是在做一件事,明确的告诉接收方使用正确的上层协议来处理这些数据。

  • 标识、标志和分片偏移量,这三个字段组合起来完成IP数据的分片和重组。
  • 报头校验和:和以太网的FCS一样,但是IP协议只检查IP报头,数据部分不检查,交给上层处理。
  • IP协议摘要

  • IP地址作为接入互联网通信的“身份证”,每个终端设备只要需要接入网络,就必须拥有IP地址。
  • IP地址是唯一的。当终端接入相应的服务时,数据包将携带IP的源地址和目的地址。中间转发设备可以通过数据包中的目的IP找到如何转发,根据源地址可以正常返回目的地。
  • IP协议除了IP地址的寻址功能外,还包括防环、验证、包分片和重组等功能。
  • “承上启下”

    由此可见,IP地址在IP协议中起着非常重要的作用,在如今互联网的使用中甚至已经密不可分。比如我们使用的身份证都有相应的分类,按照省份、城市、地区、出生日期等格式进行区分。那么IP地址的分类和格式是怎样的呢?接下来我们进入IP地址的话题,这也是一个让人头疼的问题。

    作者:一天,公众号:网络之路博客(ID:NetworkBlog)。让你的网络之路不在孤单,一起学习,一起成长。