当前位置: 首页 > news >正文

【计算机网络入门】初学计算机网络(十)(重要)

目录

1. 网络层的作用

2. IPV4

2.1 IP 数据报格式 

2.2 IP地址分类方案

2.3 数据的转发

2.4 特殊用途的IP地址

3. 子网划分和子网掩码

3.1  子网划分

3.2 子网掩码


1. 网络层的作用

        按照教学五层模型,应用层、传输层、网络层、数据链路层、物理层,应用层的单位是报文,经由传输层切割为报文段,在网络层给报文段加了一个IP首部,就变成了IP数据报(分组),经由数据链路层封装成帧,再由物理层以比特的形式进行传输。

2. IPV4

2.1 IP 数据报格式 

首部固定部分(20字节) + 可变部分(0-40字节)

        当IP数据报过于大的时候,会将数据进行分片,我们通过最低位MF和次低位DF,可以了解到分片的信息。假如有一段IP数据报不允许分片,但是这段IP数据报过于大了,那说明这段IP数据报没有办法传给目的网络。

片偏移是指数据在分片之前所处的位置,以8B为一个单位。

ip数据报头结构还包含着生存时间(TTL),当每经过一个路由器就会减1,就丢弃分组,如果减到0就会向主机发送一个ICMP报文。

发送和接收方的地址各占32bit。

2.2 IP地址分类方案

        最初的时候,我们使用IPV4协议,有32bit,也就是说最多能表示2的32次方 = 42亿个地址,当时只有政府、学校、军队才会有机会使用互联网,所以42亿完全够用。

2.3 数据的转发

        每一个路由器都是一个网关,维护同一类的ip地址;当有数据进行转发的时候会根据路由转发表进行转发。

①当一个IP数据报需要进行发送的时候,首先会查看头部的源地址和目的地址,判断是否是同一类网络(比如B类网络需要比对前16个bit位),如果属于同一类网络那就不需要经过路由器的转发。

②数据链路层把数据分组封装成MAC帧,根据ARP协议将目的地址的MAC地址找到,根据目的地址的MAC地址由交换机、集线器不断转发最终找到目标;目标收到MAC帧之后,把MAC帧的控制信息拆掉,最后得到的是真正的IP数据报。

2.4 特殊用途的IP地址

①主机号全0,既不能用于发送地址也不能用于目的地址。

②C类广播:x.x.x.255(主机号全为1),对x.x.x进行广播。

③0.0.0.1只能做源地址。 

④0.0.0.0本网络的本主机。暂时没有IP地址。此时需要发送DHCP报文从而获得地址。

⑤255.255.255.255本网络进行广播。

⑥127.x.x.x回环地址,表示主机本身。当我们在本地开发服务端和客户端,我们需要测试通信,就可以把源地址和目的地址设置成127.0.0.1,由于网络号是127,网络层接收之后会发给自己。

3. 子网划分和子网掩码

3.1  子网划分

        如果是B类网址,我们有16位主机号,我们可以从16位主机号中拿出一位作为子网号,就可以把这一个网分成两个子网。简单的说就是把原本的主机号划出一部分作为子网号,划分为不同的子网从而提高资源的利用率。

  每个子网地址的主机地址不能全0(子网本身),全1(就是广播地址)。只有网络号+子网号相同的地址才算是同一个子网。

3.2 子网掩码

        本机IP地址和子网掩码做与运算,可以得到本机网络号和子网号;目的主机也是如此,这样一来我们可以判断目的地址和本地地址是否属于同一个子网。如果支持子网划分,那么该路由器的路由转发表就会增加子网掩码。目的IP地址和子网掩码做按位与运算,再和目的网络号+子网进行对比找到对应的转发接口进行转发。

        加上了子网掩码,数据该怎么发送呢?首先我们将目的地址和源地址对自己的子网掩码进行按位与,得到网络号和子网号,如果网络号和子网号相同就说明是同一个子网,就不需要进行转发,此时我们直接把数据报封装成MAC帧,直接找到目的地址的MAC地址,数据就发送过去了;        

        但是如果网络号和子网号不同,说明不属于一个子网,需要进行路由器的转发,通过ARP协议知道网关的MAC地址,所以发送给网关(路由器),在数据链路层中,路由器把MAC帧的首部尾部拆除之后交给网络层,网络层根据目标地址来决定数据的去向。

        对于没有进行子网划分的网络,例如C类网络会给一个默认的子网掩码:255.255.255.0;

        对于路由表没有记载的路由,会有一个默认路由,当ip地址和默认路由的子网掩码按位与,我们会得到默认路由0.0.0.0就会从指定接口进行转发。

相关文章:

  • Kaldi环境配置与Aishell训练
  • 基于STM32的智能家居中控系统
  • Jira获取story信息更新子任务状态脚本技术实现
  • C语言嵌入式Linux高级编程:程序的编译、链接与运行深度解析
  • prisma+supabase报错无法查询数据
  • 19.6、C++11新特性有哪些⑥【并发】
  • Elasticsearch:驾驭数据浪潮,利用Java API与Elasticsearch DSL构建智能搜索
  • DataWorks (数据工厂)介绍
  • 【word】电子签名设置、保存和调用
  • 【含文档+PPT+源码】基于SpringBoot电脑DIY装机教程网站的设计与实现
  • QT实现简约美观的动画Checkbox
  • 深入理解Linux内存缓存:提升性能的关键
  • 每日一题-奶酪题(蓝桥杯)【模拟】
  • LeeCode题库第四十一题
  • 《白帽子讲 Web 安全》之深入同源策略(万字详解)
  • 数字内容体验个性化推荐的核心优势是什么?
  • 力扣203.移除链表元素
  • iOS应用手动脱壳砸壳教程
  • 代码随想录算法训练营第三十一天 | 56. 合并区间 738.单调递增的数字
  • linux下自旋锁(spin_lock)
  • 上海:以税务支持鼓励探索更多的创新,助力企业出海
  • “五一”逃离城市计划:带上帐篷去大自然里充电
  • 美国参议院投票通过戴维·珀杜出任美国驻华大使
  • 金融街:去年净亏损约110亿元,今年努力实现经营稳健和财务安全
  • 广东雷州农商行董事长、原行长同日被查
  • 影子调查丨危房之下,百余住户搬离梦嘉商贸楼