什么是IP协议?

IP 协议(Internet Protocol)是一个处于垄断地位的网络层协议。 IPv4 就是 IP 协议的第 4 个版本,是目前互联网的主要网络层协议。IPv4 为传输层提供 Host-To-Host 的能力,IPv4 需要底层数据链路层的支持。

IP 协议并不负责数据的可靠性。传输数据时,数据被切分成一个个数据封包。IP 协议上层的传输层协议会对数据进行一次拆分,IP 协议还会进一步进行拆分。进行两次拆分是为了适配底层的设备。

数据在网络中交换(封包交换算法),并不需要预先建立一个连接,而是任由数据在网络中传输,每个节点通过路由算法帮助数据封包选择下一个目的地。

这里再复习一下可靠性,**可靠性保证数据无损地到达目的地。**可靠性是 IP 协议上方的 Host-To-Host 协议保证的,比如 TCP 协议通过应答机制、窗口等保证数据的可靠性。 IP 协议自身不能保证可靠性。比如 IP 协议可能会遇到下面这几个问题:

  • 封包损坏(数据传输过程中被损坏);
  • 丢包(数据发送过程中丢失);
  • 重发(数据被重发,比如中间设备通过 2 个路径传递数据);
  • 乱序(到达目的地时数据和发送数据不一致)。

但是 IP 协议并不会去处理这些问题,因为网络层只专注解决网络层的问题, 而且不同特性的应用在不同场景下需要解决的问题不一样。对于网络层来说,这里主要有 3 个问题要解决:

  • 延迟
  • 吞吐量
  • 丢包率

IP 协议目前主要有两种架构,一种是 IPv4,是目前应用最广泛的互联网协议;另一种是 IPv6,目前世界各地正在积极地部署 IPv6。

IP 协议的工作原理

IP 协议接收 IP 协议上方的 Host-To-Host 协议传来的数据,然后进行拆分,这个能力叫作分片(Fragmentation)。然后 IP 协议为每个片段(Fragment)增加一个 IP 头(Header),组成一个IP 封包(Datagram)。之后,IP 协议调用底层的局域网(数据链路层)传送数据。最后 IP 协议通过寻址和路由能力最终把封包送达目的地。接下来为你讲述完整的过程。
分片(Fragmentation)

分片就是把数据切分成片。 IP 协议通过它下层的局域网(链路层)协议传输数据,因此需要适配底层传输网络的传输能力。数据太大通常就不适合底层网络传输,这就需要把大的数据切片。 当然也可能选择不切片,IP 协议提供了一个能力就是把封包标记为不切片,当底层网络看到不切片的封包,又没有能力传输的时候,就会丢弃这个封包。你要注意,在网络环境中往往存在多条路径,一条路径断了,说不定其他路径可以连通。
增加协议头(IP Header)

切片完成之后,IP 协议会为每个切片(数据封包 Datagram)增加一个协议头。一个 IPv4 的协议头看上去就是如下图所示的样子:

其中分成 4 个部分。

  • 最重要的是原地址和目标地址。IPv4 的地址是 4 组 8 位的数字,总共是 32 位。具体地址的作用我们在下面的“寻址部分”介绍。

  • Type Of Service 服务的类型,是为了响应不同的用户诉求,用来选择延迟、吞吐量和丢包率之间的关系。关于这块知识,本讲后半部分就会分析。

  • IHL(Internet Header Length)用来描述 IP 协议头的大小。所以 IP 协议头的大小是可变的。IHL 只有 4 位,最大值 1111 = 15。最大是 15 个双字(15*4 字节 = 60 字节)。

  • Total Length 定义报文(封包 Datagram)的长度。

  • Identification(报文的 ID),发送方分配,代表顺序。

  • Fragment offset 描述要不要分包(拆分),以及如何拆分。

  • Time To Live 描述封包存活的时间。因此每个 IP 封包发送出去后,就开始销毁倒计时。如果倒计时为 0,就会销毁。比如中间的路由器看到一个 TTL 为 0 的封包,就直接丢弃。

  • Protocol 是描述上层的协议,比如 TCP = 6,UDP = 17。

  • Options 代表可选项。

  • Checksum 用来检验封包的正确性,

