网络原理——网络层与数据链路层

article/2025/8/23 23:44:06
JavaEE传送门

JavaEE

网络原理——No.3 传输层_TCP的滑动窗口, 流量控制与拥塞控制

网络原理——No.4 传输层_TCP协议中的延迟应答, 捎带应答, 面向字节流与TCP的异常处理


目录

  • 网络层
    • IP 协议
    • IP 地址
    • 路由选择
  • 数据链路层
    • 以太网


网络层

网络层做的工作, 就是两点之间, 规划出一个合理的路径. 同时也需要对主机所处的位置, 进行定义.

网络层做的工作

  1. 地址管理
  2. 路由选择

IP 协议

注: 本篇文章讲解的 IP 默认都是指 IPv4

IP 协议的报文格式

网络上可能会有很多的数据报在传输, 有的数据报可以顺利发到对面, 有的可能是永远也发不过去(收件人地址写错了)

永远也发不过去的数据报, 不可能无限的转发下去, 转发到一定程度, 发现还是没到, 就会被丢弃.

TTL 单位是 “次数” 是一个整数. 一般是 32/ 64/ 128这样的整数.

数据报传输时, 每经过一个路由器转发, TTL-1 , 如果减到 0 了, 此时就要把包丢弃了,

(预期正常情况下,数据报是可以在很短的次数内就能传输到世界上的任何一个主机上的)

为什么转发几次就能到呢?

基于一个社会科学上的假设: 六度空间理论.

IP 地址本质上是一个 32 位的整数(四个字节, 类似于一个int)

为了给人来看, 通常就会把这个32位整数, 转成 "点分十进制"表示方式 (类似192.168.1.101)

使用三个点, 把 IP 地址分成 4 个部分, 每个部分 1 个字节 (每个部分的取值范围 0-255)

IP 地址是用来区分网络上的唯一一台主机的

一个 IP 地址, 是 4 个字节, 32 个 bit 位, 能表示的范围 0->42亿9千万

按照上述设定, IP 地址最多只能表示不到 43亿 个不同的主机

此时当时能够上网的设备早以超过了这个数值.

IP 地址不太够用, 应该怎么办呢?

  1. 动态分配 IP 地址

    设备上网的时候, 才分配 IP 地址, 不上网的时候, 就把 IP 回收, 给别人用

    (治标不治本, 这种方案, 并没有增加 IP 地址的数量, 只是提高了利用率)

  2. NAT 机制(主流机制)

    不再强制要求每个主机都有独立的 IP

    把 IP 地址分为两大类

    1)外网 IP/ 公网 IP

    2)内网 IP/ 私网 IP / 局域网 IP

    • 约定, 10.*, 172.16-172.31*, 192.168.*都是局域网 IP

    • 约定, 在同一个局域网内部, IP 不能重复

    • 在不同的局域网中, IP 之间允许重复

    • 如果我们在局域网内部想访问某个外网的服务器, 就会使用一个外网 IP 来代替一大波局域网中的设备(大大节省了, 外网 IP 的个数)

举个例子:

现在我想通过我的电脑, 发送一个数据报给 xxx 服务器, 会经历一个什么样的过程呢.

返回响应时, 按原路返回, 路由器记录了映射关系(记住了是谁替换了谁), 方便还原.

运营商路由器, 还连接着很多很多, 千家万户的设备

一个 外网 IP 就可以代替上万个设备

当前网络环境的现状, 就是 NAT + 动态地址分配

NAT核心: 用一个 IP 地址代替很多设备, 这样就节省了 IP地址 的个数

小知识:

IPv6 可以彻底解决 IP 地址不够用问题.

IPv4 4字节, 32位来表示 IP 地址.

IPv6 16字节, 128位表示 IP 地址, 扩大的远远不止4倍(42亿 * 42亿 * 42亿 * 42亿) 给地球的每一粒沙子都分配一个 IP 地址, 也是够用的.

为什么 IPv6 没有大规模普及呢?

  • IPv6 最大的问题就是, IPv6 和 IPv4 不兼容

  • 比如: 现在有个 IPv4 的路由器, 这个路由器已经用了很多年了. 要想升级, 就要换设备, 要换设备就要花钱, 企业中如果换设备, 就是一笔不小的开销.

