0


【网络原理】TCP/IP协议(续)

🌈🌈关于** TCP/IP协议的 应用层和传输层的重点知识,请看博客:【网络原理】TCP/IP协议**

🔥网络层重点协议(IP 协议)

IP 协议做的两部分核心工作

1️⃣地址管理

每个网络上的设备,要能分配一个地址(唯一)

2️⃣路由选择

A 给 B 发消息,具体走哪条路线?

一、地址管理

协议头格式如下:

🙈32位的整数,最多能表示多少个不同的地址呢?42亿9千万


显然上述地址是不够用的,那么应该怎么办?

在这里我们需要记住几个数:

一个字节: 0 ---->255 -128 ----> +127

两个字节: 0 ----> 65535 -32768 ----> +32767

三个字节: 0 ----> 42亿9千万 -21亿 ----> +21亿

1.如何解决上述地址不够用问题?

1️⃣动态分配 IP 地址

✨设备上网才分配,不上网就不分配;此时就可以省下一大批 ip 地址。但是并没有增加 ip 的数量,只能一定程度的缓解,不能彻底解决问题

2️⃣NAT 机制

把IP地址分成“外网IP”’和“内网IP”,用一个外网IP代替N个内网IP

举个例子:
就好比你买了一个快递,地址写的XXX省XXX县XXX区XXX大学,不用写几号楼,几零几。但是一个大学里有好多人,那怎么确定是谁的包裹,所以我们就可以通过收件人和联系电话再来做进一步的区分。

2.NAT 机制

🌈把所有的 IP 地址分成两大类:

内网IP10. 172.16.*-172.31. 192.168.***

外网IP(公网)剩下的ip

❗❗外网 IP 必须是唯一的;内网 IP 则可以重复出现(尤其是在不同的局域网中)

🔎内网设备如果要访问外网,会给他分配一个外网 IP ,但是这个外网 IP 不是这个设备独占的,而是这个内网中所有的设备都共用一个外网 IP

一个外网 IP 代表一系列的设备

❓❓IP 如何进行工作的

假设现在有设备A和设备B要同时访问服务器的8080端口:

1):设备A =》路由器 =》 服务器

设备A发给路由器的IP数据报:
源IP 192.168.0.2 源端口:1000
目的IP:1.2.3.4 目的端口:8080

路由器正常是要把这个数据报原封不动的转发,但是此时触发了NAT机制,于是就产生了“移花接木”

路由器把IP数据报中的源IP进行了替换,替换成路由器的外网IP

路由器发给服务器的消息:
源IP:1.2.3.5 源端口:1000
目的IP:1.2.3.4 目的端口:8080

2):设备B =》 路由器 =》 服务器

设备B先给路由器发IP数据报:
源IP:192.168.0.3 源端口:1000
目的IP:1.2.3.4 目的端口:8080

此时路由器发给服务器是同样触发NAT机制,再次“进行替换”

路由器发给服务器的消息:
源IP:1.2.3.5 端口:1001(此时刚才的源IP:1.2.3.5 源端口:1000 已经被用过了,如果使用同样的,那么路由器无法区分出这个请求到底是哪个主机的)需要使用不同的端口
目的IP:1.2.3.4 目的端口:8080

服务器看见两个请求,但是源端口不一样,所以服务器在返回数据时就可以根据源端口,来分别返回不同的数据。

具体图解:

NAT路由器将源地址从10.0.0.10替换成全局的IP 202.244.174.37;
NAT路由器收到外部的数据时, 又会把目标IP从202.244.174.37替换回10.0.0.10;
在NAT路由器内部, 有一张自动生成的, 用于地址转换的表;
当 10.0.0.10 第一次向 163.221.120.9 发送数据时就会生成表中的映射关系

2.1 NAPT

    那么问题来了,如果局域网内,有多个主机都访问同一个外网服务器,那么对于服务器返回的数据中,目的IP都是相同的。那么NAT路由器如何判定将这个数据包转发给哪个局域网的主机? 这时候 **NAPT** 来解决这个问题了。使用 **IP+port 来建立这个关联关系。**

主机 163.221.120.9 的端口号是 80,私网中有 2 个客户端 10.0.0.10 和 10.0.0.11 同时进行通信,并且这 2 个客户端的本地端口都是 1025。此时,仅仅转换 IP 地址为全局地址 202.244.174.37 ,会令转换后的数字完全一致。因此,为了区分这 2 个会话,只要将 10.0.0.11 的端口号转换为 1026 就可以解决问题。NAPT 路由器通过生成转换表,就可以正确地转换地址跟端口的组合,使客户端A、B能同时与服务器之间进行通信。这种关联关系也是由NAT路由器自动维护的。例如在TCP的情况下,建立连接时,就会生成这个表项; 在断开连接后,就会删除这个表项


2.2 在 NAT 背景下如何通信?

外网设备 -> 外网设备:不需要任何 NAT ,直接就能通信

内网设备 -> 其他内网设备:不允许

外网设备 -> 内网设备:不允许

内网设备 -> 外网设备:对应的内网设备的路由器,触发 NAT 机制进行 ip 替换,此时就会给这个网络数据报的源 ip 替换成路由器自己的 ip,此时一个外网 IP 就能代表一大批内网中的设备

当前,动态分配 + NAT 来解决 IP 不够用的问题的;但是并没有让 IP 地址变多,只是提高利用率的方式来解决问题;要想从根本上解决问题,需要提供更多的 IP 地址,则会有第三种解决方案:IPv6


3.IPv6

之前所学的 IP 协议叫做IPv4使用4个字节,32位来表示 ip 地址

IPv6:是更新一些的 IP 协议,使用16个字节,128位来表示 ip 地址

