网络编程之IP协议

目录

一、IP协议(网络层)

1、IP数据报的拆包组包

2、8位生存时间

3、源IP与目的IP

4、IP协议的两个核心功能

二、IPv4协议

三、如何解决IP地址不够用问题

1. 动态分配 IP

2. NAT 机制

(1) 根据例子理解 NAT 机制

(2) NAT 机制对应的模型

​编辑 3、IPv6协议

四、以太网数据帧(数据链路层)


IP是一种「不可靠」「端到端」的数据包 「传输服务」,主要实现两个功能:数据传输和数据分片。

一、IP协议(网络层)

(1)、IP协议的报头格式以及各部分说明

1、IP数据报的拆包组包

在上图中,可以看到:一个IP数据报总长度为16字节,这看上去和一个UDP数据报的长度相同,最大长度为2^16-1=65535字节,也就相当于64KB。

而虽然IP协议看起来也是有个最大64KB的限制,但实际上,IP协议内置了拆包组包的功能。如果一个数据太长,IP协议就会先将数据自动拆成多个数据报,再进行运输,最后接收方收到数据时,又会重新进行组包。这样一来,就没有单单的64KB的限制了。此外,IP协议的拆包组包功能内置在协议中,不需要程序员实现这一功能,比较方便。

2、8位生存时间

8位生存时间这个字段表示一个IP数据报最多在网络上存活多久,而TTL并不是一个时间单位,它其实是一个以“次数”为单位的概念。

例子:主机A给主机B发送数据,距离较长,数据每次经过一个路由器转发,TTL就减1,而TTL一直减到0还未到达主机B,那么就自动丢弃。一般情况下TTL都是比较充裕的。

3、源IP与目的IP

这是整个IP协议中最核心的部分。

我们将IP地址化作成快递单号上的地址,源IP就表示“发送人地址”,目的IP就表示“收件人地址”

4、IP协议的两个核心功能

(1)地址管理

地址管理:能够通过一系列的规则,将网络号设备的地址给描述出来。

(2)路由选择

路由选择:根据当下的源地址和目的地址,规划出一条合适的路径。

此处的“路由”指的是IP协议中的“路径规划功能”,为什么要进行规划?

因为通过网络从某一端传输到另一端,在这个过程中,并不是一站到达,它更多的情况下是错综复杂的路线,下图为我们展现出来多种路线。

举一个例子:我准备从家出发到长沙世界之窗,那么我的起始地址是家,目的地址是长沙世界之窗。在此之前,我需要对路线进行规划。我可以选择打车去,坐公交,地铁,拿地铁来说,可能是1号线->6号线->5号线,也可以是1号线->10号线->3号线,以此来提高效率。

但是在 IP 协议中的路由选择与我们上面说的坐地铁选择路线之间有本质区别,更多的是一种 " 探索式 " 的过程。因为当数据到达某个路由器之后,路由器并不能立马为数据规划好一个整套的路线,路由器只能知晓它附近的情况,即它只知道相邻设备的情况。这很好理解,毕竟路由器是一个物理层面的实体,它并不能掌控全局,它的存储空间有限,不可能通过一个路由器的路由表就保存整个互联网环境的所有情况。

二、IPv4协议

在 IPv4 中,计算机主要是通过一个 32位 的二进制数来进行表示一个 IP 地址

而为了给人们直观地观察 IP 地址,把这个 32位 整数表示成 " 点分十进制 " 的形式。三个点把32位整数分为4个部分,每个部分一个字节,每部分的取值范围是0-255(1111 1111)

特殊地址

①网络号:

如果IP的主机号全为0,该IP就表示一个网络号(局域网中的一个正常设备,主机号不能为0)

②广播地址:

如果IP的主机号全为1,该IP就是一个"广播地址",往这个IP发送的消息,整个局域网都可以收到。

③环回IP:

如果IP地址是以127开头,就表示这是一个"环回IP",即表示主机自己

如果IP地址是10开头,或者192.168或者127.16-127.31开头的,表示该IP是一个局域网内部的IP(内网IP),剩下的IP被称为是外网IP(直接在广域网上使用的)。

注意:!!!

外网IP一定是唯一的,每个外网IP都会对应一个唯一的设备,而内网IP只在当前局域网内部是唯一的,但是在不同的局域网内可以有内网相同的IP设备。

三、如何解决IP地址不够用问题

1. 动态分配 IP

本质上说,动态分配 IP 的思想就是:一个设备接入网络了,就为其分配一个 IP,另一个设备没接入网络,就不为其分配 IP. 但是这种办法,终归治标不治本。
因为在当下社会,很多人手机可能就已经全天 24小时 开着网络了。

2. NAT 机制

NAT:Network Address Translation ( 网络地址转换 )

NAT 机制的思想实际上就是使用一个 全局的 IP 地址,来代表一批私有 IP 的主机

(1) 根据例子理解 NAT 机制

