文章目录
网络的基础认识
先来看下面几个问题
- 什么是网络?
- 网络就是有许多台设备包括计算机单不仅限于计算机,这些设备通过相互通信所组成起来系统,我们称之为网络
- 所以如何计算机如何进行网络通信也就是计算机网络的关键
- 网络概念:
- LAN:局域网,部分计算机或者设备连接在一起的就是局域网。比如我们常说的WLAN,其实就是无线局域网。思考以下,你家的WLAN是不是就几台手机链接,这其实就是一种LAN
- WAN:广域网,许多设备连接在一起通信的系统。
- 计算机之间是如何通信的呢?
- 首先我们要明白,计算机的世界本质就是二进制,通信的时候也是电信号的2进制数据。拿如何识别这些数据进行转换成我们呢?答案是协议
- 什么是协议呢?
- 协议就是一种约定,我们彼此就像电影里面的摩斯密码,对应的符号表示对应的信息.计算机通信时,我们把对应的01数据做合适的解析就能够彼此识别。
网络协议
众所周知,计算机有许多硬件,以及底层的操作系统都有好多(对应的厂商也有很多),如果说彼此之间通信协议都不同意,如同打电话交流一样,你说英语,我说汉语该如何理解彼此的意思呢?
基于上述原因,不同计算机厂商都遵守的通信标准,来使得计算机能正常通信的标准,叫网络协议。
协议分层
协议实际时是由多层协议,一层一层的封装的。就好之你打电话,你们都说汉语是一种协议,底层无线电传输振动与电磁波相互转换也涉及协议。
网络协议也是分层的
OSI七层模型
- 应用层:**针对特定应用的协议,**比如电子邮件,你网盘的文件传输,linux的ssh远程登陆等等。
- 表示层:设备固有数据格式 与 网络标准数据格式之间的转换。比如传输图片二进制或者其他格式作为网络数据传播。
- 会话层:通信管理,负责建立与断开通信链接。 (如何建立链接,建立多久,比如你用一些如xshell等软件远程登录linux时,每一个窗口其实也就是会话管理)
- 传输层:负责管理两个结点之间数据传输。 比如A主机到B主机的数据发送成功与否。
- 网络层:地址管理与路由选择。 网络中有许多主机,该如何让数据在主机之间选择正确的路径传播。
- 数据链路层:互联设备之间传送与识别数据帧。
- 物理层:传输的物理信号,也就是01。
OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范。
- 优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整. 通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯
- 缺点,过度的逻辑抽象与划分,对初学网络的很不友好 反而使得理解的成本增加。
TCP/IP 五层/四层 模型
-
TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇
-
TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求.
五层协议 :其中四层就是不考虑物理层
- 应用层:负责应用程序间的沟通。如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。我们的网络编程主要就是针对应用层。
- 传输层:负责两台主机之间的数据传输。如传输控制协议(TCP),能够确保数据可靠的从源主机发送到目标主机。
- 网络层: 负责地址管理和路由选择
- 数据链路层: 负责设备之间的数据帧的传送和识别
- 物理层:采用光电信号传输
对于程序员而言,应用层和传输层应当是需要十分和熟悉的,应为平常写代码等业务逻辑主要就是在这两层。网络层和数据链路层并非不重要,需要非常了解,出了问题才方便排查
如图:每层数据传输时,都会添加对应的报头(header),那些形状就是表示对应的报头。
**下图的数据传输也并非就是所有的网络通信都是如下图,实际还有中间路由转发等。