寻址(Addressing)

地址想要表达的是一个东西在哪里。寻址要做的就是:给一个地址,然后找到这个东西。IPv4 协议的寻址过程是逐级寻址。

IPv4 地址是 4 个 8 位(Octet)排列而成,总共可以编址 43 亿个地址。

比如 103.16.3.1 就是一个合法的 Ipv4 地址。4 组数字用.分开,是为了让人可读,实际上在内存和传输过程中,就是直接用 32 位。

寻址过程

寻址就是如何根据 IP 地址找到设备。因为 IPv4 的世界中,网络是一个树状模型。顶层有多个平行的网络,每个网络有自己的网络号。然后顶层网络下方又有多个子网,子网下方还有子网,最后才是设备。

路由(Routing)

在寻址过程中,数据总是存于某个局域网中。如果目的地在局域网中,就可以直接定位到设备了。如果目的地不在局域网中,这个时候,就需再去往其他网络。

由于网络和网络间是网关在连接,因此如果目的地 IP 不在局域网中,就需要为 IP 封包选择通往下一个网络的路径,其实就是选择其中一个网关。你可能会问:网关有多个吗?如果一个网络和多个网络接壤,那自然需要多个网关了。路由器在选择 IP 封包下一个应该是去往哪个 Gateway?

假如,我们要为 IP 地址 14.215.177.38 寻址,当前路由器所在的网络的编号是16.0.0.0。那么我们就需要知道去往 14.0.0.0 网络的 Gateway IP 地址。

如果你在当前网络中用route查看路由表,可能可以看到一条下面这样的记录。

Destination:14.0.0.0Gateway:16.12.1.100Mask:255.0.0.0Iface:16.12.1.1

这条记录就说明如果你要去往 14.0.0.0 网络,IP 地址 14.215.177.38 先要和 255.0.0.0 进行位运算,然后再查表,看到 14.0.0.0,得知去往 Gateway 的网卡(IFace)是 16.12.1.1。

当封包去向下一个节点后,会进入新的路由节点,然后会继续上述路由过程,直到最终定位到设备。

路由和寻址的区别是什么?

【解析】
寻址(Addressing)就是通过地址找设备。和现实生活中的寻址是一样的,比如根据地址找到一个公寓。在 IPv4 协议中,寻址找到的是一个设备所在的位置。

路由(Routing)本质是路径的选择。就好像知道地址,但是到了每个十字路口,还需要选择具体的路径。

所以,要做路由,就必须能够理解地址,也就是需要借助寻址的能力。要通过寻址找到最终的设备,又要借助路由在每个节点选择数据传输的线路。因此,路由和寻址,是相辅相成的关系。


【解析】
127.0.0.1 是一个环回地址。并不表示“本机”,它属于{127,}集合中的一个,而所有网络号为127的地址都被称之为回环地址,所以回环地址!=127.0.0.1,它们是包含关系,即回环地址包含127.0.0.1。localhost是个域名,而不是一个ip地址,用于指代this computer或者this host,可以用它来获取运行在本机上的网络服务。之所以我们经常把localhost与127.0.0.1认为是同一个是因为我们使用的大多数电脑上都将localhost指向了127.0.0.1这个地址。一般把0.0.0.0称为“unspecified”,即未指定(即无效的,无意义的)地址。

