一、网络层的设计

因特网采用的设计思路是这样的:网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。网络在发送分组时不需要先建立连接。每一个分组(也就是IP数据报)独立发送,与其前后的分组无关(不进行编号)。网络层不提供服务质量的承诺。也就是说,所传送的分组可能出错、丢失、重复和失序(即不按序到达终点),当然也不保证分组交付的时限。由于传输网络不提供端到端的可靠传输服务,这就使网络中的路由器可以做得比较简单,而且价格低廉。如果主机中的进程之间的通信需要是可靠的,那么就由网络的主机中的运输层负责(包括差错处理、流量控制等)。

二、IP地址与硬件地址

从层次的角度看,物理地址是数据链路层和物理层使用的地址,而IP地址是网络层和以上各层使用的地址,是一种逻辑地址

在发送数据时,数据从高层下到低层,然后才到通信链路上传输。使用IP地址的IP数据报一旦交给了数据链路层,就被封装成MAC帧了。MAC帧在传送时使用的源地址和目的地址都是硬件地址,这两个硬件地址都写在MAC帧的首部中。

连接在通信链路上的设备(主机或路由器)在接收MAC帧时,其根据是MAC帧首部中的硬件地址。在数据链路层看不见隐藏在MAC帧的数据中的IP地址。只有在剥去MAC帧的首部和尾部后把MAC层的数据上交给网络层后,网络层才能在IP数据报的首部中找到源IP地址和目的IP地址。

总之,IP 地址放在 IP 数据报的首部,而硬件地址则放在 MAC 帧的首部。在网络层和网络层以上使用的是 IP 地址,而数据链路层及以下使用的是硬件地址。

三、地址解析协议ARP

ARP协议的用途是为了从网络层使用的IP地址解析出在数据链路层使用的硬件地址。

网络层使用的是IP地址,但在实际网络的链路上传送数据帧时,最终还是必须使用该网络的硬件地址。但IP地址和下面的网络的硬件地址之间由于格式不同而不存在简单的映射关系。地址解析协议ARP解决这个问题的方法是在主机ARP高速缓存中应存放一个从IP地址到硬件地址的映射表,并且这个映射表还经常动态更新

当主机A要向本局域网上的某个主机B发送IP数据报时,就先在其ARP高速缓存中查看有无主机B的IP地址。如有,就在ARP高速缓存中查出其对应的硬件地址,再把这个硬件地址写入MAC帧,然后通过局域网把该MAC帧发往此硬件地址。也有可能查不到主机B的IP地址的项目。这可能是主机B才入网,也可能是主机A刚刚加电,其高速缓存还是空的。在这种情况下,主机A就自动运行ARP, 找出主机B的硬件地址。

ARP是解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题。

下面我们归纳出使用ARP的四种典型情况

  1. 发送方是主机(如H1),要把IP数据报发送到同一个网络上的另一个主机(如H2)。这时H1发送ARP请求分组(在网1上广播),找到目的主机H2的硬件地址。(2)发送方是主机(如H1),要把IP数据报发送到另一个网络上的一个主机(如H3或H4)。这时H1发送ARP请求分组(在网1上广播),找到网1上的一个路由器R1的硬件地址。剩下的工作由路由器R1来完成。
  2. 发送方是主机(如H1),要把IP数据报发送到另一个网络上的一个主机(如H3或H4)。这时H1发送ARP请求分组(在网1上广播),找到网1上的一个路由器R1的硬件地址。剩下的工作由路由器R1来完成。
  3. 发送方是路由器(如R1),要把IP数据报转发到与R1连接在同一个网络(网2)上的主机(如H3)。这时R1发送ARP请求分组(在网2上广播),找到目的主机H3的硬件地址。
  4. 发送方是路由器(如R1),要把IP数据报转发到网3上的一个主机(如H4)。H4与R1不是连接在同一个网络上。这时R1发送ARP请求分组(在网2上广播),找到连接在网2上的一个路由器R2的硬件地址。剩下的工作由这个路由器R2来完成。