但是在国内, IPv6 的普及还是很好的, 目前70% 的家用宽带已经能支持 IPv6 了. (默认都是未开启的状态). 当前看到的各种常见的用用程序也都支持 IPv6 了.


IP 地址

组成

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

  • 网络号标识网段,保证相互连接的两个网段具有不同的标识;(网段: 网络号, 局域网的身份标识)
  • 主机号标识主机,同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号;
  • 同一个局域网中, 主机之间的网络号是相同的, 主机号必须不同
  • 两个相邻的局域网中, 要求网络号是不同的 (同一个路由器连接的局域网, WAN口和 LAN口要是不同的网络号)

子网掩码 (划分出哪里到哪里是一个网络号)

32位的整数, 左半边都是 1, 右半边都是 0. (不会1, 0 混着)

左半边有多少个 1 就表示 IP 地址左侧的多少位是网络号. (把子网掩码和 IP 地址进行按位与运算, 得到的结果就是网络号)

  • 在我的局域网里, 我的电脑, 我的手机, 其他的设备, 只要是连在我这个路由器上, 大家的网络号都是 “192.168.1”, 但主机号不同.

  • 如果我家的路由器又连着我家的光猫. 我的路由器连接了两个局域网, 这两个局域网的网络号是不同的.

分类

过去曾经提出一种划分网络号和主机号的方案,把所有IP 地址分为五类,如下图所示(该图出 自 [TCPIP] ).

# 注意 #

  1. 这种网络划分方式已经消失在历史长河中了
  2. 这种分配方式比较浪费, 且比较死板

特殊的 IP 地址

  • 如果一个 IP 地址, 主机号为 0, 此时这个 IP 就表示网络号. 代表当前局域网

  • 如果一个 IP 地址, 主机号为 1, 此时这个 IP 往往表示这个局域网的 “网关”, 代表局域网的网关(通常就是路由器的 IP) [ 注: 不是强制要求, 可以手动设置 ]

    网关: 出入口. 网关的角色一般就是路由器, 把守着当前局域网和其他局域网之间的出入口

  • 如果一个 IP 地址, 主机号 全为 1, 此时这个 IP 表示广播 IP

  • 127.*开头都是 “环回IP”, 典型的是 “127.0.0.1”, 实际上, 只要是 127 开头的都是环回 IP


路由选择

就像地图导航一样, 能够在两点之间规划出一个路线.

路由选择, 是 “启发式” 的过程, 非常类似于"问路".

比如: 你在 A 地, 你想去 D 地.

  1. 在 A 地有一个人说, 好像在 E 地附近, 你先往 B 那边走.
  2. 你到了 B 地, 一个人说, 好像在 E 地附近, 你先往 C 那边走
  3. 你到了 C 地, 终于有人知道了, 说你往前走, 就到 D 了

IP 数据包中, 就包含 目的 IP

网络数据包到达路由器的时候, 路由器自身有一个 “路由表” 数据结构, (路由表就是这个路由器认识的路)

一个路由器无法认识到网路的全貌, 但是可以认识附近的一部分

  • 如果当前的目的 IP 路由器认识, 就会给出一个明确的路线

  • 如果当前目的 IP 路由器不认识, 路由器就会把数据包转发给一个 “更多见多识广” 的路由器(在路由表里有一个默认的选项, 下一跳)

是否可能问了一大圈, 也没找到目的地呢?

  1. 也是有可能的, 比如 IP 地址不存在,(或者不可达)

# 注意 #

路由过程不光是找一条路, 也需要筛选一条更好的路.

最关键的是路由表数据结构是什么样的, 以及路由表是怎么来的.


数据链路层

以太网

  • “以太网” 不是一种具体的网络,而是一种技术标准;既包含了数据链路层的内容,也包含了一些物理层的内容。例如:规定了网络拓扑结构,访问控制方式,传输速率等;
  • 例如以太网中的网线必须使用双绞线;传输速率有10M,100M,1000M等;
  • 以太网是当前应用最广泛的局域网技术;和以太网并列的还有令牌环网,无线LAN等;

以太网帧格式

都有一套 IP 地址, 为什么还需要一套 MAC 地址呢?

  • 历史原因, 设计 IP 地址的人 和设计 MAC 地址的人, 是两个团队, 是他们各自独自搞的一套地址体系.