网络层IP协议—ipv4相关推荐

  1. 网络:网络层IP协议

    目录 一.IP协议 1. IP数据报 1.1 IP首部 2.IP协议的转发 2.1 路由表 2.2 IP协议转发流程 3.子网划分 3.1 分类的IP地址 3.2 划分子网的基本思想 3.3 子网掩码 ...

  2. 网络基础网络层--IP协议

    网络基础网络层--IP协议 一.IP协议解析 (一)4位版本 (二)4位报头长度 (三)8位服务类型 (四)16位数据报长度 (五)16位分片标识 (六)3位分片标志 (七)13位分片偏移 (八)8位 ...

  3. 网络 网络层 | IP协议、网段划分、公网与私网、路由选择

    网络层是用信子网的边界,是通信设备的协议最高层.其功能是负责地址管理与路由选择(为每一条网络中的数据根据想去的地方选择合适的路径),典型的协议是IP协议,典型的设备是路由器 IP协议 IP协议的工作类 ...

  4. 熟悉网络层IP协议和数据链路层

    1. 应用层IP 协议 1.1 IP协议头 4位版本号(version): 指定IP协议的版本, 对于IPv4来说, 就是4. 4位头部长度(header length): IP头部的长度是多少个32 ...

  5. 网络层IP协议和数据链路层

    目录 IP协议 协议头格式 分片 网段划分 特殊的IP地址 IP地址的数量限制 NAT技术 NAT技术背景 NAT IP转换过程 NAPT NAT技术的缺陷 NAT和代理服务器 私有IP地址和公网IP ...

  6. 计算机网络-实验5:网络层-IP协议分析

    实验报告 IP协议分析与子网转发 实验目的:1.理解IP协议数据报格式,IP数据包分片:                   2.了解路由器在不同子网之间转发数据报,配置静态路由. 实验任务1.启动W ...

  7. 网络层——IP协议(IP协议报头IP报文的分片与组装)

    1 IP协议报头 各字段解释: 版本号:占4位,指IP协议的版本,有IPv4和IPv6两种,对于IPv4协议该字段就是4 首部长度:占4位,指IP协议的报头长度,范围在20-60字节 区分服务:占8位 ...

  8. 5 网络层----IP协议相关技术

    5.1 DNS(域名解析协议) 5.1.1 域名服务器 域名是分层结构,域名服务器也是对应的层级结构. 有了域名结构,还需要有一个东西去解析域名,域名需要由遍及全世界的域名服务器去解析,域名服务器实际 ...

  9. 网络层IP协议:IP网段划分(A类 B类 C类 D类 E类)

    IP地址分类(A类 B类 C类 D类 E类) IP地址由四段组成,每个字段是一个字节,8位,最大值是255. IP地址由两部分组成,即网络地址和主机地址. 网络地址表示其属于互联网的哪一个网络,主机地 ...

最新文章

  1. #Ruby# Introspect (1)
  2. Horticulture Research 模式图的手稿
  3. Flex与.NET互操作(四):使用HttpService、URLReqeust和URLLoader加载/传输数据
  4. windows tasklist 查看应用、进程
  5. 初识C++之指针与引用
  6. 《大数据》2015年第3期“研究”——社交网络影响力传播研究(下)
  7. Twisted入门教程(9)
  8. 深度学习中拟合是什么意思?
  9. css精灵图如何取图
  10. 利用 Python分析北京雾霾天,发现这么秘密
  11. python批量修改图片格式、重命名
  12. 2021-09-28 网安实验-取证分析-Stuxnet病毒
  13. 音乐播放器app android,mp3音乐播放器
  14. 开发会自测为什么测试还会单独存在?软件测试八大误区
  15. eclipse官网32位下载地址
  16. Python 中列表与元组的异同
  17. Python 高级变量类型 —— 列表、元组、字典、字符串、公共方法
  18. android 翻书动画效果怎么做,android ViewPager实现滑动翻页效果实例代码
  19. Ubuntu18.04解决github提交代码Support for password authentication was removed 问题
  20. EDIUS字幕混合知识讲解

热门文章

  1. 微信“跳一跳”外挂制作历程
  2. HEVC 参考帧管理(RPS)
  3. 会python_会Python了不起吗?是的,简直开挂!
  4. setenv: command not found
  5. android.265g.com.,小米3s流产?小米3下一代机型为小米x4?
  6. ART-Pi系列文章
  7. 毕业论文 引用与自动编号基本技巧
  8. Python 一个漂亮的音乐节奏可视化方案
  9. 三年打造AI芯片黑科技,IBM“狩猎女神之矛”将撬动企业混合云
  10. ZYNQ产品生产拷机问题思考