网络层之IP协议,它带来了哪些功能,真的能顺着网线找到?

前言

在上一篇,学习了链路层的以太网协议,知道了MAC地址,在以太网中,找到对应的终端最终依靠的是MAC地址,但是在实际使用中,大家可能发现并不是使用的MAC地址,而是IP协议,比如

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

图片

「模拟器、工具合集」复制整段内容
链接:https://docs.qq.com/sheet/DV0xxTmFDRFVoY1dQ?tab=7ulgil

(2)博主比较喜欢看悬疑、推理、警匪的影视/电影,美剧里面经常会出现通过IP攻击了某个服务器、定位到了位置、通过技术获取到了监控画面,就算在港剧里面也会出现这样的桥段,某个犯罪嫌疑人利用公共场所网吧/网咖发布有害信息,警方很快就通过这个IP定位到了这个网吧位置所在,然后通过监控分析出犯罪嫌疑人的特征,进行抓捕。

图片

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

图片

通过生活中使用以及影视剧之类可以得到一些信息。

  •  每个设备除了MAC地址以外,还需要有IP,否则在如今的网络中(TCP/IP协议体系)是无法通信的,

  • IP具有定位跟追踪功能,网上流传一句话,顺着网线来找你,这并不是一个玩笑,只要在你做了违法的事情,这些事情都会基于IP信息以及其他有用的信息被记录在对应服务器上面,执法者就可以定位并追踪逮捕你。

IP协议

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

图片

这个图是不是很熟悉,没错就是第二篇里面的,但是这里扩展了一下,比如图上面的访问者1、2、3,都需要访问WEB服务器,这个时候WEB服务器怎么去区分跟识别这三个请求,又怎么去保证能够正常返回。

想象一下我们实际生活中,全国人口这么多,如果单独用姓名来区分,重名的非常多,这个时候就需要一个唯一能标识自己身份的东西,那就是身份证,重名了没关系,身份证的ID是唯一的,在网络世界中,也是一样,为了唯一性,给每个设备也加入一个“身份ID”,在通信的过程中,携带“身份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。

  • Internet上面是有许许多多的网络设备,比如路由器,它们收到这个数据包后会根据包里面的目的IP地址,通过查询路由表,会把这个数据包发送给它最近的邻居设备,这样以接力棒的形式抵达目的地。服务器收到数据请求后,处理完,要把这个结果返回给访问者1,这个时候它会把源目IP地址调换(源:1.1.1.1,目的:12.1.56.6),将这个数据包封装发到互联网,最终同样的方式回到访问者1。

这个过程在第二篇就介绍过了,以生活中快递的形式代入,把包裹当成数据包,把快递单号当成源目IP(快递单号包含发件人与收件人),快递公司的运输工具当成internet中的路由器等设备,在运输途中,根据单号的收件人地址(目的IP)来运输,中途会进行中转,交给另外的运输车继续运输(路由器通过查询路由表,交给下一个设备继续处理一样),最终到达收件人的手里。

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

  • IP协议中提供了IP地址,在数据包中包含源目IP地址,中间处理数据包的路由器可以根据目的地址查询路由表来得到转发的方向(交给谁处理)

  • IP地址中的源IP给接收方提供了一个回复的信息,它可以根据这个源进行正确的响应。

  • IP协议虽然数据包中包含了源目地址信息,但是一旦这个数据包发送出去后,不一定保证能够到达地方,比如中途路由线路坏了或者它也不知道目的地怎么走(类似于快递中丢件了),这里就正好体现了IP协议的弊端,无连接以及不可靠的传输特性。那带来了一个问题,如果真出现了丢包,IP协议不能处理,谁处理呢?这个就是后面要提到的TCP协议。

IP协议的报文格式

在上一篇二层的以太网协议中,了解过以太网的报文格式,那么在IP协议中它也有自己的报文格式,正式因为有了这个格式,数据在从上往下封装的时候,才能完整的生成一个对应每层的头部。

图片

