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.一般而言,任何报头属性里面,一定要存在的一些字段支持,我们进行分用!

相关推荐
炙热的大叔几秒前
JavaEE初阶-网络编程
网络·java-ee
j_linlian5 分钟前
Mac OS ssh 连接提示 Permission denied (publickey)
运维·ssh
大卫的纯爱战士8 分钟前
多线程网络实战之仿qq群聊的服务器和客户端
运维·服务器
网络研究院10 分钟前
Rejetto HFS 服务器存在严重漏洞受到攻击
运维·服务器·安全·黑客·漏洞·警告·hfs
jcLee9535 分钟前
运维系列.Nginx中使用HTTP压缩功能
运维·nginx·http
coisini.cn37 分钟前
基于CentOS Stream 9平台搭建RabbitMQ3.13.4以及开机自启
linux·运维·服务器·rabbitmq·centos stream 9
量化交易学徒40 分钟前
403 Forbidden:深入解析 HTTP 禁止访问错误及排查方法
网络·网络协议·http
林叔聊渠道分销1 小时前
从0到1构建渠道运营体系:实战案例与策略指南
大数据·运维·人工智能·产品运营·流量运营·渠道运营
苦藤新鸡1 小时前
用网络编程完成windows和linux跨平台之间的通信(服务器)
linux·网络·windows
huaqianzkh1 小时前
传统数据处理系统存在的问题
网络·数据库·系统架构