网络层IP协议—ipv4
什么是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相关推荐
- 网络:网络层IP协议
目录 一.IP协议 1. IP数据报 1.1 IP首部 2.IP协议的转发 2.1 路由表 2.2 IP协议转发流程 3.子网划分 3.1 分类的IP地址 3.2 划分子网的基本思想 3.3 子网掩码 ...
- 网络基础网络层--IP协议
网络基础网络层--IP协议 一.IP协议解析 (一)4位版本 (二)4位报头长度 (三)8位服务类型 (四)16位数据报长度 (五)16位分片标识 (六)3位分片标志 (七)13位分片偏移 (八)8位 ...
- 网络 网络层 | IP协议、网段划分、公网与私网、路由选择
网络层是用信子网的边界,是通信设备的协议最高层.其功能是负责地址管理与路由选择(为每一条网络中的数据根据想去的地方选择合适的路径),典型的协议是IP协议,典型的设备是路由器 IP协议 IP协议的工作类 ...
- 熟悉网络层IP协议和数据链路层
1. 应用层IP 协议 1.1 IP协议头 4位版本号(version): 指定IP协议的版本, 对于IPv4来说, 就是4. 4位头部长度(header length): IP头部的长度是多少个32 ...
- 网络层IP协议和数据链路层
目录 IP协议 协议头格式 分片 网段划分 特殊的IP地址 IP地址的数量限制 NAT技术 NAT技术背景 NAT IP转换过程 NAPT NAT技术的缺陷 NAT和代理服务器 私有IP地址和公网IP ...
- 计算机网络-实验5:网络层-IP协议分析
实验报告 IP协议分析与子网转发 实验目的:1.理解IP协议数据报格式,IP数据包分片: 2.了解路由器在不同子网之间转发数据报,配置静态路由. 实验任务1.启动W ...
- 网络层——IP协议(IP协议报头IP报文的分片与组装)
1 IP协议报头 各字段解释: 版本号:占4位,指IP协议的版本,有IPv4和IPv6两种,对于IPv4协议该字段就是4 首部长度:占4位,指IP协议的报头长度,范围在20-60字节 区分服务:占8位 ...
- 5 网络层----IP协议相关技术
5.1 DNS(域名解析协议) 5.1.1 域名服务器 域名是分层结构,域名服务器也是对应的层级结构. 有了域名结构,还需要有一个东西去解析域名,域名需要由遍及全世界的域名服务器去解析,域名服务器实际 ...
- 网络层IP协议:IP网段划分(A类 B类 C类 D类 E类)
IP地址分类(A类 B类 C类 D类 E类) IP地址由四段组成,每个字段是一个字节,8位,最大值是255. IP地址由两部分组成,即网络地址和主机地址. 网络地址表示其属于互联网的哪一个网络,主机地 ...
最新文章
- #Ruby# Introspect (1)
- Horticulture Research 模式图的手稿
- Flex与.NET互操作(四):使用HttpService、URLReqeust和URLLoader加载/传输数据
- windows tasklist 查看应用、进程
- 初识C++之指针与引用
- 《大数据》2015年第3期“研究”——社交网络影响力传播研究(下)
- Twisted入门教程(9)
- 深度学习中拟合是什么意思?
- css精灵图如何取图
- 利用 Python分析北京雾霾天,发现这么秘密
- python批量修改图片格式、重命名
- 2021-09-28 网安实验-取证分析-Stuxnet病毒
- 音乐播放器app android,mp3音乐播放器
- 开发会自测为什么测试还会单独存在?软件测试八大误区
- eclipse官网32位下载地址
- Python 中列表与元组的异同
- Python 高级变量类型 —— 列表、元组、字典、字符串、公共方法
- android 翻书动画效果怎么做,android ViewPager实现滑动翻页效果实例代码
- Ubuntu18.04解决github提交代码Support for password authentication was removed 问题
- EDIUS字幕混合知识讲解
热门文章
- 微信“跳一跳”外挂制作历程
- HEVC 参考帧管理(RPS)
- 会python_会Python了不起吗?是的,简直开挂!
- setenv: command not found
- android.265g.com.,小米3s流产?小米3下一代机型为小米x4?
- ART-Pi系列文章
- 毕业论文 引用与自动编号基本技巧
- Python 一个漂亮的音乐节奏可视化方案
- 三年打造AI芯片黑科技,IBM“狩猎女神之矛”将撬动企业混合云
- ZYNQ产品生产拷机问题思考