红色标记的是目前对于初学者来说是必须知道的,其余的可以等有一定基础后在回过头了解,否则记得太多会有点混乱。(下面会介绍下每个字段的作用)

  • 版本:4个比特,标识当前的IP协议版本,这里为IPV4(IPV6的数据包结构有所调整)。

  • 头部长度:4个比特,标识整个IP头部的长度,正常情况下IP头部为20个字节,最大为60字节。

  • 服务类型:8个比特,为不同的IP数据包给予不同的服务质量,用于QOS技术。

  • 总长度 :16个比特,标识IP头部以及上层数据的数据包大小,IP包最大为65535个字节。

  • 标识符:16个比特,用来实现IP分片的重组功能,为每个分配打上标记。

  • 标记符:3个比特,用来表示是否还有IP分片或是否允许分片。

  • 分片偏移:13个比特,明确告诉这个IP分片的位置,方便接收端收到后进行IP分片的重组。

  • 生存时间:8个比特,早期定义是这个数据包在传输中的时间单位,但是后续发现不可行,改成了每经过一个三层设备,TTL减少1,直到变成0则直接丢弃,避免数据包在网络中无休止的传递,起到了防止环路的作用,并且每个系统的TTL不一样,Windows个人版本TTL为64,Windows服务器版本为128,Linux为64,常见的网络设备为255跟64两种。

  • 协议:8个比特,标识IP协议上层使用的协议,第二章介绍到的TCP协议号为6,UDP协议号为17(这个会随着学习慢慢的接触更多,目前记住TCP与UDP的协议号即可)

  • 头部校验和:16个比特,用于检验IP数据包是否完整以及被修改,校验失败则直接丢弃。

  • 源地址:32个比特,表明发送端的IP地址

  • 目的地址:32个比特,表明目的端(接收端)的IP地址。

  • 可选项:这个字段很少使用。

一个标准的IP头有12个字段,对于刚接触网络的朋友来说,不要求全部掌握,红色部分是必须掌握的,其余的暂时作为可选,但是需要了解下作用,下面把相同作用的字段做一个知识点的汇总。

  • 源地址(Source)和目的地址(Destionation)作为IP协议最核心的字段,表明这个数据包源是谁,目的去往哪,这个在上面已经举例了作用了,这里就不在重复。

  • 头部长度(Header Length)和总长度(Total Length)表明IP头部与数据的大小,进行区分标明。

图片

   标明区分了IP头部与数据有什么作用呢,比如上图,可以知道IP协议的头部是20个字节,总长度是200个字节,那么去掉头部后剩下180个字节,我们可以回想下第二篇讲解的,路由器收到一个数据包后,它需要解封装拆除IP头的信息,读取里面的目的IP地址信息,甚至有时候需要修改IP的信息,完成后在重新进行封装操作,那么路由器怎么知道这个IP头的范围呢,IP头部默认是20个字节,最大可以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的话,如果数据包一多,那么这个网络的的资源就会被消耗掉,有了TTL,每经过一个三层设备减去1,那么最终是会变成0的,0就会被丢弃,从而不会一直循环下去,但是这里要注意,这种方式只是一个“被动”的解决办法,真正的一个规划好的网络是不会存在在这种情况的。

  • 协议(protocol):明确表明上层用的什么协议,比如TCP(6)、UDP(17),协议号记熟就可以了,其实可以发现,从上一篇学的以太网协议中也有一个类型字段标明上层协议,IP协议里面也有,那么这个存在的意义是什么呢?

图片

  比如访问者1发送了多个访问给服务器,有TCP的应用、UDP的应用,那服务器收到以后,它到底是交给TCP处理呢,还是UDP处理呢,所以有了protocol以后,服务器根据这个ID就能明确知道是交给哪个上层协议处理了,完成正确的交互。就像我们平时电脑使用的时候,不同的应用有不同的后缀名,有不同的应用程序去打开读取,如果有txt记事本去打开一部MP4的电影,那肯定是会出错,同样如果服务器处理TCP的数据采用UDP协议来处理,一样会出现错误。