四、ip数据报格式

(1) 版本 占4位,指IP协议的版本。通信双方使用的IP协议的版本必须一致。目前广泛使用的IP协议版本号为4 (即IPv4);

(2) 首部长度 占4位 ;

(3) 区分服务 占8位,用来获得更好的服务,但实际上一直没有被使用过;

(4) 总长度 总长度指首部和数据之和的长度,单位为字节。总长度字段为16位,因此数据报的最大长度为 65 535字节。 然而实际上传送这样长的数据报在现实中是极少遇到的;

(5) 标识 占16位。IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。但这个“标识”并不是序号,因为IP是无连接服务,数据报不存在按序接收的问题。当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报片的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。

(6) 标志(fag) 占3位,但目前只有两位有意义。

● 标志字段中的最低位记为MF (MoreFragment)。MF = 1即表示后面还有分片的数据报。MF = 0表示这已是若干数据报片中的最后一个。

● 标志字段中间的一位记为DF (Don’tFragment),意思是不能分片。只有当DF = 0时才允许分片;

(7) 片偏移 占13位。片偏移指出:较长的分组在分片后,某片在原分组中的相对位置;

(8) 生存时间 占8位,生存时间字段常用的英文缩写是TTL (Time To Live),表明是数据报在网络中的寿命。由发出数据报的源点设置这个字段。其目的是防止无法交付的数据报无限制地在因特网中兜圈子;

(9) 协议 占8位,表示该分组携带的数据使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个处理过程(如TCP、UDP、ICMP等)。常用的一些协议和相应的协议字段值(写在协议后面的括号中)是:UDP(17)、TCP(6)、ICMP(1)、GGP(3)、EGP(8)、IGP(9)、OSPE(89)

五、IPv4地址

一个IPv4地址是32位地址,它唯一地并通用地定义了一个连接到Internet上的主机或者路由器。IP地址是连接的地址,不是主机或者路由器的地址,因为如果设备移动到另一个网络,IP地址可能会改变。把IP地址分为A、B、C、D、E共5类,s其中A类、B类和C类是单播地址。

(1)A类地址第1个字节用作网络号,且最高位为0,这样就只有7可以表示网络号,能够表示的网络号有27=128个,因为全0(即00000000)和全1(即01111111,127)在地址中有特殊用途,网络号字段为全0的IP地址是个保留地址,意思是“本网络”*;*网络号字段为127保留作为本地软件环回测试本主机之用。所以去掉有特殊用途的全0和全1的网络地址,这样,就只能表示126个网络号,范围是1~126。后3个字节用作主机号,有24位可表示主机号,能够表示的主机号有224-2=16777214,约为1600万台主机。这里减2的原因是主机号为全0和全1两种,主机号字段全0表示该IP地址是“本主机”所连接到的单个网络地址,主机号字段全1表示该网络上的所有主机(即广播地址)。IP地址空间共有2^32(4294967296)个地址,整个A类地址空间共有2^31个地址,占有整个IP地址空间的50%。A类IP地址常用于大型的网络。

(2)B类地址前2个字节用作网络号(即高16位),后2个字节用作主机号。网络号字段中最高位为10,剩下14位可以进行分配。实际上B类网络地址128.0.0.0是不能指派的,而可以指派的B类最小网络地址是128.1.0.0。因此,B类地址的可用网络数为(2^14)-1,即16383。B类地址的每一个网络号上最大主机数是2^16-2,即65 534台主机,这里减2是去掉全0和全1的主机号。整个B类地址空间共约有2^30个地址,占整个IP空间的25%。B类地址通常用于中等规模的网络。

(3)C类地址前3个字节用作网络号(即高24位),最后1个字节用作主机号,网络号字段中最高位为110,还有21位可以进行分配。但C类网络地址192.0.0.0也是不能指派的,可以指派的C类最小网络地址是192.0.1.0,因此,C类地址的可用网络总数是2^21-1,即2097151。在每一个C类网络地址上最大主机数是2^8-2,即254台主机。整个C类地址空间共有2^29个地址,占整个IP地址的12.5%。C类IP地址通常用于小型的网络。

