一文带你看网络协议之因特网中的转发和编址! | 原力计划

450次阅读  |  发布于4年以前

作者 | 北海以北没有小王 责编 | 王晓曼 出品 | CSDN博客

导入-因特网的三个重要组件

1、IP协议

IP是主机在网络中的唯一标识符, 且在全网上唯一不可重复, 就像人的身份证一样(更恰当的说是身份证号)。

2、路由选择

路由选择决定了数据报从源到目的地所流经的路径,好似我们规划周末与女朋友的散步路线。

3、报告数据报中的差错和对某些网络层信息进行响应的设施

互联网控制报文协议(ICMP)是TCP/IP协议簇的一个子协议,被用来实现在互联网上传递错误以及控制信息。

IPV4数据报格式

1、数据报图例

2、关键字段

(1)版本号

(2)首部长度

(3)服务类型

(4)数据报长度

IP数据报的总长度。

(5)标识, 标志, 总偏移

下面会详细讲解。

(6)寿命

(7)协议

(8)首部检验和

检验数据报传输过程中是否发生比特错误。

(9)源和目的IP地址

(10)选项

可以扩展IP首部。

(11)数据

这是数据报存在的根本意义。

3、IP数据报分片

(1)最大传送单元( Max:imum TrallSnnssion lJnil , MTU)

(2)当IP数据报的长度超过当前链路的最大传送单元MTU时, 就必须将数据报进行分片, 分成几个较小的IP数据报并在到达目的地后重新组装。

(3)目的主机与片

(4)标识

(5)标志

(6)偏移字段

为让目的主机确定是再丢失了一个片(且能按正确的顺序重新组装片) ,使用偏移字段指定该片应放在初始 IP 数据报的哪个位置。

(7)当然分片也会产生开销并且可能被利用来攻击。

lPv4 编址

1、IP与接口的关系

我们将主机与物理链路之间的边界叫做接口(interface) 。

因为路由器的任务是从链路上接收数据报并从某些其他链路转发出去,路由器必须拥有两条或更多条链路与它连接。所以路由器与它的任意一条链路之间的边界也叫做接口。

因此一台路由器有多个接口,每个接口有其链路。

因为每台主机与路由器都能发送和接收IP数据报, IP 协议要求每台主机和路由器接口拥有自己的IP地址。

因此,一个IP地址技术上是与一个接口相关联的,而不是与包括该接口的主机或路由器相关联的。

2、IP地址

每个IP 地址长度为 32 比特(等价为 4 字节) ,因此总共有 2^32个可能的 IP 地址。

由于210近似于103, 因此可以看出IP地址大约有40亿个。

IP地址采用分十进制记法书写, 即每个字节以其的十进制形式书写, 并以句号隔开,例如127.0.0.1(这其中127,0,0,1实际上在电脑中都是一个8位二进制数)。

在因特网上的每个接口必须有唯一的IP地址与之对应(暂不考虑NAT,这多用于子网)。

这些地址不能随意地自由选择。一个接口的IP地址的一部分需要由其连接的子网来决定。

IP 广播地址 255. 255. 255.255。

当一台主机发出一个目的地址为 255.255.255.255 的数据报时,这段报文会交付给同一个网络中的所有主机。路由器也会有选择地向邻近的子网转发该报文(虽然它们通常不这样做) 。

3、子网

多个主机接口和多个路由器接口的网络形成一个子网;

形式为α. b. c. d/x 的地址的 x 最高比特构成了 IP 地址的网络部分,并且经常被称为该地址的前缀(prefix) (或网络前缀)。

其中/x有时被称为子网掩码, 因为也因此在同一个子网中的前X位都是一致的。

为了确定子网,分开主机和路由器的每个接口,产生几个隔离的网络岛,使用接口穿接这些隔离的网络的端点。这些隔离的网络中的每一个都叫做一个子网( suhnet) 。

一个地址的剩余 32 - x 比特可认为是用于区分该组织内部设备的, 只有在组织内部的路由器转发分组时才会考虑这些分组;

CIDR采用以前, IP的网络部分只能固定的8.16. 24位, 但是后来由于中小规模的迅速增加, 取消了这一限制。

4、获取一个IP地址

网络管理员可以向其ISP索取一个或一些地址, 单这不是唯一的方式。

5、如何获取主机地址

