写点什么

计算机网络基础 (二)--- 网络层 -IP 协议详解

用户头像
书旅
关注
发布于: 2020 年 07 月 14 日
计算机网络基础(二)---网络层-IP协议详解

文章内容概览



虚拟互联网络

从上一篇文章最后提到的一个问题来引出虚拟互联网络



对这个网络拓扑,上篇文章中提出了一个非常重要的问题:计算机A如何跨设备传输数据到计算机C?



其实可以把这个小的网络拓扑放大



在这个大型网络拓扑中,计算机A如何将数据传输给计算机B,这个的性质和上边那个简单的网络拓扑的性质是一样的。这个网络其实有很多的路径可以把计算机A的数据传输给计算机B,比如:



计算机A的数据先经过中型网络、*大型网络*、中型网络、*小型网络*,然后到达计算机B。除了上图的这条路径以外,还可以画出别的很多路径。通过这张网络拓扑可以知道,A的传输路径有很多条。其实这些网络路径,对于使用者,是不需要关心的,也就是说我们不关心网络是怎样连接的,也不关心数据包是怎么走的,这个是由网络层所解决的。网络层提出了一个非常重要的概念,虚拟互联网络



虚拟互联网络



  • 实际的计算机网络是错综复杂的

  • 不同的物理设备通过使用IP协议,就屏蔽了物理网络之间的差异

  • 当网络中的主机使用IP协议相连接时,则无需关注网络细节,只需关心端到端的连接



也就是说,上边提到的复杂的网络拓扑,其实我们不用关心。只需要把中间的部分看做虚拟的互联网络即可。如下图,计算机A通过网络连接到一个虚拟的互联网络中,*计算机B*也连接到了这个虚拟的互联网络中。那么计算机A只需要将数据发送到虚拟的互联网络中,这个虚拟的互联网络就可以解决数据传输的问题,并且将其准确的传输到计算机B。这个就是虚拟互联网络的概念





IP协议



  • 对于网络层,IP协议是其中一个非常重要的协议

  • IP协议使得复杂的实际网络变为一个虚拟互联的网络(也就是我们只需要将终端设备连接到这个网络中去即可,并不需要关心里边实际的复杂网络)

  • IP协议使得网络层可以屏蔽底层细节而专注网络层的数据转发(如果单从网络层去看,我们是不用关心数据包是通过海底电缆还是通过无线WiFi传输到目的计算机的)

  • IP协议解决了在虚拟网络中数据报传输路径的问题



在上一篇的概述篇中提到了MAC地址,它是每一个网络设备或网卡的身份证,在数据链路层,只要拥有了这个MAC地址,就可以进行数据帧的传输了。MAC地址是48位,使用十六进制来表示。我们可以将MAC地址展开成二进制的格式



网络层,同样也有一个地址的概念,这个地址称之为IP地址。IP地址总共有32位,一般用点分十进制表示。也可以展开成二进制的格式



IP地址对于网络层来说,和MAC地址对于数据链路层来说,功能是类似的。这里的IP地址是每一个网络设备唯一的一个身份,也就是对于网络层来说,每一个网络设备,它都有一个唯一的IP地址,通过这个IP地址就可以标识唯一的一个设备



MAC地址和IP地址不同之处



对于MAC地址,它是唯一的,并且是不可改变的。因为网卡从一个地方挪到另外一个地方,这个MAC地址是不变的。但是IP地址不同,如果我们的笔记本在家连接WiFi的时候是IP地址A,当我们把笔记本电脑拿到公司或咖啡馆,这个IP地址将会发生变化,因此,IP地址对于网络设备来说,它是可变的。也就是说,如果网络设备的网络环境变了,IP地址就会跟着变化



IP地址



  • IP地址长度为32位,常分成4个8位

  • IP地址常使用点分十进制来表示(0~255.0~255.0~255.0~255,通过计算可以知道,最多可以表示2的32次方个IP地址,大概42亿)



IP协议

在了解IP协议之前,先看一下IP协议所处的一个位置。在物理层,它传输的是0、1这样的比特流;在数据链路层,传输的是数据帧,数据帧包括帧首部、帧尾部和“帧”数据,“帧”数据主要就是IP数据报。现在对IP数据报进行详细的剖析,它将会分成IP首部和*IP数据报的数据*两个部分





要学习IP协议,IP协议的首部是非常重要的内容,后边也会重点介绍IP首部的信息。下边是IP首部的具体格式





从上图可以看出,IP首部中包含了非常多的信息,包括版本、*协议*、IP地址等。上边的每一行都是32个比特位,也就是4个字节,前边五行是必须存在的内容,第六行是可有可无的,第七行是IP数据。因此对IP首部来说,至少会有20个字节的长度



IP首部中每一部分的含义



  • 版本:占4位,指的是IP协议的版本,通信双方的版本必须一致,当前主流版本是4,即IPv4,也有IPv6

  • 首部长度:占4位,最大数值为15,表示的是IP首部的长度,单位是“32位字”(4个字节),也就是IP首部最大长度为60字节

  • 服务类型:这个一般是不需要关心的

  • 总长度:占16位,最大数值为65535,表示的是IP数据报总长度(IP首部+IP数据) (在前边介绍数据链路层的时候,也提到过一个长度。对于数据链路层的长度,称之为MTU,一般为1500字节。而IP数据报的最大长度有65535个字节,比MTU要大。如果真正传输的时候,如果出现这种情况,数据链路层会对IP数据报进行分片,也就是将一个较长的IP数据报拆分成多个数据帧来进行传输)

  • 标识:协议内部所使用的,无需关心

  • 标记:标记IP报文是否可以进行分片

  • 片偏移:前边有提到,如果IP数据报的长度过长,会进行IP报文的分片,把一个IP报文拆分成多个数据帧进行数据链路层的传输。因此,如果拆分的话,就需要使用片偏移来记录当前的数据帧,保存的第几个偏移的IP数据

  • TTL:占8位,表明IP数据报文在网络中的寿命,每经过一个设备(不管是路由器还是计算机),TTL减一,当TTL=0时,网络设备必须丢弃该报文(它解决的就是,当网络报文找不到终点的时候,避免网络报文在网络中无限的传输,以消耗带宽)

  • 协议:占8位,表明IP数据所携带的具体数据是什么协议的(如TCP、UDP等,一些协议对应的值,可参考下图)

  • 校验和:占16位,校验IP首部是否有出错(接收方接收到IP首部之后也会进行校验,如果有错,则直接丢弃)

  • 源IP地址:*发送*IP数据报的网络设备的IP地址

  • 目的IP地址:IP数据报要到达的目的网络设备的IP地址



一些协议所对应的值



这些协议的数据,使用IP协议进行传输的时候,都会把IP首部中的协议赋不同的值。可以看到里边也有IP协议对应的值,也就是说,对于IP协议来说,IP协议的数据还可以继续封装IP数据,也就是IP数据中的IP数据,在一些特殊的场合,也有它的作用



在快速变化的技术中寻找不变,才是一个技术人的核心竞争力。知行合一,理论结合实践





发布于: 2020 年 07 月 14 日阅读数: 158
用户头像

书旅

关注

公众号:IT猿圈 2019.04.11 加入

还未添加个人简介

评论

发布
暂无评论
计算机网络基础(二)---网络层-IP协议详解