最终,不管是以太网协议的类型字段,还是IP协议的protocol字段,以及接下来要学习的TCP、UDP协议的端口号,都在做一件事情,明确告诉接收方,用正确的上层协议来处理这个数据。

  • 标识符(Identification)、标记符(Flags)、分片偏移(Fragment offset),这三个字段组合来完成IP数据的分片与重组。

  • 头部校验和:跟以太网的FCS一样,但是IP协议只校验IP头部,数据部分不校验,交给上层处理。

 IP协议总结

  • IP地址作为接入Internet通信的“身份证”,每个终端设备只要需要接入网络,则必须拥有它。

  • IP地址具有唯一性,终端在访问对应服务的时候,数据包里面会携带IP的源目地址,中间转发的设备通过数据包中的目的IP找到目的地怎么转发,目的地也根据源地址可以正常的进行返回。

  • IP协议中除了IP地址的寻址功能以外,还包含了防环、校验、数据包分片与重组的功能。 

“承上启下”

可以看到IP地址在IP协议中具有很重要的作用,甚至在如今互联网的使用中密不可分,像我们使用的身份证都有对应的分类,按省份、城市、地区、出生年月日等格式进行区分,那么IP地址的分类与格式是怎么样的呢?下一篇来进入一下IP地址的课题,这个也是让人很头疼的知识点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/905880.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

linux之网络子系统- 内核发送数据包流程以及相关实际问题

一、相关实际问题 查看内核发送数据消耗的CPU时应该看sy还是si在服务器上查看/proc/softirqs,为什么NET_RX要比NET_TX大得多发送网络数据的时候都涉及那些内存拷贝操作零拷贝到底是怎么回事为什么Kafka的网络性能很突出 二、网络包发送过程总览 调用系统调用send发…

使用WebStorm开发Vue3项目

记录一下使用WebStorm开发Vu3项目时的配置 现在WebStorm可以个人免费使用啦!🤩 基本配置 打包工具:Vite 前端框架:ElementPlus 开发语言:Vue3、TypeScript、Sass 代码检查:ESLint、Prettier IDE&#xf…

操作系统及MySQL管理系统客户端的介绍

操作系统 1、Windows: 图形化管理工具:如控制面板、设置应用、任务管理器等。 客户端:命令提示符(cmd)和PowerShell用于命令行操作。 2、Linux: 图形化管理工具:如GNOME、KDE等桌面环境中的系…

基于SSM+小程序的旅游社交登录管理系统(旅游4)

👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 ​ 本旅游社交小程序功能有管理员和用户。管理员有个人中心,用户管理,每日签到管理,景点推荐管理,景点分类管理,防疫查询管理&a…

一文带你了解:六款适合PC端的工时管理工具

1. 板栗看板 板栗看板是一个可视化的事项管理工具,由看板(board)、列表(list)、卡片(card)三个基本元素构成。用户通过在 “看板” 上布置和移动 “列表” 与 “卡片”,可以跟踪事项…

数据结构算法学习方法经验总结

DSA:Data Structures, Algorithms, and Problem-Solving Techniques 三大核心支柱 一次学习一个主题,按照如下顺序学习 如何开始学习新的主题 学习资源 https://www.youtube.com/playlist?listPLDN4rrl48XKpZkf03iYFl-O29szjTrs_O (Algorithms) https://ww…

ANA基因组数据库(ANAgdb)