MAC 地址设计的时候, 6 个字节, 当下 MAC 地址还是够用的, 可以让每个主机都有独立的 MAC 地址. (这个地址是网卡出厂的时候就写好了)

MAC 地址一定是唯一的吗?

  • 正经网卡, 出场时会被分配一个唯一的 MAC 地铁
  • 但是有一些山寨厂商, 生产的网卡的 MAC 地址可能和别人重复
  • 由于当前 MAC 地址只是在数据链路层使用, 只要相邻区域内的设备 MAC 地址不重复即可.

因此在网络上, MAC 地址也可以作为是主机身份标识的一种方式.

比如: 有一个网络数据包, 从 A 转发给 B, 转发过程中需要经过 CD

MTU 一个以太网数据帧最大值

以太网, 就属于传输过程中的基础设施.

把物理层比喻成公路, 数据链路层就相当于泡在公路上的卡车,

数据链路层里有很多协议, 不同的协议,相当于不同型号的卡车, 有的卡车载重量大, 有的卡车载重量小, 以太网就属于载重量比较小的(1500 单位是字节)

此时如果想要运输更多的数据,就需要分多个卡车来拉货(IP 协议分包保证)


🌷(( ◞•̀д•́)◞⚔◟(•̀д•́◟ ))🌷

以上就是今天要讲的内容了,希望对大家有所帮助,如果有问题欢迎评论指出,会积极改正!!
在这里插入图片描述
加粗样式

这里是Gujiu吖!!感谢你看到这里🌬
祝今天的你也
开心满怀,笑容常在。

http://chatgpt.dhexx.cn/article/JSmvDywk.shtml

相关文章

网络层概述

网络层概述 因特网网络层的三个主要组件网络层的主要功能网络层的类型虚电路网络数据报网络 路由器的硬件体系结构 因特网网络层的三个主要组件 IP(网际)协议因特网路由选择协议ICMP(因特网控制报文协议) 网络层的主要功能 前面…

网络层的作用

我们知道网络层处于数据链路层和传输层之间,它在数据报文包的传递中起到了重要作用。 我们来看上面这张图。左边的主机想和右边的主机通话,那么这个数据包一定会经过网络。中间灰色的圆圈是路由器,他们组成了一个网络,数据链路层只…

网络层和传输层

一.网络层的功能 定义了基于IP协议的逻辑地址 连接不同的媒介类型 选择数据通过网络的最佳路径 二.ICMP协议 ICMP是一个“错误侦测与回馈机制” 通过IP数据包封装的 用来发送错误和控制消息 ICMP协议的封装 ICMP协议属于网络层协议 ICMP数据的封装过程 ICMP消息类型和编码…

四、网络层(一)网络层的功能

目录 1.0 网络层的功能 1.1 异构网络互连 1.2 路由选择与分组转发 1.3 软件定义网络(SDN) 1.4 拥塞控制 1.0 网络层的功能 网络层的主要任务就是将分组从源主机经过多个网络和多段链路传输到目的主机,可以将该任务划分为分组转发和路由选择两种重要的功能。 …

TCP/IP——网络层

TCP/IP——网络层 一、网络层协议 网络层继承被称之为IP层。但网络层协议并不只是IP协议,还包括ICMP(Internet control Message Protocol)协议、IPX(Internet Packet Exchange)协议 IP寻址:能过上网的设备…

计算机网络 | 网络层 | 什么是网络层 | 详解

本博客为个人笔记,篇幅较长,内容较多,因时间原因,内容中的重点部分没有重点标出,望谅解。如有错误,欢迎各位前来纠正。 目录 一.网络层提供的两种服务 1.虚电路服务 2.电话机与现代计算机的区别 3.数据…

计算机网络-网络层

网络层 1. 前言2. 网络层的作用3. 网络层数据交换4. 网络层协议及报文格式5. ARP与RARP6. 国际控制报文协议ICMP 1. 前言 网络层介于传输层和数据链路层之间,其主要作用是实现两个网络系统之间的数据透明传送,具体包括路由选择,拥塞控制和网…

计算机网络(五):网络层

