网络原理(IP协议、以太网数据帧)

目录

1 网络层

1.1 IP协议报头

1.1.1 4位版本

1.1.2 4位首度长度

1.1.3 8位服务类型

1.1.4 16位总长度

1.1.5 16位标识

1.1.6 3位标志位

1.1.7 13位片偏移

1.1.8 8位生存时间

1.1.9 8位协议

1.1.10 16位首部校验和

1.1.11 32位源/目的IP地址

1.2 IP协议

1.2.1 地址管理

1.2.2 路由选择

2 数据链路层

2.1 以太网数据帧格式

2.1.1 目的地址

2.1.2 类型

2.1.3 CRC(校验和)

我们在前面了解了应用层和传输层的具体工作:网络原理(UDP协议)_咸鱼没有不粘锅的博客-CSDN博客

网络原理(TCP协议)_咸鱼没有不粘锅的博客-CSDN博客

网络原理(TCP协议2)_咸鱼没有不粘锅的博客-CSDN博客

接下来我们了解一下网络层的具体实现。

1 网络层

前面我们也了解过网络层的工作就是规划两点间的合理路径,同时对主机所处的位置进行定义,

其实就是路由选择、地址管理。

在网络层的重点协议就是IP协议。

1.1 IP协议报头

1.1.1 4位版本

取值只有两个,IPv4和IPv6,此报头IP是IPv4

1.1.2 4位首度长度

和TCP类似,首部都是变长,也是包头中带有的选项

1.1.3 8位服务类型

其实只有4位有效,这4位表达了IP协议不同的工作模式,这四位里面只有1位可以是1,不能同时出现多个1,分别表示最小延时、最大吞吐量、最高可靠性和最小成本

1.1.4 16位总长度

描述了IP数据包的报文长度是多少,IP总长度-IP报头长度=TCP报文长度,16位是64k,但是一个IP数据报最大不止64k,可以通过IP协议来传输很长的TCP数据报,就是多分几个包来传输,IP协议自带了分包组包机制

1.1.5 16位标识

同组的包就会有相同的标识

1.1.6 3位标志位

主要是两位在起作用,一位用来表示当前是否分包,另一位用来表示当前这个包是否是最后一个。

1.1.7 13位片偏移

用来区分前后顺序,数据包的16位标识符相同,按照顺序片偏移逐渐增大,最后一个包有特殊的标识符。

1.1.8 8位生存时间

网络上可能有很多数据包在传输,有的可能顺利发送,有的包可能永远也无法发送成功,在多次重传后失败就会放弃,这就是包的生存时间。TTL的单位是次数,是一个整数,一般都是32/64/128这样的整数,预期正常情况下,数据包会在很短的次数内就能发送成功,数据传输每经过一个路由器转发,TTL就-1,如果减到0就会把包丢弃掉

1.1.9 8位协议

IP载荷中数据报使用的传输层协议,接收方收到IP数据报进行分用,分用到网络层的时候,接下来就要把数据交给传输层,把数据给传输层的8位协议来进行分区

1.1.10 16位首部校验和

校验和我们前面说过,只是这个校验和只针对首部校验,载荷部分TCP/UDP自身进行校验

1.1.11 32位源/目的IP地址

发件人地址;收件人地址

IP本质上是32位整数,4个字节,类似于一个int,为了方便看,就会转成“点分十进制”表示方式。使用三个点把IP地址分成4个部分,每个部分都是1个字节,每部分的范围是0-255。前面我们了解到IP地址用来区分网络上的唯一一台主机的,但是一个IP地址是四个字节,32个bit位,能表示的范围是0-42亿9千万。

按照上述设定,IP地址最多只能表示不到43亿个不同的主机,然而当前世界上的上网设备已经超出这个数值,然而如何解决这个问题呢?有以下办法:

  • 动态分配IP地址,随时分配收回IP,但仅仅是提高了利用率,治标不治本;
  • NAT机制(主流机制),不再强制要求每个主机都有独立的IP,把IP分为两大类:①外网IP/公网IP;②内网IP/私网IP/局域网IP;③IPv6

约定 10.* , 172.16-172.31.* , 192.168.* 这三种都是局域网IP,在同一个局域网内部IP不允许重复,在不同的局域网中,IP之间不允许重复,如果在局域网内部想想访问耨个外网的服务器,就会使用一个外网IP来代替一大波局域网中的设备,大大节省了外网IP的个数。

