🌟🌟hello,各位读者大大们你们好呀🌟🌟
🚀🚀系列专栏:【Linux的学习】
📝📝本篇内容:计算机网络;协议;OSI七层模型;TCP/IP五层(或四层)模型;网络传输基本流程
⬆⬆⬆⬆上一篇: 信号保存与捕捉
💖💖作者简介:轩情吖,请多多指教(>> •̀֊•́ ) ̖́-
独立模式:计算机之间相互独立
网络互联:多台计算机连接在一起,完成数据共享
局域网LAN:计算机数量变多了,通过交换机和路由器连接在一起
广域网WAN:将远隔千里的计算机连在一起
所谓 “局域网” 和 “广域网” 只是一个相对的概念. 比如, 我们有 “天朝特色” 的广域网, 也可以看做一个比较大的局域网
“协议” 是一种约定
计算机之间的传输媒介是光信号和电信号. 通过 “频率” 和 “强弱” 来表示 0 和 1 这样的信息.,要想传递各种不同的信息, 就需要约定好双方的数据格式
由于传输距离变长了,所以说会导致出现一系列问题:长距离传输,数据异常的问题(丢失)、定位一台主机的问题、怎么样进行数据转发,路径选择的问题(路由)、01序列硬件级别的协议
高内聚:不同性质的问题不要放一起,相同性质的问题放一起,并做出解决方案
低耦合:我们可以设计的时候将不同功能模块设计成为不同的模块
并且可以把解决方案设计成为层状结构:因为问题是有先后顺序的
并且协议会有分层,每一层都只关注自己同层的功能,只使用下层的接口,任何一层出现问题,都不会直接影响另一层,减少后期开发者的维护成本
从上至下的七层:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层
TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇
TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求
物理层: 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层
数据链路层: 负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、帧同步(就是说从网线上检测
到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太网、令牌环网, 无线LAN等标准. 交换机(Switch)工作在数据链路层
网络层: 负责地址管理和路由选择. 例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层.
传输层: 负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机.
应用层: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等. 我们的网络编程主要就是针对应用层
对于网络,也是操作系统的一部分,并且对于网卡这种是属于硬件,操作系统可以对其进行管理,并且Linux下一切皆文件,因此很多网络接口和文件有关。
其中操作系统有很多,但是网络只能有一种
对于数据链路层的标准是不一样的,但要遵守TCP/IP
同一个局域网的两台机器,可以直接通信
每一层都要有自己的协议,协议的表现形式:协议报头
两个主机的通信本质是两个主机的OS与网络协议栈在通信
每一层协议都有自己的协议报头和有效载荷
每一层,都会把上层交付给自己的数据,作为自己的载荷
每一层都有自己的协议报头
对应的层,报头+有效载荷=自己要发送的报文,也就是封装
在逻辑上,同层协议,都认为自己在和对方的同层协议在通信
同层协议能够做到互相认识对方的报头并且能做到将报头和有效载荷进行分离(解包)、将有效载荷交付给上层的哪一个具体协议(数据报分用)
局域网中,任何时刻,只允许一个人向局域网中发送消息
任何人要通信,需要有一个唯一的标识符对于计算机,每台计算机都配有网卡,网卡在出厂时,就在网卡内部写入了网卡sn号,MAC地址,全球唯一
当跨路由器的两个子网时会不一样,首先要明白。路由器会有网络层,链路层、物理层的功能,并且可以把路由器当做一台主机(节点),路由器至少要级联两个子网,并且有至少两个网络接口
如上图,当有效载荷传到IP层时,会添加对应的IP地址,并且,网络层会有路由表,路由表可以判定我们地数据是要给谁以及确定目的地是不是我们的局域网中的,当再往下传到以太网驱动程序时,会添加MAC地址。当选择主机时,通过IP地址来判断,IP地址表示公网中主机的唯一性,会发现目的地并不是我们局域网中的,只能把数据给到路由器。这个时候路由器也会进行解包+分用,此时当经过完路由器,我们的MAC地址会变化(因为两个局域网是不同的)。
MAC地址:根据路径选择的结果,来选择下一跳的主机,会发生变化;MAC地址用来识别数据链路层中相连的节点;长度为48位, 及6个字节; 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)
在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可
能会冲突; 也有些网卡支持用户配置mac地址)
IP:为报文定制的最终目标,路上根据该地址进行路径选择,是不发生变化的。IPv4是四字节整数[0.0.0.0,255.255.255.255],字符串风格的点分十进制的IP地址是给人看的。
通过上图可以发现IP协议及其以上的协议没有看到任何网络方面的差异,而IP协议往下,网络可以具有明显的差异,是因为IP地址屏蔽了底层子网机制的差异
不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame).
应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation).
首部信息中包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是什么等信息.
数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部, 根据首部中的 “上层协议字段” 将数据交给对应的上层协议处理
🌸🌸网络基础1的知识大概就讲到这里啦,博主后续会继续更新更多Linux的相关知识,干货满满,如果觉得博主写的还不错的话,希望各位小伙伴不要吝啬手中的三连哦!你们的支持是博主坚持创作的动力!💪💪