文章目录
一、网络出现的背景
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.一般而言,任何报头属性里面,一定要存在的一些字段支持,我们进行分用!