文章目录 1. 网络层概述1.1 路由器工作原理 2. IP:网际协议2.1 IPv4数据报格式2.2 IP地址2.2.1 IP地址的分类2.2.2 广播和多播2.2.3 子网和子网掩码2.2.4 CIDR与VLSM2.2.5 公有地址和私有地址 2.3 路由控制2.4 IP 分片和重组2.4.1 路径 MTU 发现 2.5 IPv62.5.1 IPv6…

网络层与传输层

目录 一、网络层 (一)IP数据包格式 (二)ICMP协议介绍 (三)ARP协议介绍 (四)ARP攻击原理 (五)ping命令及tracert ( 六)ARP命令 …

网络层——IP协议

网络层 网络层概述 网络层主要考虑数据传输的路上问题,在复杂的网络环境中确定一个合适的路径。 网络层设计要尽量简单,向上层只提供简单灵活的、无连接的、不保证可靠性的数据报服务。网络层不提供服务质量的承诺! IP 数据报的格式 如何分…

计算机网络——网络层

目录 4.1 网络层概述 4.2 网络层提供的两种服务 面向连接的虚电路服务 无连接的数据报服务 4.3 IPv4地址 IPv4地址概述 分类编址的IPv4地址 划分子网的IPv4地址 无分类编制的IPv4地址 IPv4地址的应用规划 4.4 IP数据报的发送和转发过程 4.5 静态路由配置 默认路由和…

详解网络层_计算机网络

目录 1. 网络层提供的两种服务 2. 网际协议IP 3.虚拟互联网络 4. IP地址 IP地址的划分方法 点分十进制 IP地址指派范围 IP地址的重要特点 5. IP地址与MAC地址 1. 网络层提供的两种服务 首先,网络层的引入主要是为了屏蔽不同网络的差异,实现不同网络…

计算机网络(四)_网络层

相关博文: 计算机网络入门 计算机网络物理层 计算机网络-数据链路层 与网络层相关的IP地址与子网掩码单独抽出于下 IP地址 计算机网络-域名与IP地址详解 子网掩码与子网划分 计算机网络-子网掩码与子网划分 文章目录 IP地址子网掩码与子网划分一些基本概念网络层提供…

应用层、传输层、网络层、数据链路层

应用层 包括:应用服务 (FTP(FileTransfer Protocol,文件传输协议)和DNS(Domain NameSystem,域名系统))发送HTTP请求DNS域名解析系统:提供通过域名&#xff0…

计算机网络之网络层

一、概述 网络层介于传输层和数据链路层之间,其主要作用是实现两个网络系统之间的数据透明传送,具体包括路由选择,拥塞控制和网际互连等。网络层是网络与网络之间通信的最底层,在数据从数据链路层向传输层进行数据传输的通信中&a…

计算机网络-网络层详细讲解

目录 网络层概述 网络层提供的两种服务 面向连接的虚电路服务 无连接的数据报服务 IPv4地址 IPv4地址概述 概述 表示方法 分类编址的IPv4 A类地址 B类地址 C类地址 练习 划分子网的IPv4地址 子网掩码 32比特的子网掩码可以表明分类IP地址的主机号部分被借用了几个比特…

网络层

一、概述 1、网络层是OSI参考模型中的第三层,介于传输层和数据链路层之间,它在数据链路层提供的两个相邻端点之间的数据帧的传送功能上,进一步管理网络中的数据通信,将数据设法从源端经过若干个中间节点传送到目的端,从…

网络五大层介绍,看完你就懂

当前的网络协议是分层的:应用层,传输层,网络层,数据链路层,物理层 目录 应用层 传输层 UDP协议 数据报格式 TCP(传输控制协议) 报文格式 1.确认应答(核心) 2.超时重传 3.连接…

Android 4.4 沉浸式状态栏的实现

Android 4.4(kitkat)之后,Android Window 提供一个新的属性: WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS从名字上可以看出,这个属性可以用来设置状态栏是否透明,我们就可以利用这个属性来实现沉浸…

总结系列-一文搞懂沉浸式状态栏

近期做到与状态栏相关一些需求,网上关于沉浸式状态栏的文章有很多,基本上都先讲一堆概念,然后接着推出一个自己写的轮子,这类轮子面对很多不同场景的情况不能百分之百满足使用需求,过度地使用轮子也往往会让开发者不了解代码到底是怎么实现沉浸式的,基于…