TCP/IP网际层

首先的介绍一下网际层:

  • 用于逻辑寻址并且发送数据。

在网络访问层 ,是对应的网络适配器,唯一的物理地址接口,也是可以用于接收发数据。但是存在不同的点是,这个接收发送数据对于上层的细节一点也不了解。它不知道IP 地址,也不知道这个是要发给谁的帧,它只监听是否收到数据帧,发现其中目标地址我自己匹配。

如果是在路由式网络中(相当与公网)

不能根据物理地址来进行数据传输,因为物理地址进行传输根本不能够跨越路由器接口来运行。
因此,TCP/IP隐藏了物理地址,以一种逻辑化,层次化的寻址方案对网络进行组织。这种逻辑寻址方案
就是由网际层的IP 协议维护,而逻辑地址称为IP地址。
对于逻辑地址(IP地址)也需要进行解析,所以地址解析协议(ARP)是另一种网际层协议,它维护一个表格,用于把IP地址映射到物理地址。这个ARP表连接了IP地址和MAC 地址。

在路由式网络中,TCP/IP 软件使用如下策略在网络上发送数据

  • 1、 如果目的地址和源地址在同一个网段,源地址计算机就把数据包直接发送给目的计算机。

  • 2、如果目的地址和源地址不在同一个网段:

    a. 直接将数据包转发给网关,网关式位于局域网段上的一个设备,能够把数据报转发到其他的网段(就相当于路由器)。网关地址被ARP 解析为物理地址,数据发送到网关的网络适配器。
    b. 数据报通过网关被路由到较高网段,再次重复上述过程,如果目的地址在新的网段里,数据就会被发送到目的地,否则就会发送到另外一个网关。
    c. 数据报经过一系列网关转发到目的网段,目的IP被ARP 协议解析为物理地址,数据被发送到目的网路适配器。
    TCP/IP网际层

网际协议(IP)

上面说了网际层就是来进行逻辑寻址的,逻辑寻址寻的是IP。 IP协议提供了一种分成的与硬件无关的寻址系统,具有复杂的路由式网络中传递数据所需要的服务。
在公网上面每一个网络都会存在唯一的IP地址。但是一个主机可以对应多个IP(对于局域网网内,一个公网分配与不同的子网) ,一个IP 只能找到一个主机。所以IP 分为网络ID和主机ID。(以上为个人理解,如有不对请大佬们指出)。

IP 报头字段

每一个IP数据都是以IP报头开始的。(这样可以区分接收正确的信息做判断。)
**所以IP报头包含了大量的信息,包括源IP地址、数据长度、IP版本号、目的IP地址、对路由器的特殊指令。
下面这个网站可以看报头更多细节不过是英语的。

https://www.rfc-editor.org/rfc/rfc791.txt
TCP/IP网际层
这个是我从那里截的图。
第一个是版本号 占 4bits
第二个是 IHL(网际报头长度) 也是 4bits
第三个是服务类型 : 8 bits
第四个是总长度 :16bits
Identification(标识): 16 bits
Flasgs (标记) :3 bits
Fragment Offset(分段位移): 13 bits
Time to Live(生存时间) : 8 bits
Protocol (协议): 8 bits
Header Checksum(报头校验和) : 16 bits
Source Address(源ip 地址 ): 32 bits
Destination Address(目标ip地址): 32 bits
Options 选项:是一个变量
padding 填充: 是以32bits 为单位表示报头的长度

IP寻址

通过上面可以看出来 IP 地址是一个32 bits 的地址
TCP/IP网际层

关于bit 我为了直观的表示我就借助程序员计算器来表示。bit 是位的意识,在计算机中最小的存储单位量。这个地方只是简单的介绍以下位。如果更多了解自行百科。

可以看出来32位是 是4个字节(一个字节是8位),所以IP地址的表现形式为"点分十进制形式"常常分为四段xxx.xx.xx.x的表现形式。
IP 地址之前说了分为包含两种信息(网络ID\和主机ID)。绝大多数IP地址分为以下几类:

  • A类地址: IP地址前8位表示网络ID,后面24位表示主机ID
  • B类地址: IP地址前16位表示网络ID,后16位表示主机ID
  • C类地址:IP地址前24位表示网络ID,后8位表示主机ID

使用的位数越多包含的组合就越多。一个A类的网络大约包含2^24 ,也就是16777216台主机。

通过地址前几位查看网络地址的范围。
TCP/IP网际层