IPv6使用了16个字节,128位表示IP地址,相较于IPv4扩大了很多,42亿*42亿*42亿*42亿,IPv6的IP地址彻底解决IPv4IP地址不够用的问题,但是为什么IPv6没有IPv4普及呢,由于IPv6和IPv4不兼容,这种更新换代除非万不得已,否则就不会全部大换血。

1.2 IP协议

1.2.1 地址管理

① IP地址具体规则

组成:IP地址分为两个部分,网络号和主机号

  • 网络号:标识网段,保证相互连接的两个网段具有不同的标识;
  • 主机号:标识主机,同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号。

用一个局域网中,主机之间的网络号是相同的,主机号必须不同。在两个相邻的局域网中(同一个路由器连接的局域网)要求网络号是不同的。

②子网掩码

子网掩码划分出网络号的范围,子网掩码有32位,左半边都1,右半边都是0,左半边有多少个1就表示IP地址左侧有多少位是网络号(把子网掩码和IP地址进行按位与运算,得到的结果就是网络号)。

③ 特殊的IP地址

  • 如果一个IP地址主机号为0,此时这个IP就表示网络号,192.168.0.0代表当前局域网
  • 如果一个IP地址主机号为1,此时这个IP标识这个局域网的网关(出入口,路由器),192.168.0.1就代表局域网的网关(通常就是路由器的IP)
  • 如果一个IP地址主机号全是1,此时这个IP表示广播IP
  • 127.*开头的都是环回IP

1.2.2 路由选择

路由选择就像地图导航一样,在两点之间规划出合理路线,但是区别在于路由选择是启发式的过程,一个点一个点导航,而不是直接从起点导到终点。

IP数据报中就包含目的IP,网络数据报到达路由器的时候,路由器本身就有一个路由表的数据结构(路由表就是这个路由器认识的路),一个路由器无法认识网络全貌,但是认识附近的一部分。如果当前目的IP路由器认识,就会给出一个明确路线,如果当前目的IP路由器不认识就会把数据报转发给一个更厉害的路由器(在路由表中有个默认选项),如果始终找不到目的地,比如IP地址不存在或者不可到达,就会TTL,数据报被丢弃。

但是路由器不但要找一条路,也需要筛选一条更合适的路。

2 数据链路层

数据链路层最主要的协议是以太网

2.1 以太网数据帧格式

2.1.1 目的地址

这个地址是mac地址,是用6个字节表示的地址,主要是在数据链路层实现相邻节点之间的转发,mac地址和IP地址原理相同,用来标识主机位置,由于是两拨人各自同时研发的,因此效果相同都在使用。mac地址有6个字节,当下的mac地址还是够用的,42亿*65535,可以让每个主机都有独立的mac地址,这个地址是网卡出厂的时候就写好了的。理论上来说mac地址是唯一的,但也不妨碍盗版网卡的不合理mac地址。mac地址也是主机身份标识的一种方式。mac地址通常使用16进制的方式来表示。

mac地址的作用就是标识两个相邻节点之间的传输。例如我从西安去西藏旅游中途经过很多站。这里源IP就是西安,目的IP就是西藏,这是始终不变的,但是中间的每一站的起点和终点分别是源mac和目的mac,例如先从西安到咸阳机场,这里源mac就是西安,目的mac就是咸阳,再从咸阳到西藏机场,这里源mac就是咸阳,目的mac就是西藏……

2.1.2 类型

类型有不同的取值是用来描述后面承载什么样的数据,0800就是IP数据包,0806就是ARP请求/应答,8035就是RARP请求/应答,后面两种数据帧是特殊的以太网数据帧,不是用来传输数据的,而是让相邻节点之间相互认识的。

IP数据报中的1500是一个以太网数据帧的最大值,以太网就是传输过程中的基础设施,数据链路层中不同协议就相当于快递运输过程中派件的工具,以太网属于载重量较小的工具,如果想要运输更多的数据就需要用更多的工具来运输,IP协议分包就是保证都在以太网承受范围内。

2.1.3 CRC(校验和)

校验和我们并不陌生,UDP校验和是通过软件(操作系统内部)来计算的,而这里的校验和通常是硬件(网卡)来计算的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值