Linux网络编程基础_4_网络层(二)--IPv4(上)

网络层(二)

--IPv4()

一、IP数据包格式[IPv4分组]

IP数据包是网络传输的信封,它说明了数据发送的源地址和目的地址,以及数据传输状态。一个完整的数据包由首部和数据两部分组成。首部前20字节属于固定长度,是所有IP数据包必须有的,后面是可选字段,其长度可变,首部后面是数据包携带的数据,见下图。



1、版本(4bit

IP协议版本已经经过多次修订,1981年的RFC0791描述了IPV4RCF2460中介绍了IPV6

2、报头长度(4bit

报头长度是报头数据的长度,以4字节表示,也就是以32字节为单位。报头长度是可变的。必需的字段使用20字节(报头长度为5IP选项字段最多有40个附加字节(报头长度为15)),即固定部分+可变部分,不会超过60字节。

3、服务类型(8bit

该字段给出发送进程建议路由器如何处理报片的方法。可选择最大可靠性、最小延迟、最大吞吐量和最小开销。路由器可以忽略这部分

4、数据报长度(16bit

该字段是报头长度和数据字节的总和,以字节为单位。[数据报的总长度]最大长度为65535[2^16- 1]字节。

5、标识符(16bit

是数据的主机为数据报分配一个唯一的数据报标识符。在数据报传向目的地址时,如果路由器将数据报分为报片,那么每个报片都有相同的数据标识符。

6、标志(3bit,目前只有前两位有意义)

    位0:未用。

    位1:不是报片。如果这位是1,则路由器就不会把数据报分片。路由器会尽可能把数据报传给可一次接收整个数据报的网络;否则,路由器会放弃数据报,并返回差错报文,表示目的地址不可达。IP标准要求主机可以接收576字节以内的数据报,因此,如果想把数据报传给未知的主机,并想确认数据报没有因为大小的原因而被放弃,那么就使用少于或等于576字节的数据。

    位2:更多的报片。如果该位为1,则数据报是一个报片,但不是该分片数据报的最后一个报片;如果该位为0,则数据报没有分片,或者是最后一个报片。

7、报片偏移(13bit

该字段标识报片在分片数据报中的位置。其值以8字节为单位,最大为8191字节,对应65528字节的偏移。

例如,将要发送的1024字节分为576424字节两个报片。首片的偏移是0,第二片的偏移是72(因为72×8576)。

注意:结合IP数据报分片进行理解[仅对数据部分进行分片]

8、生存时间(8bit

如果数据报在合理时间内没有到达目的地,则网络就会放弃它。生存时间字段确定放弃数据报的时间。

生存时间表示数据报剩余的时间,每经过一个路由器都会将其值减一,或递减需要数理和传递数据报的时间。实际上,路由器处理和传递数据报的时间一般都小于1S,因此该值没有测量时间,而是测量路由器之间跳跃次数或网段的个数。发送数据报的计算机设置初始生存时间。

9、协议(8bit

该字段指定数据报的数据部分所使用的协议,因此IP层知道将接收到的数据报传向何处。TCP协议为6UDP协议为17

10、报头检验和(16bit

该字端使数据报的接收方只需要检验IP报头中的错误,而校验数据区的内容或报文。校验和由报头中的数值计算而得,报头校验和假设为0,以太网帧和TCP报文段以及UDP数据报中的可选项都需要进行报文检错。

11、源IP地址(32bit

表示数据报的发送方。

12、目的IP地址(32bit

表示数据报的目的地。


二、IPv4地址与网络地址转换NAT

点分十进制记法:

       为了记忆方便,IP地址采用点分十进制表示,如:128.10.2.30,其二进制格式:10000000.00001010.00000010.00011110

1IPv4地址

IP地址的编址方法,共经历了三个历史阶段。这三个阶段是:

1) 分类的 IP地址。这是最基本的编址方法,在1981年就通过了相应的标准协议

2) 子网的划分。这是对最基本的编址方法的改进,其标准[RFC950]1985年通

3) 构成超网。这是比较新的无分类编址方法。1993年提出后很快就得到推广应用。


a)为了适应不同网络规模的需求,将IP地址进行分类,不同类型IP地址拥有的主机数不一样。每一类地址都由两部分组成:网络号Net-id+主机号Host-id,前者标志主机(或路由器)所连接到的网络,后者它标志该主机(或路由器)。

两级的IP地址可以记为:

IP地址::={ <网络号>,<主机号>}


b)特殊地址

对于因特网IP地址中有特定的专用地址,不作分配:

(1)主机地址全为"0"

    不论哪类网络,主机地址全为"0"表示指向本网,常用在路由表中。例如,18.0.0.0表示其网络号为18

(2)主机地址全为"1"

    主机地址全为"1"表示广播地址,向特定的所在网上所有主机发送数据报。例如,IP地址为202.119.224.225,是要求指向202.119.224网上的所有主机转发数据报。

(3)4字节32比特全为"1"

    若IP地址4字节32比特全为"1",表示仅在本网内进行广播发送。

(4)网络号127

    TCP/IP协议规定网络号127不可用于任何网络。其中有一个特别地址:127.0.0.1称之为回环地址


c)使用范围:  

网络类别

最大网络数

第一个可用的网络号

最后一个可用的网络号

每个网络中的最大主机数

A

126

1

126

16777214

B

16382

128.1

191.255

65534

C

2097150

192.0.1

223.255.255

254



d)IP地址的重要特点

1IP地址是一种分等级的地址结构。分两个等级的好处是:

    第一,IP地址管理机构在分配IP地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配。这样就方便了IP地址的管理。

    第二,路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间。

2)实际上IP地址是标志一个主机(或路由器)和一条链路的接口。

    当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的IP地址,其网络号net-id必须是不同的。这种主机称为多归属主机(multihomedhost)

由于一个路由器至少应当连接到两个网络(这样它才能将IP数据报从一个网络转发到另一个网络),因此一个路由器至少应当有两个不同的IP地址

3)用转发器或网桥连接起来的若干个局域网仍为一个网络,因此这些局域网都具有同样的网络号net-id

4)所有分配到网络号net-id的网络,范围很小的局域网,还是可能覆盖很大地理范围的广域网,都是平等的。

5)在同一个局域网上的主机或路由器的IP地址中的网络号必须是一样的。路由器总是具有两个或两个以上的IP地址。路由器的每一个接口都有一个不同网络号的IP地址。两个路由器直接相连的接口处,可指明也可不指明IP地址。如指明IP地址,则这一段连线就构成了一种只包含一段线路的特殊“网络”。


