网络基础知识

目录

[1. 网络发展](#1. 网络发展)

[1.1 背景](#1.1 背景)

[1.2 类型](#1.2 类型)

[2. 网络协议](#2. 网络协议)

[2.1 什么是协议](#2.1 什么是协议)

[2.2 协议分层](#2.2 协议分层)

[2.3 OSI七层模型](#2.3 OSI七层模型)

[2.4 TCP/IP五层模型](#2.4 TCP/IP五层模型)

[2.5 系统与网络的联系](#2.5 系统与网络的联系)

[3. 网络传输](#3. 网络传输)

[3.1 前置概念](#3.1 前置概念)

[3.2 数据包的封装与分用](#3.2 数据包的封装与分用)

[3.3 局域网通信原理](#3.3 局域网通信原理)

[3.4 如何理解"抓包"行为?](#3.4 如何理解“抓包”行为?)

[3.5 以太网与局域网通信](#3.5 以太网与局域网通信)

[4. 网络地址](#4. 网络地址)

[4.1 IP地址](#4.1 IP地址)

[4.2 MAC地址](#4.2 MAC地址)

[4.3 IP与MAC的关系](#4.3 IP与MAC的关系)

[4.4 如何在 Linux 中查看 IP 地址 与 MAC 地址](#4.4 如何在 Linux 中查看 IP 地址 与 MAC 地址)

[5. 网络的安全性](#5. 网络的安全性)

[6. 网络的未来发展](#6. 网络的未来发展)


1. 网络发展

1.1 背景

1945年,二战结束,世界恢复和平,并出现了美国、苏联两个超级大国;1947年,杜鲁门主义出台,标志着以两个超级大国为代表的冷战正式开始;1957年,苏联发射了人类第一颗人造地球卫星,令美国大为震惊;1958年,美国组建高级研究计划局(ARPA),简称阿帕,负责研发用于军事用途的高新科技。

在阿帕中,信息技术处属于核心机构,主要研究方向是计算机、网络通讯等方面。1968年,拉里·罗伯茨提交了一份题为《资源共享的电脑网络》报告,报告中提出让阿帕的计算机相互连接,以达到信息共享的目的,这就是最早的网络:阿帕网。

1969年10月29日,进行第一次阿帕网的连接实验,起点为加州大学洛杉矶分校,终点则是500km之外的斯坦福研究所,第一次连接实验想传输单词login,最终因连接中断,只成功传输了字母l和o,但这次连接实验成功开启了网络世界的大门。最初阿帕网的节点只有四个,到了1981年,节点增加至213个。

1974年,温顿·瑟夫和罗伯特·卡恩提出的TCP/IP协议正式发表,TCP/IP协议突破了不同硬件间的限制,允许不同的计算机之间进行高效可靠的数据传输,经过数十年的完善,TCP/IP协议成为使用最广泛的网络协议,这也为网络快速发展奠定了基础。1986年,美国国家科学基金会网络(NSFNET)成立,阿帕网只能用于军事研究,而NSFNET则是鼓励大学和研究机构加入到自己的互联网中,服务于学术研究,NSFNET快速发展,并逐渐替代了阿帕网。

随着互联网在军事和学术领域的不断发展,商业领域对于网络的需求变得越来越迫切,成为一个全新的市场,具有不可估量的发展前景。世界上第一家商业互联网服务提供商The World很快就成立了,并于1989年开始提供互联网的接入服务,目前这家公司的官网仍可访问,随后越来越多的商业互联网服务商开始诞生。1995年,NSFNET将自己的经营权转给了美国的私有电信公司,至此互联网正式进入商业时代。

尽管商业互联网早在1989年就已经开始,但想要通过互联网获取信息仍存在门槛,这对于普通人是很不友好的,导致互联网无法普及。同年,互联网中教父级的人物蒂姆·伯纳斯-李发明了万维网(www),并于第二年开发出了第一个网页服务器和第一个网页浏览器,至此,普通人只需要打开浏览器,就能轻松查阅到互联网中的所有信息,信息变得触手可得,互联网也因此快速发展,进入了网页时代。

互联网在1990-2000年这十年间的发展令所有人吃惊,这期间也诞生了很多互联网传奇。

  • 1993年1月,马克·安德森开发了马赛克(Mosaic)浏览器,支持显示图片,并于第二年成立网景公司,推出了新一代网景浏览器,1995年网景公司在纽约上市,一夜之间公司市值突破20亿美元。

  • 1995年3月,斯坦福大学的两名电气工程系的研究生共同创建了雅虎公司。

  • 1995年7月,杰夫·贝索斯创建了亚马逊,全新的电子商务模式使其创始人一跃成为世界首富。

  • 1995年,微软为了回应网景浏览器,推出了经典浏览器Internet Explorer。

  • 1997年,丁磊在广州创建了网易公司,并推出了强大且免费的163邮箱。

  • 1998年2月,从美国麻省理工学院毕业回国的张朝阳创建了搜狐。

  • 1998年11月,马化腾在深圳创建腾讯公司,腾讯帝国正式拉开了帷幕。

  • 1998年12月,王志东创建了新浪网站,才有了后来的新浪微博。

  • 1998年2月,谷歌成立,曾想将自己的网络爬虫项目出售给雅虎,惨遭拒绝,多年之后,谷歌成为全球最大的搜索引擎公司。

  • 1999年9月,马云带着他的十八罗汉在杭州的公寓中创建了阿里巴巴集团,如今的淘宝、支付宝等阿里系产品已经深刻改变了人们的生活方式。

  • 2000年,李彦宏带着他的"超链分析"技术专利创建了百度,"百度一下,你就知道"的观念深入人心。

互联网仍在快速发展,Web 2.0和移动互联网时代同样诞生了无数传奇,即将到来的Web 3.0也同样令人期待。所有人共建的,就是网络。

1.2 类型

如果按照网络区域进行划分,可以分为局域网(LAN)和广域网(WAN)。

  • 局域网(LAN) 通常指在一个区域内将多台计算机通过双绞线、同轴电缆等连接介质互相连接。

  • 广域网(WAN) 则是指将相隔千里的计算机进行连接。

值得注意的是,局域网和广域网只是一个相对的概念,并没有明显的界限,比如一个看似很大的广域网,实际也就是个局域网。


2. 网络协议

2.1 什么是协议

协议是一种约定,也是一种标准。例如,著名的IEEE 754标准规定了浮点数如何在内存中存储;再比如投资者往往会与被投资者签订一份对赌协议,确保投资顺利进行。

协议制定后,参与者都必须遵守该协议。

不同行业中的协议往往由该行业中的翘楚制定,比如在通信标准领域,华为担任了重要角色,并作为5G标准的主导者之一。

2.2 协议分层

网络在传输过程中面临诸多问题:

  • 数据如何组织,如何解析的问题

  • 长距离传输,数据丢失的问题

  • 如何在众多主机中定位目标主机的问题

  • 如何进行数据转发、路径选择的问题

  • 硬件级别的协议问题

如何解决这些问题呢?

将问题分类,逐个击破 --- 高内聚

这些问题之间是存在先后关系的,比如只有先把信息组织好了,才需要考虑数据传输过程中的丢失问题,丢失问题得到保障后,就要考虑把数据发送给谁、如何发送,最终通过硬件完成发送。

基于解耦、可维护性、可扩展性这三点出发,采用协议分层的解决方案,将不同的问题解决策略归入不同模块中,模块之间互不影响 --- 低耦合。

2.3 OSI七层模型

基于网络分层的设计思想,诞生了著名的OSI七层网络模型。

OSI(Open System Interconnect),即开放式系统互连,一般都叫OSI参考模型,是ISO组织在1985年研究的网络互连模型,该模型将网络从逻辑上分成了七层,每一层都有对应的协议或物理设备。

OSI参考模型最大优点是将服务、接口和协议这三个概念明确地区分开来,通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯。

自底向上,OSI参考模型中不同层级实现功能如下所示:

分层名称 功能 预览
物理层 解决硬件相关的问题,比如01序列解析、数字/模拟信号处理、界定连接器和网线的规格 物理连接、信号传输、传输介质的标准
数据链路层 解决两台主机在局域网中如何连通的问题 数据帧的传输、MAC地址识别
网络层 解决主机跨网络,经过路径选择后如何到达目标主机的问题 路由选择、IP地址、数据包转发
传输层 解决数据传输时可能发生的数据丢失问题,同时通过策略实现数据高效传输 TCP/UDP协议,可靠数据传输
会话层 进行连接管理 连接的建立、维护和终止
表示层 规定信息转换格式 数据格式转换、加密、解密、压缩解压
应用层 针对不同应用的协议 HTTP、SMTP、FTP等应用协议

OSI参考模型是一种框架性的设计方法,基于该模型可以实现不同的具体模型,其中最出名的是TCP/IP五层模型,这也是我们主要学习的网络模型。

2.4 TCP/IP五层模型

为什么会变成五层模型?

这是因为开发人员在使用OSI七层模型的过程中,发现这个标准设计的过于麻烦了,应用层、表示层、会话层可以合为一层:应用层,加上剩下的四层,也就是变成了五层模型。

为什么叫做TCP/IP五层模型?

这是因为其中的TCP、IP协议非常经典、非常重要,具有代表意义,于是就命名成了TCP/IP五层模型。

注意:TCP/IP是一组协议的代名词,其中包含了许多协议,共同组成了TCP/IP协议簇。

TCP/IP五层模型也可以称为TCP/IP四层模型,这是因为物理层不是我们开发人员关注的重点。

TCP/IP五层模型的不同分层功能如下(自底向上):

分层名称 功能 说明
物理层 负责光电信号的传递方式,以太网采用同轴电缆、双绞线、光纤、电磁波等传递信号 信号传输的物理媒介、传输速率、传输距离等
数据链路层 负责设备之间的数据帧的传送和识别 数据包的分帧、同步、差错校验等
网络层 负责地址管理和路由选择,确保数据传输到正确的目标主机 包含IP协议和路由选择,主要功能是路由和寻址
传输层 负责两台主机之间的数据传输,提供可靠或不可靠的通信服务 TCP协议、UDP协议等数据传输协议
应用层 负责不同应用程序间的沟通,比如电子邮件传输、文件传输等协议 包含HTTP、SMTP、FTP等协议

2.5 系统与网络的联系

系统和网络密切相关,网络标准模型与操作系统设计有着紧密的联系。比如物理层、数据链路层、网络层、传输层这四层属于操作系统层,剩下的应用层属于用户层,因为我们最终需要通过操作系统来进行网络通信,所以网络标准模型必然会被融入操作系统中。

应用层中的应用、表示、会话不属于系统体系结构,也不能属于系统体系结构,因为它们由用户定义并实现,且实现方式不固定,因此统称为应用层。网络编程就是在应用层进行的。

网络标准模型融入操作系统后,为了让用户能使用网络,操作系统为网络相关操作提供了一批系统调用接口,也就是后面学习的socket套接字编程。

操作系统具有四大管理模块:内存管理、进程管理、文件管理、驱动管理。网络并不属于操作系统的标准管理模块,因此,操作系统如何管理网络?

在Linux中,一切皆文件,网络需要借助网卡进行通信,而网卡在操作系统看来,只是一个提供读写方法的硬件设备而已。操作系统只需要通过"文件管理"的方法来对网络进行管理。

实际上,socket本质上就是一个文件描述符,一个专门对网络资源(文件)进行操作的句柄。这也就意味着,系统提供的网络相关系统调用接口必然与文件相关接口操作类似。

网络本质上是挂接于文件系统中的一个重要子功能。

3. 网络传输

3.1 前置概念
  • 处在同一个局域网中的主机,可以直接通信。例如,部分游戏的本地连接对战功能(CS 1.6、魔兽世界、求生之路等)在进行本地多人对战时,只需要构建一个局域网,主机相连后即可直接进行通信。

  • 比如,快牙、QQ互传、快传等传输文件的方式,也是通过局域网连接实现的,本质上就是通过热点构建一个子网(局域网),其他手机(主机)连接后,可以直接通信,传输文件。

这些日常生活中的例子都证明了处于同一个局域网中的主机是可以直接通信的。

3.2 数据包的封装与分用

每一层都有自己的协议报头。向下传输时,每一层都需要将自己的"协议报头"和"有效载荷"封装,传给下一层的能力。向上传输时,每一层都需要有将自己的"协议报头"和"有效载荷"分离,识别并交付给上一层的能力。

每层协议都有一个称为"协议报头"的部分,在传输时需要承载一些控制信息,使得数据能够被正确路由、传递和处理。协议报头是协议最直观的表现部分。

3.3 局域网通信原理

局域网通信的一般原理:在局域网中进行通信时,无论任何时刻,只允许一台主机向局域网中发送信息。

局域网中通信的具体实现方式这里不详谈,通过一个例子来辅助理解。

某天,张三正在上课,王老师定了一个规矩:在我上课期间,其他人不允许讨论,如果想发言,需要举手示意。

张三听着听着就走神了,突然王老师看着张三想起了一件事,并直接问到:"[张三] [你的作业为什么没交?]",因为此时全班只有王老师的声音,其他同学听到后发现王老师叫的是[张三],而不是自己,选择无视了王老师的发言。当张三听到王老师在叫自己名字后,打起精神并站了起来,开始分析王老师传达的信息:[为什么没交作业?],张三想了半天,想出一个理由:[王老师] [作业我写了,但在家里忘带了,下次带给你],其他同学听到张三的发言依旧选择无视,王老师收到张三的信息后表示:"[张三] [你能忘记作业,为什么不能忘记吃饭呢?]",全班发出笑声,张三收到信息后尴尬坐下。

故事结束,在上面的故事中,张三所处的环境正是一个局域网。同学和老师们可以直接通信,但任何时刻,只允许一人通信。王老师发出的信息中只包含了[张三]这个标识符,因为在一个教室里,除张三外的其他同学也能收到王老师发出的信息,但他们选择无视,因为[张三]这个标识符与自己对不上。当张三与王老师在进行对话时,虽然全班人都能听到,但本质上只有张三与王老师在进行通信,而这就是局域网中以太网的通信原理。


3.4 如何理解"抓包"行为?

当你收到不是发给你的数据包时,没有选择无视,而是将其收集了起来,这就是抓包。带入故事中,就是那种喜欢凑热闹的吃瓜群众。

网卡默认会过滤掉不属于自己的数据包,可以手动设置成混杂模式,以关闭过滤。


3.5 以太网与局域网通信

"以太"这个名词源于物理学中的以太假说:认为光在太空中通过以太传播,但物理实验证明其根本不存在,最终沦为物理学界的笑柄。而我们网络中正是通过光电信号传输数据的(光电信号中有光),因此就把该标准称为以太网,用来"致敬"物理学。

既然局域网中的数据包可以被所有人收到,也就意味着通信过程可能被干扰。就比如同时向湖面丢石头,产生的波纹之间会相互影响,导致自己的波纹丢失/混乱。

如果我们不断往局域网中发送大量无用的数据包,会导致网络碰撞,影响局域网中的正常通信。发生网络碰撞后,未递达的数据会重新发送,此时再发送就会变得特别慢,因为此时局域网中都是垃圾数据包,大部分时间都用在甄别垃圾数据包上了。

这也解释了大部分学校的校园网在晚上打游戏时会很卡,因为大家处于同一个局域网中,大家都在打游戏,都在发送数据包,容易发生数据碰撞,从而导致数据延迟递达,也就是网卡。


4. 网络地址

4.1 IP地址

IP地址用来标识网络中不同主机的地址。

目前的IP地址有两种:IPv4、IPv6。凡是没有特殊说明的,IP地址都是指IPv4。

IPv4由一个4字节的无符号整数构成,占32比特位,可表示的最大地址数为42亿+。为了让IP地址更便于阅读,可以将整数中的四部分转为十进制后通过符号连接,以点分十进制的形式展现,比如:192.168.0.1。

IPv4标准于1981年推出,在那个联网设备都还极度匮乏的年代,使用一个无符号整型(最大表示42亿+)就足够了。IPv4在当时看来确实可以标识网络中的所有主机,然而谁也没有意料到网络发展如此之快,快到42亿个地址根本不够用。IPv4标准中的所有地址于2019年全部分配完毕,这就导致IPv4标准现在并不能标识所有主机,只能标识公网环境下的所有主机。

为了应对IPv4地址不够用的窘境,推出了IPv6、NAT等技术。IPv6足足使用了16字节,长度为128位,是IPv4的四倍,可以标识340亿亿亿台设备,是一个天文数字,称可以为全世界的每一粒沙子编上一个地址。目前IPv6标准尚未全面普及;而NAT技术则是引入了地址转换的概念,简言之就是在公网与内网间建立映射关系,使得内网中允许地址重复,NAT技术提供了一定的安全保护。

我们普通人使用的网络一般都是内网,地址普遍都是192.168.xxx.xxx,这种情况下即使你的IP暴露,也无法直接定位至你的主机设备。


4.2 MAC地址

MAC地址用来识别数据链路层中相连的节点。

MAC地址用一个6字节的整数表示,**占48比特位,**可表示的最大地址数为百万亿+。MAC地址一般用十六进制数字加上冒号的形式来表示,例如:08:00:27:03:fb:19。

MAC地址在网卡出厂时就确定了,不能修改。MAC地址通常是唯一的(虚拟机中的MAC地址不是真实的MAC地址,可能会冲突,也有些网卡支持用户配置MAC地址)。


4.3 IP与MAC的关系

IP地址与MAC地址最大的区别在于:传输过程中,IP地址不会改变,MAC地址会改变,随着传输距离的增加,MAC地址改变的次数也会增加。

如何理解IP地址与MAC地址的关系?

IP地址分为源IP地址、目标IP地址,MAC地址也分为源MAC地址、目标MAC地址。

假设有一天,张三考上了大学,临近上学日,一向谨慎的张三选择规划好自己的报名路线。

因为张三家住贵州,而他的学校在湖北,途经多个省份,张三需要坐高铁从贵州到重庆,再从重庆到湖北,分为两程:贵州->重庆,重庆->湖北,虽然中途涉及换乘,并且每一程的始发地和目的地也不一样,但张三的最终目的地始终没有改变。

  • 源IP地址:张三家

  • 目标IP地址:张三考上的学校

  • 源MAC地址:[贵州,重庆]

  • 目标MAC地址:[重庆,湖北]

张三只需要带够钱,并且明确自己的目的地,就一定能抵达。

张三的报名之路类似于数据包在网络中的传输之路。IP地址始终没有改变,但MAC地址可能发生改变。当主机A将数据包交给路由器时,路由器分析IP地址得知需要将数据包转交给主机B,于是数据包中的目标MAC地址会变成MAC-主机B。主机B收到数据包后,经过不断解包分用,主机B将会收到主机A发送的信息。

4.4 如何在 Linux 中查看 IP 地址 与 MAC 地址

在 Linux 系统中,可以使用 ifconfig 命令来查看计算机的 IP 地址和 MAC 地址。

查看 IP 地址和 MAC 地址的步骤:

  1. 打开终端。

  2. 输入以下命令查看所有网络接口信息:

    cpp 复制代码
    ifconfig
  3. 该命令会列出所有网络接口的信息。可以找到 inet 和 ether 字段,分别对应 IP 地址和 MAC 地址。

  • inet 后面的地址即为该网络接口的 IPv4 地址(如 192.168.1.1)。

  • ether 后面的地址即为该网络接口的 MAC 地址(如 00:1a:2b:3c:4d:5e)。

在上述输出中:

  • inet addr 为 IP 地址(192.168.1.1)。

  • HWaddr 为 MAC 地址(00:1a:2b:3c:4d:5e)。


5. 网络的安全性

随着网络技术的发展,网络安全问题越来越受到关注。网络中的信息传输容易受到各种攻击,如中间人攻击、DoS 攻击、SQL 注入、跨站脚本攻击等。

为了保护网络安全,需要采取一些措施,包括:

  1. 加密技术:确保数据在传输过程中无法被窃听或篡改。例如,使用 SSL/TLS 协议加密 HTTP 请求,保障数据传输的安全性。

  2. 防火墙:在网络的入口处设置防火墙,阻止不必要的流量进入网络,从而降低潜在的安全威胁。

  3. 访问控制:通过身份验证和权限控制,确保只有授权的用户能够访问特定资源。

  4. 病毒与恶意软件防护:使用反病毒软件和恶意软件检测工具,以减少计算机感染病毒或恶意软件的风险。

  5. 入侵检测系统:使用入侵检测系统(IDS)和入侵防御系统(IPS)监控网络流量,及时发现并防范恶意行为。

  6. 备份与恢复:定期备份数据,以防止数据丢失或被破坏,并能够在受到攻击或故障时恢复系统。


6. 网络的未来发展

随着技术的不断进步,网络的未来发展趋势如下:

  1. 5G 和未来 6G 网络:5G 技术将为全球范围内的互联网连接带来更高的速度和更低的延迟,尤其是在物联网、自动驾驶、智慧城市等应用领域。6G 技术则可能进一步扩展网络的带宽和速度,支持更广泛的应用。

  2. 物联网(IoT):随着智能设备的普及,物联网将连接更多的设备,实现物与物之间的自动通信和数据共享。这将推动智能家居、智慧医疗、工业自动化等行业的发展。

  3. 量子通信:量子通信利用量子力学的原理实现超安全的通信。它能够防止任何窃听者窃取信息,因此在网络安全领域具有巨大的潜力。

  4. 网络虚拟化和软件定义网络(SDN):SDN 技术能够通过软件来控制网络的流量和配置,提升网络的灵活性和可扩展性。网络虚拟化技术则允许在同一硬件上运行多个虚拟网络,提高资源利用率和网络的管理效率。

  5. 网络自动化和人工智能(AI):随着人工智能和机器学习的发展,网络将变得更加智能化。AI 可以优化网络流量,预测网络拥塞,并实现自动故障检测和恢复。

  6. Web 3.0:Web 3.0 是互联网的下一代技术,旨在实现更加去中心化的网络结构,支持区块链技术的应用,提供更加安全、私密和高效的网络环境。

  7. 边缘计算:随着数据量的增大,边缘计算将成为网络发展的关键。通过在网络边缘处理数据,减少了延迟,提升了实时响应的能力,特别是在物联网、自动驾驶等需要快速响应的场景中尤为重要。

相关推荐
青草地溪水旁5 分钟前
网络连接的核心机制
网络
神秘人X70723 分钟前
Linux高效备份:rsync + inotify实时同步
linux·服务器·rsync
轻松Ai享生活29 分钟前
一步步学习Linux initrd/initramfs
linux
轻松Ai享生活33 分钟前
一步步深入学习Linux Process Scheduling
linux
花开富贵贼富贵44 分钟前
计算机网络技术学习-day4《路由器配置》
网络·智能路由器·php
Peter·Pan爱编程3 小时前
Docker在Linux中安装与使用教程
linux·docker·eureka
想睡hhh3 小时前
网络基础——协议认识
网络·智能路由器
kunge20133 小时前
Ubuntu22.04 安装virtualbox7.1
linux·virtualbox
清溪5493 小时前
DVWA中级
linux