在下图中,在局域网1 中,全局 IP 123.456.12.7 这个地址用来表示整个局域网内的主机地址。在局域网2 中,也是同样的操作。而由于不同的局域网可以使用重复的主机 IP,这样一来,就可以 " 重复使用相同的 IP地址了 ",以此间接达到地址复用的目的

 

 在上图中,类似于 192.168.xxx.xxx 这样的 IP 是一个局域网内部的 IP,局域网内部的 IP 在同一个局域网内部不能重复,但两个不同的局域网可以使用重复的局域网 IP.

当使用局域网1 中的主机1 尝试发送请求,想与使用广域网范围的设备进行通信的时候,主机1 就要先将 IP 地址转换为路由器对应的 全局IP,通过这个 全局IP 再来和广域网范围的设备进行通信;而当广域网范围的设备返回响应的时候,也先是返回到路由器上,路由器再将 全局IP 转换为 主机1 的 私有IP,这样一来,主机1 最终才能获取响应。

(2) NAT 机制对应的模型

NAT 机制是当下互联网中解决 IP 地址不够分配的典型情况,也比较的适合当下的网络。

 3、IPv6协议

Pv4 是长度为 32位的数据,而 IPv6 是长度为 128位 的数据,读者可以使用计算器计算一下,IPv6 是一个巨大的数字。

IPv6 相当于釜底抽薪,它从根本上解决了 IPv4 协议的地址不够用问题。虽然 IPv6 已经提出了很多年了,但在当下的网络时代, IPv6 的普及程度,仍然相对较低,使用 IPv6 的 IP 远远少于使用 IPv4 的 IP.

原因就是 IPv6 和 IPv4 互不兼容,所以如果你要想升级成 IPv6,得把相关的网络设备,例如交换机、路由器、服务器…都得升级成 IPv6. 而这需要很大的一笔费用才能支持更换这些设备。此外,原先使用 IPv4 的网络设备使用寿命一般较长,也无需更换。

四、以太网数据帧(数据链路层) 

①什么是以太网协议?

以太网协议不仅仅规定了数据链路层的内容,也规定了物理层的内容。

②认识以太网数据帧:

1.mac地址:

很多人在这里会感到困惑,明明已经有了IP地址,那么为什么还要有mac地址呢?

这是因为,在很久很久以前,网络层协议和数据链层协议都是独立研发出来的。因此,你是否会觉得当今来看的话有些重复,然而在如今,当然又有新的见解了咯。

如今,IP地址是用来表示一次传输过程中的起点和终点。

而mac地址是用来表示一次传输过程中的两个相邻节点的地址,也就是说,一个以太网数据帧每次转发的时候,它的源mac地址和目的mac地址均会发生改变。

举个通俗的例子:

我从成都到北京,源IP地址为成都,目的IP地址为北京。

而我先从成都到河北,再从河北到北京,就涉及到两组mac地址(源mac地址:成都,目的mac地址:河北 => 源mac地址:河北,目的mac地址:北京)

2.帧尾:

帧尾的功能同UDP中一致起的是校验的作用,它是基于CRC算法的校验和。

3.MTU:(46~1500表示数据的加载范围)

MTU表示一个以太网数据帧能够承载的数据范围。

而这个范围取决于硬件设备,而以太网也是和硬件设备密切相关的,而不同的数据链路层设备对应的协议可能不同,MTU也就不同。那么要是数据报超过了MTU怎么办?这就会用到我们前面讲的IP分包,IP分包的并不是给IP报头64k准备的,更多的是用于此处适应数据链路层的MTU。

MTU与TCP协议的联系:

MSS:是TCP在IP不分层的情况下,所能搭载的最大载荷。与此同时,MTU也取决于TCP和IP的报头长度(是可以变长的)。

4.ARP:(ARP报文不是用来传输数据的,而只是起到简单的辅助作用)

像路由器这样的设备在转发数据的时候,首先会拿到一个目的IP,通过这个目的IP来决定接下来的路怎么去走。而我们前面也讲到了每相邻路径实际是由mac地址来决定的,而目的mac是啥?这就要根据ARP协议,建立起IP=>mac这样的映射关系。

当设备启动的时候,就会向局域网中广播ARP报文,然后每个报文收到后都会给出一个应答,这个应答中就包含了自己的IP和mac地址,然后发起广播的一方就可以根据这些回应建立起这样的映射表了。

这里建立起这样的映射表,通俗一点来讲,还是用老例子:

成都到北京。这就建立起了成都=>河北=>北京这样的映射路线表了

五、DNS协议

①什么是DNS协议?

这是一个域名解析协议,位于应用层

简单来讲,DNS相当于一个翻译官,负责将域名翻译成ip地址

②为什么会有这个协议?

这是因为就算将IP地址点份十进制的形式,但是对于我们来记忆来说还是有一定难度。为了解决这个问题,就决定使用了一串英文字母来表示这个IP地址,而这串英文字母就是域名,类似于www.baidu.com这就是一个域名,而且域名和IP地址是一一对应的关系。

  • 21
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值