(4)D类地址最高位为1110,因此,D类地址的第一个字节为224~239。是多播地址,不识别互联网内的单个接口,但识别接口组。主要是留给因特网体系结构委员会(IAB,Internet Architecture Board)使用的。

(5)E类地址最高位为11110,因此,E类地址第一个字节为240~255,保留用于科学研究。

网络类别 最大可指派网络数 第一个可指派网络号 最后可指派网络号 每个网络最大主机数
A (2^7)-1 1 126 (2^24)-2
B (2^14)-1 128.1 191.255 (2^16)-2
C (2^31)-1 192.0.1 223.255.255 (2^8)-2
网络号 主机号 源地址使用 目的地址使用 代表的意思
0 0 可以 不可以 本网络上的本主机
0 主机号 可以 不可以 在本网络上的某个主机
全1 全1 不可以 可以 只在本网络上广播
网络号 全1 不可以 可以 改网络号上的所有主机广播
127 非全0/全1 可以 可以 用作本地软件环回测试

Pv4地址分为A、B、C、D、E五类,出去特殊作用的D、E两类,剩下的A、B、C三类地址是我们常见的IP地址段。A类地址的容量最大,可以容纳16777214个主机,B类地址可以容纳65534个主机,C类地址可以容纳254个主机。 在这三类地址中,绝大多数的IP地址都是公有地址,需要向国际互联网信息中心申请注册。但是在IPv4地址协议中预留了3个IP地址段,作为私有地址,供组织机构内部使用。 这三个地址段分别位于A、B、C三类地址内:

  • A类地址:10.0.0.0–10.255.255.255
  • B类地址:172.16.0.0–172.31.255.255*
  • C类地址:192.168.0.0–192.168.255.255

所以局域网在选取使用私有地址时,一般会按照实际需要容纳的主机数来选择私有地址段。常见的局域网由于容量小,一般选择C类的192.168.0.0作为地址段使用,一些大型企业就需要使用B类甚至A类地址段作为内部网络的地址段。 最后需要补充说明的是,由于NAT和子网掩码的存在,实际在使用中,一个C类大小的局域网也可以选择A类的10.0.0.0网段作为自己的IP地址段。大多数局域网之所以仍然选择192.168.0.0/24或者192.168.1.0/24作为自己的IP地址段,更多的是因为约定成俗或者说网管个人习惯的关系。

作者:匿名用户 链接:https://www.zhihu.com/question/19813460/answer/13042143 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

子网划分

子网划分是指由网络管理员将本单位一个给定的网络分为若干个更小的部分,这些更小的部分被称为子网。当本单位网络中的主机总数未超出所给定的某类网络可容纳的最大主机数,但单位内部又要划分成若干个分段而便于进行管理时,就可以采用子网划分的方法。为了创建子网,网络管理员需要从原有的两个层次结构的IP 地址的主机位中借出连续的高若干位作为子网络号,后面剩下的仍为主机号字段。于是,原来的两级层次结构的IP地址在本单位内就变为三级IP地址:网络号、子网号、主机号

子网掩码 - 维基百科,自由的百科全书 (wikipedia.org)

  在因特网协议中,子网指的是从分类网络中划分出来的一部分。具有相同的前半部分地址的一组IP地址,可以利用地址的前半部分划分组。在一个IP网络中划分子网使我们能将一个单一的大型网络(看上去如此)分成若干个较小的网络。在最初引入这个概念的时候,IPv4还未引入分类网络这个概念。而引入划分子网这个概念的目的是为了允许一个单一的站点能拥有多个局域网。

  “网络掩码”又叫“子网掩码”、“地址掩码”,它是一种用来指明一个IP地址的哪些位标识的是主机所在的网络地址以及哪些位标识的是主机地址的位掩码。