2^128 = 2^32 * 2^32 * 2^32 * 2^32;这个数字巨大无比,相当于给地球上的每一粒沙子分配一个 ip 地址都是够用的

4.IP地址

概念IP地址(Internet Protocol Address)是指互联网协议地址,又译为网际协议地址。

作用:IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地 址,以此来屏蔽物理地址的差异。

格式IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节),如: 01100100.00000100.00000101.0000011

组成:IP地址分为两个部分,网络号和**主机号 **

网络号标识网段(表示一个局域网),保证相互连接的两个网段具有不同的标识;

主机号标识主机(标识了一个局域网的主机),同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号;

** 对于网络号主机号的划分,主要有两种分类方式:**

4.1 ABCDE类

1️⃣IP 地址分类(ABCDE)简单了解

4.2 子网掩码

格式:子网掩码格式和IP地址一样,也是一个32位的二进制数。其中左边是网络位,用二进制数字“1”表示,1** 的数目等于网络位的长度右边是主机位,用二进制数字“0”****表示,0的数目等于主机位的长度。 **

计算方式:

将** IP 地址和子网掩码进行“按位与”操作(二进制相同位,与操作,两个都是1结果为1,否则为0),得 到的结果就是网络号**

子网掩码二进制按位取反,再与 IP 地址位与计算,得到的就是主机号

4.3 特殊的 IP 地址

假定子网掩码是 255.255.255.0

1️⃣**主机号为 0 的 ip **

例如:192.168.0.0 就是网络号,局域网里不应该存在某个主机,主机号是0

2️⃣主机号全为1

例如:192.168.0.255 广播地址——将IP地址中的主机地址全部设为1,就成为了广播地址。往这个地址上发送 udp 数据报,此时这个数据报就会被转发给整个局域网中的所有主机(TCP 不支持广播)

3️⃣*IP 为 172 开头的:127.称为环回ip

127.0.0.1是最常用的

环回 ip 对应特殊的虚拟网卡 IO,通过环回 ip 传输的数据,走这个虚拟网卡(这个过程没有 IO 操作,纯内存操作),要比一般的这种普通 ip 的数据传输要快

4️⃣主机号为1

192.168.0.1 一般作为“网关ip”;网关即局域网的出入口

二、路由选择

描述的是:从 A 到 B 之间,具体线路怎么走(A 和 B 之间存在很多种不同的路线,具体走哪条路??路由选择要做的事情就是这个)

1.路由器

路由器主要有两个作用:

1.1 网关

路由器作为网关,可以划分公网和局域网,某些路由器还可以将局域网划分为多个子网(不同网段)

1.2 路由

所谓路由,即在复杂的网络结构中,找出一条通往终点的路线;网络通信(网络数据传输),路由器中的路由功能,就类似于规划路线,往哪个方向行进能更快到达目的地。

IP 数据报 在进行网络转发的过程中,就是一个“逐渐问路”的过程,每个路由器只能认识周围的情况,很可能问的目标并不知道(目的 ip 在路由表中,没有匹配结果),此时就会走路由器给指定的一条默认的路径(路由表中的“下一条表项”,就会把数据报指引更上一级的路由器,越上级的路由器就见多识广)

🌴数据链路层重点协议

1.以太网

1.1 认识以太网

"以太网" 不是一种具体的网络,而是一种技术标准;既包含了数据链路层的内容,也包含了

一些物理层的内容。例如:规定了网络拓扑结构,访问控制方式,传输速率等;

例如以太网中的网线必须使用双绞线;传输速率有10M,100M,1000M等;

以太网是当前应用最广泛的局域网技术;和以太网并列的还有令牌环网,无线LAN等;

1.2 **以太网帧格式 **

2.**MTU **

2.1 认识MTU

把上述数据链路层数据帧,最大荷载长度称为 MTU ;****如果承载的数据长度超过MTU,就会在 IP 层进行分包,使每个分出来的结果都能在 MTU 之内

MTU相当于发快递时对包裹尺寸的限制。这个限制是不同的数据链路对应的物理层,产生的限制。

以太网帧中的数据长度规定最小46字节,最大1500字节,ARP数据包的长度不够46字节,要在后面补填充位;

最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU;

如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则需要对数据包进行分片(fragmentation);

不同的数据链路层标准的MTU是不同的;

2.2 MTUIP****协议的影响

由于数据链路层MTU的限制,对于较大的IP数据包要进行****分包

1.将较大的IP包分成多个小包,并给每个小包打上标签;

2.每个小包IP协议头的 16位标识(id) 都是相同的;

3.每个小包的IP协议头的3位标志字段中,第2位置为0,表示允许分片,第3位来表示结束标记(当前是否是最后一个小包,是的话置为1,否则置为0);

4.到达对端时再将这些小包,会按顺序重组,拼装到一起返回给传输层;

5.一旦这些小包中任意一个小包丢失,接收端的重组就会失败。但是IP层不会负责重新传输数据;

虽然 IP 能拆包,仍然不能改变 UDP 最大长度是 64K 这样的现实(由于拆出的这些 IP 数据报中只有一份 UDP 首部,这个首部里就能够填写 UDP 长度的地方,页还是只有 2 个字节。则64K (即65535) 这个限制还是存在的)

2.3 MTU的值是几?

🙈如果面试中被问到,MTU的值是几?


🙉千万不要回答 1500!!!因为不同的数据链路层协议,MTU 不一样,只有以太网才是1500!!


本文转载自: https://blog.csdn.net/m0_72161237/article/details/130139217
版权归原作者 奋斗小温 所有, 如有侵权,请联系我们删除。

“【网络原理】TCP/IP协议(续)”的评论:

还没有评论