动态主机配置协议((Dynamic Host Configuration , DHCP)允许主机自动获取(被分配)一个IP地址;

管理可以配置使一台机器每次获得的是同一个地址还是一个临时地址。

除了主机 IP 地址分配外, DHCP 还允许一台主机得知其他信息,例如它的子网掩码、它的第一条路由器地址(常称为默认网关)与它的本地 DNS 服务器的地址。

即插即用协议-DHCP能够将一台主机连入网络。

从DHCP服务器获取IP地址的过程:

在最简单场合下,每个子网将具有一台 DHCP 服务器或一个DHCP中继器。

对于一台新到达的主机而言, DHCP 协议是一个 4 个步骤的过程:

第一步:DHCP服务器发现

第二步:DHCP服务器提供

第三步:DHCP请求

新客户从一个或多个提供报文中选择一个,并向选定的DHCP服务器提供一个DHCP请求报文进行响应,同时配置一些参数

第四步:DHCP ACK

DHCP的不足

当移动节点在子网之间移动时就不能保证其IP是一致的,就不能维持与远程应用之间的TCP连接。

6、网络地址转换

网络地址转换 (Network Address Translation )简称NAT。

NAT 使能路由器对于外部世界来说甚至不像一台路由器 。NAT 路由器对外界的行为反过来就如同一个具有单一 IP 地址的单一设备。

所有离开家庭路由器流向更大因特网的报文都拥有一个源IP地址 138. 76. 29. 7 ,且所有进入家庭的报文都拥有同一个目的地址 138. 76. 29. 7 。(从本质上讲, NAT 使能路由器对外界隐藏了家庭网络的细节。)

家庭网络中分配的都是专用地址, 即其地址只在当前子网内有意义, 在因特网上找不到这个地址。

路由器从ISP的DHCP获取IP, 而家庭网内的主机从子网内的DHCP获取IP。

在NAT路由器上维护一张NAT转换表, 表中有端口与子网内某台主机IP以及其端口的对应关系。

但是这种使用端口对应主机及其端口的形式受人诟病。

NAT访问与P2P应用:

在一个P2P 应用程序中,任何参与对等方 A 应当能够对任何其他参与对等方 B 发起一条 TCP 连接。该问题的实质在于如果对等方B 在一个 NAT 后面,它不能充当服务器并接收 TCP 连接。

如果对等方 A 不在一个 NAT 的后面,则该 NAT 问题能够绕过去。在这种情况下,对等方 A 能够首先通过一个中间对等方C 与对等方 B 联系

如果双方都在NAT之后则能够使用一些NAT穿越(比如下面的UPnP)的技术克服。

7、UPnP

NAT 穿越正越来越多地由通用即插即用(UPnP) 提供。

UPnP是一种允许主机发现并配置邻近 NAT 的协议 。UPnP要求主机和 NAT 都是 UPnP兼容的。

使用 UPnP ,在主机上运行的应用程序能够为某些请求的公共端口号请求一个 NAT 映射,该映射位于其(专用 IP地址,专用端口号)和(公共 IP 地址,公共端口号)之间。

映射的公共部分对于所有主机都是可见的, 外部的主机可对次发起连接, 内部主机可以通过此部分向外部通告它的存在。

总而言之, UPnP 允许外部主机使用 TCP 或 UDP 向 NAT 化的主机发起通信会话。长期以来 NAT 一直对P2P 应用程序十分不利;UPnP由于提供了有效和健壮的 NAT 穿越解决方案,可能成为了P2P 应用程序的救世主。

因特网控制报文协议

ICMP被主机和路由器用来彼此沟通网络层的信息 。

ICMP最典型的用途是差错报告, 例如目的网络不可达之类的错误。

ICMP与IP:

ICMP报文

ICMP 报文有一个类型字段和一个编码字段,并且包含引起该 ICMP 报文首次生成的E 数据报的首部和前 8 字节内容(以便发送方能确定引发该差错的数据报)。

ICMP报文类型(图例)

里面源一直很少用到,因为TCP已经有了。

IPv6

我们知道IPV4定义的IP地址是4个8位的地址总共只有四十多亿个,在如今的时代已日渐不够用。

1、IPV6数据报格式

新的IPV6定义的IP是4个32位的地址。

图例:

(1)格式的变化

扩大的地址容量:

简化高效的 40 字节首部。

增加了流标签与优先级字段。

(2)字段

转发数据报的每台路由器将对该字段的内容减 1 。如果限制计数到达0时,则该数据报将被丢弃。

有效载荷部分

2、丢弃的IPV4字段

(1)分片/重新组装

(2)首部检验和

因为因特网层中的运输层(如 TCP 与 UDP) 和数据链路层(如以太网)协议执行了检验操作, IP 设计者大概觉得在网络层具有该项功能实属多余,可以将其去除。

(3)选项

选项字段不再是标准 IP 首部的一部分了。但它并没有消失,而是可能出现在 IPv6 首部中由"下一个首部"指出的位置上。

3、从IPV4到IPV6的迁移

我们必须考虑一个非常实际的问题: 基于IPV4的公共因特网如何迁移到IPV6(我们可以在设计IPV6使能系统时设计成向后兼容IPV4, 但已有的IPV4却不能兼容IPV6, 处理其发送的数据报等)。

可能的方法:

(1)标志日

(2)双线

使用该方法的 IPv6 结点还具有完整的 IPv4 实现。这样的结点被称为 IPv6/IPv4 结点,它有发送和接收 IPv4 与 IPv6 两种数据报的能力。

(3)建隧道

涉足 IP 安全性

一个提供各种安全性服务的网络层协议-IPsec, 在VPN中得到广泛部署。

IPsec被设计成IPV4和IPV6向后兼容。

(1)lPsec 的运输模式:

使用这种模式,两台主机首先在它们之间创建一个 IPsec 会话。(因此 IPsec 是面向连接的 ! )使用适当的会话,在这两台主机之间发送的所有 TCP 和 UDP 报文段都享受 IPsec 提供的安全性服务。在发送端,运输层向IPsee 传递一个报文段。I Psec 然后加密该报文段,在报文段上添加附加的安全性字段,并且在一个普通的 IP 数据报经过封装得到的有效载荷。

(2)lPsec提供的安全服务

IPsec 允许接收主机验证数据报的首部字段,保证被加密的有效载荷在其数据报从路到目的地的路由器中传输时没有被修改过。

当一 台主机从某受信任的源接收到一个 IPsec 数据报时,该主机确信在数据报中的源IP地址是该数据报的实际源。

版权声明:本文为CSDN博主「北海以北没有小王」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:

https://blog.csdn.net/weixin_45761327/article/details/106244061

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8