⭐小白苦学IT的博客主页
⭐初学者必看:Linux操作系统入门
⭐代码仓库:Linux代码仓库
❤关注我一起讨论和学习Linux系统
本节重点
- 了解网络发展背景, 对局域网/广域网的概念有基本认识;
- 了解网络协议的意义, 重点理解TCP/IP五层结构模型;
- 学习网络传输的基本流程, 理解封装和分用;
1.前言
在这个数字化、信息化的时代,网络已经成为了我们生活、工作中不可或缺的一部分。无论是浏览网页、在线购物,还是远程办公、视频会议,网络都在其中扮演着至关重要的角色。然而,对于很多人来说,网络仍然是一个充满神秘和复杂性的领域。因此,本文将带大家走进网络的世界,从初识网络开始,逐步探索其背后的原理和结构。
2.初识网络
网络发展
独立模式: 计算机之间相互独立;
网络互联: 多台计算机连接在一起, 完成数据共享;
局域网LAN: 计算机数量更多了, 通过交换机和路由器连接在一起;
广域网WAN: 将远隔千里的计算机都连在一起;
那么我们从这里看到网络的发展之后,明显的看到网络使用的范围越来越大了,由于距离变长了,那么通信所需要的要求也就变高了,通信的复杂度是与距离成正比的,所以这样是会遇到一些问题的:
- 如何处理发来的数据?
- 长距离传输数据丢包的问题如何解决?
- 如何定位主机的问题?
- 如何保证你的数据能准确到达下一个设备?
认识"协议"
协议是一种约定和规则,它规定了通信双方进行信息交互时必须遵守的规范。
计算机之间的传输媒介是光信号和电信号. 通过 "频率" 和 "强弱" 来表示 0 和 1 这样的信息. 要想传递各种不同的信息, 就需要约定好双方的数据格式.
- 计算机生产厂商有很多;
- 计算机操作系统, 也有很多;
- 计算机网络硬件设备, 还是有很多;
- 如何让这些不同厂商之间生产的计算机能够相互顺畅的通信? 就需要有人站出来, 约定一个共同的标准,大家都来遵守, 这就是 网络协议;
初识网络协议
网络协议,就像是网络世界中的一套交通规则,它确保了网络中的各个成员能够按照统一的规则进行通信和数据交换。就像我们日常生活中的交通规则一样,网络协议也让网络中的数据流动变得有序而高效。
用故事理解网络协议
网络协议可以类比为发送快递时的一系列规则和流程。在这个故事中,我们将以一个快递包裹的发送过程来比喻网络协议的工作机制。
想象一下,你有一个重要的包裹需要寄送给远方的朋友。为了确保包裹能够安全、准确地送达,你需要遵循一系列的规则和流程,这些规则和流程就如同网络协议一样。
首先,你需要选择一个可靠的快递公司,这就像是选择一个网络协议。不同的快递公司有不同的服务质量和规定,你需要根据自己的需求选择最适合的协议。
接下来,你需要填写寄件信息,包括收件人的地址、联系方式等。这些信息必须准确无误,否则包裹可能会无法送达或者送错地方。在网络通信中,发送方也需要按照协议规定的格式和要求,将数据打包成数据包,并附上目标地址等必要信息。
然后,快递员会接收你的包裹,并按照公司的规定进行处理。他们会检查包裹是否符合寄送要求,比如是否超重、是否包含违禁品等。同样地,在网络通信中,发送方的数据包也需要经过协议栈的处理,确保符合网络传输的要求。
接下来,包裹会被运送到分拣中心,按照目的地进行分类和打包。这个过程类似于网络中的路由选择和数据包转发。路由器会根据网络协议中的规则,将数据包从一个节点传输到另一个节点,直到到达目标地址。
在运输过程中,快递员会遵循交通规则,确保包裹能够安全地送达。同样地,在网络通信中,数据包也需要遵循协议规定的传输规则,比如TCP协议中的流量控制、拥塞控制等机制,以确保数据的可靠传输。
最后,当包裹到达目的地时,收件人需要签收并确认收到包裹。在网络通信中,接收方也会发送确认信息给发送方,表示数据已经成功接收。
通过这个快递发送的故事,我们可以理解网络协议的作用和重要性。网络协议就像快递公司的规则和流程一样,确保了数据在网络中的准确、高效和安全传输。无论是发送快递还是进行网络通信,都需要遵循一定的规则和流程,以确保信息的顺利传递。
3.网络为什么要分层?
分层原因总结下来主要有两点:
1.网络通信的时候软件项目规模太大了,所以要把项目的模块跟模块给解构出来
2.协议是用来解决问题的,而问题刚好是层状的
协议分层(电话例子)
在这个例子中, 我们的协议只有两层; 但是实际的网络通信会更加复杂, 需要分更多的层次.
分层最大的好处在于 "封装" . 面向对象例子。
4.理解网络协议设计模型
OSI七层模型
OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范;
层数 | 名称 | 功能 | 功能概括 |
---|---|---|---|
1 | 物理层 | 传输比特流 | 为数据链路层提供物理连接,处理物理介质相关的特性。 |
2 | 数据链路层 | 帧传输与差错控制 | 在相邻节点间无差错地传输以帧为单位的数据,建立和管理链路。 |
3 | 网络层 | 路由选择与分组转发 | 选择最佳通信路径,处理数据包的分段、路由和转发。 |
4 | 传输层 | 端到端可靠传输 | 建立、维护和取消传输连接,提供可靠的数据传输服务。 |
5 | 会话层 | 会话管理与同步 | 建立和管理会话,组织和协调会话进程间的通信。 |
6 | 表示层 | 数据格式转换与加密 | 对数据进行解释、加密、压缩等处理,确保数据在不同系统间正确理解和处理。 |
7 | 应用层 | 网络服务与应用程序接口 | 为用户应用程序提供网络服务接口,处理各种网络应用模型。 |
TCP/IP五层(或四层)模型
以下是TCP/IP五层(或四层)模型除物理层外的设备、实现的功能以及运用的协议的表格形式:
分层名称 | 设备 | 实现的功能 | 运用的协议 |
---|---|---|---|
数据链路层 | 网桥、交换机 | 将物理信号转换为二进制数据,实现网络节点间的数据帧传输 | PPP、HDLC等 |
网络层 | 路由器 | 数据包的选路和转发,实现不同网络间的通信 | IP、ICMP、IGMP等 |
传输层 | 防火墙、负载均衡器 | 提供端到端的可靠数据传输服务,处理数据包的分割、重组、排序和流量控制 | TCP、UDP等 |
应用层 | 各种服务器和客户端软件 | 为用户提供各种网络服务,如文件传输、电子邮件、Web访问等 | HTTP、FTP、SMTP、DNS等 |
这四层模型通过对应的协议和设备刚好对应我们上面谈到要解决的4个问题:
- 如何处理发来的数据? (应用层解决)
- 长距离传输数据丢包的问题如何解决?(传输层解决)
- 如何定位主机的问题?(网络层解决)
- 如何保证你的数据能准确到达下一个设备?(数据链路层解决)
物理层我们考虑的比较少. 因此很多时候也可以称为 TCP/IP四层模型.
我们通过前面系统的学习知道我们用户要想写一些代码在我们的显示器上进行打印,我们用户是直接访问硬件吗?答案并不是,计算机硬件真正的管理者是操作系统,我们要访问硬件资源是需要经过操作系统的允许的,而我们想要访问硬件资源也只能通过系统调用借用操作系统的权限来访问,因为操作系统不相信任何用户,但是对于一些开发人员来说要实现一些功能是可以通过系统调用的,所以访问硬件资源我们通过上图是可以看出来其实是贯穿了整个系统到硬件达成通信的。同样的我们的网络通信也可以通过贯穿整个协议栈来实现网络通信的过程。
所以我们说网络通信的本质就是:贯穿协议栈的过程。
5.网络传输的基本流程
我们首先要清楚以下内容:
网络协议栈的层状结构中,每一层都有协议。
每层都要添加报头
同一个网段内的两台主机进行文件传输.
上面这张图看的比较抽象,所以我们选择以一个实例来谈,比如说我给你在微信上发了个你好
扩展:
1.几乎任何层的协议都要提供一种能力,将报头和有效载荷分离的能力。(解包)
2.几乎任何层的协议都要在报头中提供,决定将自己的有效载荷交付给上一层哪一个协议的能力(也就是叫分用)
6.初识IP地址和MAC地址
下面我们用一个故事+一个原理来认识以太网的通信原理:
一个故事:
比如说我们大学生活中许多同学跟老师在一个教师上课,假设叫王老师,还有一个学生叫张三,一个学生叫李四。由于张三经常喜欢坐最后一排,然后作业完成的不怎么好,所以王老师上课直接在教室说:“张三,你作业怎么还没交给我啊?”,此时教室里的人都听到了王老师的这句话,但是都没有作声(这就相当于接受的报文不是给自己的,所以直接把报文丢弃了),而张三就站起来说:"我昨天不是交给你了吗?王老师,会不会是你忘了?"所以此时同理张三在教室说的话也是让教室里的所有人都听到了,但是其他学生都不会作声。那么在这个过程中为什么李四不站起来呢?为什么是张三站起来呢?因为叫的就是指定的张三啊,因为这个教室里只有一个张三,教室里面的同学老师就是通过自己的可以唯一标识自己的名字。这就是以太网通信的原理。
以太网通信:每台主机在局域网上,都有自己的唯一的一个标识。
一个原理:
而我们对应的主机的唯一标识称之为:Mac地址
以太网会发生数据碰撞问题
发送主机都要执行碰撞避免的算法
IP地址
什么是IP地址?
IP协议有两个版本, IPv4和IPv6. 我们整个的课程, 凡是提到IP协议, 没有特殊说明的, 默认都是指IPv4
- IP地址是在IP协议中, 用来标识网络中不同主机的地址;
- 对于IPv4来说, IP地址是一个4字节, 32位的整数;
- 我们通常也使用 "点分十进制" 的字符串表示IP地址, 例如 192.168.0.1 ; 用点分割的每一个数字表示一个字节, 范围是 0 - 255;
为什么要有IP地址?
在一个繁华的城市中,每个人都有自己的住址,这样其他人就能根据这个地址找到他们。同样,在互联网这个庞大的“城市”中,每一台设备也都需要一个独特的地址,以便其他设备能够找到它并与它进行通信。这个地址就是IP地址。
想象一下,如果没有IP地址,当你想访问一个网站或者发送一封电子邮件时,你的设备将不知道如何找到目标设备。这就像是在现实世界中,如果你没有对方的住址,你将无法找到他们并送达信件或包裹。因此,IP地址的存在使得设备之间的通信变得可能,它是互联网运行的基础。
认识MAC地址
- MAC地址用来识别数据链路层中相连的节点;
- 长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)
- 在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址)
IP地址 vs Mac地址
- 使用与分配:IP地址是Internet协议使用的地址,用于表示网络中某设备或节点的身份(网络号、主机号),它是可以自动分配的,并且可以更改以区别不同网段。而MAC地址是Ethernet协议使用的地址,用于表示某设备或节点在本以太网链路中的物理地址(全局唯一),它在每个网卡出场时就有一个全球唯一的MAC地址,通常不会更改。
- 地址长度:IP地址是由32位二进制数组成,而MAC地址则是由48位二进制数组成。
- 寻址协议层:IP地址应用于OSI第三层网络层逻辑地址,而MAC地址则应用在OSI第二层数据链路层物理地址。
7.总结
以上就是我们本篇博客的大致内容了,通过这篇博文希望我们要对局域网/广域网的概念有基本认识,重点理解TCP/IP五层结构模型,学习网络传输的基本流程, 理解封装和分用;