Linux_网络基础1_1

文章目录


一、网络出现的背景

1.从独立模式到网络互联模式

独立模式:计算机之间相互独立


网络互联:多台计算机连接在一起,完成数据共享


局域网LAN: 计算机数量更多了, 通过交换机和路由器连接在一起。


广域网WAN: 将远隔千里的计算机都连在一起;

所谓 "局域网" 和 "广域网" 只是一个相对的概念. 比如, 我们有 "天朝特色" 的广域网, 也可以看做一个比较大的局域

网.

2.重新看待计算机结构

理解计算机通过网络互联的可能性

根据冯诺依曼:

这些设备是如何进行数据交换的?

设备和设备间一定有"线"连接起来

那么两台计算机:

多主机连接,本质上其实也是通过"线"连接起来。

主机内,"线"比较短,会有信号干扰问题。

跨主机,"线"比较长,会有可靠性,效率,寻找到对方等问题。

学习网络知识的本质:都是因为"线"变成长了。

二、网络协议意义

1.认识协议

举个例子:

现在有ABC三人,A只会说中文,B只会说英语,C既会中文也会英语。

A和B如何沟通,A和C如何沟通:

  • 将汉语和英语当作"协议"
  • 将聊天当作"通信"
  • 将说话内容当作"数据"
    A与B语言不通无法交流,A与C协议一致,通信自如。

协议本质就是一个约定,只有都遵守协议,才能进行接下来的通信。

思考:只要通信的两台主机,约定好协议就可以了吗?

不可以,拿中文来说,许多的地方有方言,不同地域的人使用方言,是无法进行交流的,同一地域使用方言是可以交流的,虽然都约定了协议,但不统一,后来推出普通话这个协议,使得全中国的人都可以进行交流。

放在网络上就是:

  • 计算机生产厂商有很多;
  • 计算机操作系统, 也有很多;
  • 计算机网络硬件设备, 还是有很多;

如何让这些不同厂商之间生产的计算机能够相互顺畅的通信?

就需要有人站出来, 约定一个共同的标准,大家都来遵守, 这就是 网络协议;

2.网络协议

1.协议分层

软件是可以分层的,为什么要分层?

1.软件在分层的同时,也把问题归类的

2.分层的本质:软件上解耦

3.便于工程师进行软件维护

而网络本身的代码,就是层状结构!

在这个例子中, 我们的协议只有两层; 但是实际的网络通信会更加复杂, 需要分更多的层次.

分层最大的好处在于 "封装" . 面向对象例子,也就是层状结构下的网络协议,我们认为,同层协议,都可以认为在和对方直接通向,忽略底层细节。

2.OSI参考模型


OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范,但是, 它既复杂又不实用; 所以我们按照TCP/IP四层模型来讲解

3.TCP/IP五层(或四层)模型

对于一台主机, 它的操作系统内核实现了从传输层到物理层的内容;

对于一台路由器, 它实现了从网络层到物理层;

对于一台交换机, 它实现了从数据链路层到物理层;

对于集线器, 它只实现了物理层;

三、网络传输的基本流程

1.网络和操作系统之间的关系

tcp/ip协议和操作系统之间的关系是:操作系统内部,有一个模块,就叫做tcp/ip协议,网络协议是隶属于OS的。

1 .体系结构直接决定,数据包在主机内进行流动的时候,一定是要进行自顶向下或者自底向上进行流动的。以前的所有的IO都是这样的。

2.同层协议都认为自己和对方直接通信

决定了每一层都要有自己的协议

3.重谈协议------计算机的视角,如何看待协议

a.体现在代码逻辑上

b.体现在数据上

为了维护协议,一定要在被传输的数据上,新增其他数据(协议数据)

2.网络传输流程图

我们把每一层要交给下一层的数据,给他添加上本层的"多出来的协议数据"------报头,拼接在原来的数据的开头。

自顶向下添加报头过程叫------封装

自底向上拆开报头的过程叫------解包

3.网络中地址管理

认识IP地址和MAC地址

假设从安徽到吉林

一般我们进行路线选择的时候,我们一般有两套地址:

1.从哪里的来,到哪里去

我是从安徽来去吉林

对应的网络就是IP地址:源IP,目的IP

2.上一站从哪里来,下一站要取哪里的,下一站由谁决定?

由目的地址决定,上一站是北京,下一站是辽宁,

对应的网络就是MAC地址:源mac地址,目标mac地址

IP地址用来在广域网(公网),标定主机的唯一性。
MAC地址,用来在局域网中,标定主机的唯一性。

4.数据包封装和分用

封装的过程:

对于每一层都有很多协议,数据包在添加报头的时候,也会考虑未来解包的时候,将自己有效载荷交付给上一层哪一个协议这个过程叫------有效载荷的分用的过程。

数据分用的过程

两个结论:

1.一般而言,任何报头属性里面,一定要存在的一些字段支持,我们进行封装和解包。

2.一般而言,任何报头属性里面,一定要存在的一些字段支持,我们进行分用!

相关推荐
花姐夫Jun8 分钟前
在 CentOS 8 系统上安装 Jenkins 的全过程
linux·centos·jenkins
运维&陈同学15 分钟前
【Beats01】企业级日志分析系统ELK之Metricbeat与Heartbeat 监控
运维·elk·elasticsearch·云原生·kibana·heartbeat·metricbeat
地球资源数据云17 分钟前
全国30米分辨率逐年植被覆盖度(FVC)数据集
大数据·运维·服务器·数据库·均值算法
是店小二呀25 分钟前
【Linux】Linux开发利器:make与Makefile自动化构建详解
linux·运维·自动化
‘’林花谢了春红‘’1 小时前
计算机网络习题(第5章 网络层 第6章 传输层)
网络·计算机网络
哎呦不错哦.1 小时前
简单园区网拓扑实验
网络·智能路由器
baihb10241 小时前
Jenkins 构建流水线
运维·jenkins
BUG 4041 小时前
LINUX--shell
linux·运维·服务器
菜鸟小白:长岛icetea1 小时前
Linux零基础速成篇一(理论+实操)
linux·运维·服务器
深海的鲸同学 luvi1 小时前
【HarmonyOS NEXT】hdc环境变量配置
linux·windows·harmonyos