2、网络地址转换NAT

网络地址转换(NAT,NetworkAddressTranslation)属接入广域网(WAN)技术,是一种将私有(保留)地址转化为合法IP地址的转换技术,它被广泛应用于各种类型Internet接入方式和各种类型的网络中。原因很简单,NAT不仅完美地解决了lP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。


说明:私有IP地址是指内部网络或主机的IP地址,公有IP地址是指在因特网上全球唯一的IP地址。

RFC1918为私有网络预留出了三个IP地址块,如下:

A类:10.0.0.010.255.255.255

B类:172.16.0.0172.31.255.255

C类:192.168.0.0192.168.255.255

上述三个范围内的地址不会在因特网上被分配,因此可以不必向ISP或注册中心申请而在公司或企业内部自由使用。


NAT工作流程

如图这个client(终端)的gateway(网关)设定为NAT主机,所以当要连上Internet的时候,该封包就会被送到NAT主机,这个时候的封包HeadersourceIP(源IP)为192.168.1.100

而透过这个NAT主机,它会将client的对外联机封包的sourceIP ( 192.168.1.100 ) 伪装成ppp0(假设为拨接情况)这个接口所具有的公共IP,因为是公共IP了,所以这个封包就可以连上Internet了!同时NAT主机并且会记忆这个联机的封包是由哪一个(192.168.1.100 ) client 端传送来的;

Internet传送回来的封包,当然由NAT主机来接收了,这个时候,NAT主机会去查询原本记录的路由信息,并将目标IPppp0上面的公共IP改回原来的192.168.1.100

最后则由NAT主机将该封包传送给原先发送封包的Client

你可能感兴趣的:(NAT,IP地址,tcpip,网络层,计算机网路)