ANA进化阶由早期发育的被子植物谱系组成,包括无油樟目(Amborellales)、睡莲目(Nymphaeales)和木兰藤目(Austrobaileyales),在进化上具有重要地位。 ANA基因组数据库(ANA…

晟矽微PWM案例分析

/****************************************************************************** ; * 型号 : MC32F7361 ; * 创建日期 : 2021.12.21 ; * 公司/作者 : SINOMCU-FAE ; * 晟矽微技术支持 : 204…

检索引擎Elasticsearch

一.为什么要用Elasticsearch 由于我们在运行我们的项目的时候通常都是将数据存到mysql或者sql serve等数据库中,在进行数据搜索时使用sql 语句 like进行模糊匹配查询,其一:虽然可以查到数据,但是它模糊匹配查询速度较慢&#xff0…

vue前端使用pdfjs与pdfdist-mergeofd 实现预览pdf并翻页,同时解决预览pdf显示模糊的问题

vue前端使用pdfjs与pdfdist-mergeofd 实现预览pdf并翻页,同时解决预览pdf显示模糊的问题 插件介绍 pdfdist-mergeofd插件的作用可查看这篇文章,同时使用ofdjs和pdfjs遇到的问题,和解决方法——懒加载 该插件主要是为了解决pdfjs和ofdjs同时…

深度学习:yolov3的使用--建立模型

使用argparse模块来定义和解析命令行参数 创建一个ArgumentParser对象 parser argparse.ArgumentParser() 训练的轮数,每批图像的大小,更新模型参数之前累积梯度的次数,模型定义文件的路径。 parser.add_argument("--epochs", typeint, d…

38.第二阶段x86游戏实战2-HOOK窗口消息机制(解决多开窗口句柄问题)

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 本人写的内容纯属胡编乱造,全都是合成造假,仅仅只是为了娱乐,请不要…

详解汉明纠错码原理以及FPGA实现

文章目录 一、汉明纠错码简介二、汉明码编码原理以及步骤三、汉明码纠错原理以及步骤四、FPGA实现74汉明编码器五、FPGA实现74汉明解码器 一、汉明纠错码简介 汉明纠错码(Hamming Code)是一种用于检测和纠正数据传输中错误的编码方法。它由理查德汉明&am…

无人机光电识别跟踪算法!

一、算法概述 无人机光电识别跟踪算法结合了可见光和红外成像技术,通过光学系统收集目标的光学信息,并将其转换为电信号进行处理和分析。该算法能够实现对目标的快速、准确识别与追踪,极大提升了无人机在复杂环境下的作业能力和效率。 二、…

Ethernet 系列(6)-- 基础学习::OSI Model

(写在前面:最近在学习车载以太网的知识,顺便记录一下知识点。) OSI(Open System Interconnect )模型是一种网络通信框架,由国际标准化组织(‌ISO)在1985年提出&#xff0…

day15:shell基础

一,编程语法分类(了解) 编程范式: 面向过程:程序通过按步骤执行函数或过程完成任务,强调流程控制和函数调用,适合流程明确的任务,如 C。面向对象:通过“类”和“对象”封…

无人机测绘遥感技术算法概述!

一、数据采集算法 航线规划算法 根据测绘任务需求,利用地理信息系统(GIS)和遥感技术,对无人机进行航线规划。 考虑地形、气候、障碍物等因素,优化飞行路径,确保数据采集的完整性和准确性。 传感器控制算…

Pytest-Bdd-Playwright 系列教程(6):在测试步骤函数中设置别名数据共享

Pytest-Bdd-Playwright 系列教程(6):在测试步骤函数中设置别名&数据共享 前言一、步骤别名二、特性文件三、测试脚本四、运行测试五、小测验总结 前言 有的时候,为了提高可读性,我们需要使用不同的名称来声明相同的…

HTML 分组标签与语义化应用:合理使用 <div>、<span> 和基础语义容器

文章目录 1. `<div>` 标签特点用途示例2. `<span>` 标签特点用途示例3. `<fieldset>` 标签特点用途示例4. `<section>` 标签特点用途示例5. `<article>` 标签特点用途示例总结HTML中的分组(容器)标签用于结构化内容,将页面元素组织成逻辑区域…

关于武汉芯景科技有限公司的马达驱动芯片AT6237开发指南(兼容DRV8837)

一、芯片引脚介绍 1.芯片引脚 二、系统结构图 三、功能描述 逻辑功能