一、为什么要进行分层
硬件没有统一标准,软件也没有统一标准,你单独一台计算机只是一台普通的计算机,全球互联网,网络之间需要通信,不同厂商之间的设备无法通信,缺少统一的标准。
1.层次划分的方法
1、网络的每层应当具有相对独立的功能(便于排错),这个功能用不了必然是你这层出了问题
2、梳理功能之间的关系,使上一个功能可以实现为另一个功能提供必要的服务, 从而形成系统的层次结构,环环相扣 (紧密联系)
3、为提高系统的工作效率,相同或相近的功能仅在一个层次中实现, 而且尽可能在较高的层次中实现
4、每一层只为相邻的上一层提供服务
2.层次划分的优点
1、各层之间相互独立,每一层只实现一种相对独立的功能,使问题复杂程度降低,利于针对解决问题
2、灵活性好,各层内部的操作不会影响其他层
3、结构上可分割开,各层之间都可以采用最合适的技术来实现
4、易于实现和维护,因为整个系统已被分解成相对独立的子系统
5、能促进标准化工作,因为每一层的功能及其提供的服务都有了精确的说明
![](https://i-blog.csdnimg.cn/blog_migrate/f9dc803a1af83f14f7d604de66f3d6f4.png)
二、OSI七层模型
ISO于1984年颁布了OSI参考模型。OSI参考模型是一个开放式体系结构,它规定将网络分为七层,从下往上依次是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
应用层:最直观的理解就是人机交互界面,或者说是系统程序窗口。贾某将“你好”两个字输入电脑微信软件。
表示层:计算机如何处理“你好”两个字? 答案就是“翻译”! 人类有人类的语言,计算机也有自己的语言。计算机是不懂汉语的,他只知道二进制的 0 和 1 ,那么贾某在计算机的微信上打了“你好”这两个字,计算机接收到后开始通过二进制转换成自己的语言。这一步就是翻译,当然,表示层还有其他的功能,例如安全加密,压缩等。
会话层:计算机知道你要发送的东西之后,就需要准备发送了。那么,第一步就是要找到对方(乙某),并和对方建立会话关系。直接理解:会话属于软件层面,允许不同机器上的用户之间建立会话关系。
传输层:传输层可理解为是同一个软件中的两个端口进行数据传输。我用微信发送的消息,你也需要用微信来接收。那么就是电脑端微信用户之间的传输。端口号一致。
网络层:传输层已经准备就绪了,可是我们知道微信用户千千万,贾某和乙某中间还存在很多的其他用户,我们怎么实现贾某的文字就能准确的发送到乙某的微信上呢? 这就是需要网络层的 IP 地址了。只要知道了乙某的 IP 地址,就可以选择最佳路径进行准确的数据传输了。
数据链路层:网络层接收到数据后需要继续往下传输,需要使用工具,就是数据链路层的网卡,继续进行传输。
物理层:数据到达物理层后,变成信号传输bit流,数据到达目标主机后,开始进行一个逆向的过程,即数据到达对方主机后,从物理层传输到数据链路层–网络层–传输层–会话层–表示层–应用层。此时,数据到达乙某的电脑,乙某就可以看到甲某发送的“你好”两个字了。
(尤其需要注意的是:)网络层及以下的通信为点到点通信(主机与主机)
传输层的通信为端到端(端口到端口)
![](https://i-blog.csdnimg.cn/blog_migrate/5f49df9959a4ab1f8ec8187ccceb0d35.png)
三、TCP/IP参考模型
TCP/IP是传输控制协议/网际协议。早期的TCP/IP模型是一个四层结构,从下往上依次是网络接口层、互联网层,传输层和应用层。在后来的使用过程中,借鉴OSI的七层参考模型,将网络接口层划分为物理层和数据链路层,形成了一个新的五层结构。TCP/IP是一系列协议的集合,所以严格的称呼应该TCP/IP协议簇。
![](https://i-blog.csdnimg.cn/blog_migrate/cb5607b035d38c3b228d61955b14715d.png)
1.各层常用协议:
应用层:
HTTP超文本传输协议:是一个简单的请求-响应协议,现在主要的场景是web服务,就是网页的传输,默认使用tcp的80端口
HTTPS:是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性,默认使用tcp的443端口
FTP文件传输协议:FTP提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限,默认使用tcp的20,21端口
TFTP简单文件传输协议:是一个小而易于实现的文件传送协议,TFTP只支持文件传输,不支持交互,没有庞大的命令集。也没有目录列表功能,以及不能对用户进行身份鉴别,默认使用udp的69端口
SNMP简单网络管理协议:是专门设计用于在 IP 网络管理网络节点(服务器、工作站、路由器、交换机及HUBS等)的一种标准协议,默认使用udp的161端口
SMTP简单邮件传输协议:一组用于从源地址到目的地址传送邮件的规则,并且控制信件的中转方式,用于邮件的发送,默认使用tcp的25端口
POP3邮局协议版本3:用于邮件的接收,默认使用tcp的110端口
TELNET远程登陆协议:一种字符模式的终端服务,可以使用户通过网络进入远程主机或网络设备,然后对远程主机或设备进行操作,默认使用tcp的23端口
SSH安全的远程登陆协议: 默认使用tcp的22端口
DNS域名解析系统:将域名和IP地址相互映射,默认使用tcp和udp的53端口
DHCP(动态主机配置协议):是一个局域网的网络协议.指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码,默认使用udp的67和68端口
协议 | 端口号 |
HTTP | 80 |
HTTPS | 443 |
FTP | 传输20,控制21 |
TFTP | 69 |
SNMP | 161 |
SMTP | 25 |
POP3 | 110 |
TELNET | 23 |
SSH | 22 |
DNS | 53 |
DHCP | 67,68 |
传输层:
TCP:安全,可靠,传输慢的协议
UDP:只管发,速度快,不安全,不可靠
网络层:
ARP(地址解析协议): 是根据IP地址获取物理mac地址的协议
RARP(逆地址解析协议): 是根据物理mac地址获取IP地址的协议
ICMP(网际控制报文协议):ping 网络连通性检测
IGMP(网际组管理协议):一个组播协议,该协议运行在主机和组播路由器之间
数据链路层:
点对点协议(Point-to-Point Protocol) PPP协议是目前广域网上应用最广泛的协议之一,它的优点在于简单、具备用户验证能力、可以解决IP分配等。
物理层:
IEEE802.3有线局域网(以太网)
IEEE802.11无线局域网标准
2.数据的封装与解封装过程
封装过程:首先应用层将用户信息翻译成电脑可识别的机器语言,应用层将数据封装给传输层,传输层根据APP来选择传输协议到底是TCP还是UDP,在数据前添加相应的协议封装成数据段给网络层,网络层因为需要进行网络寻址和最佳路径选择,所以需要在数据段前面添加目的IP地址,将其封装成数据包并传给数据链路层,数据链路层在数据包前面添加MAC地址,将其封装为数据帧并且传给物理层,通过网卡输出比特流发送给对方网卡。
![](https://i-blog.csdnimg.cn/blog_migrate/cf8988b434dff1d4c7ae0d2c528877d6.png)
解封装过程:首先物理层的网卡收到对方发来的比特流传给数据链路层,数据链路层识别到自己的MAC地址,将数据帧的MAC头部剥离并传给网络层,网络层识别到自己的IP头,将数据包的IP头部剥离发送给传输层,传输层再剥离TCP头部并传给应用层,应用层内部将机器语言翻译成对方发来的信息。
![](https://i-blog.csdnimg.cn/blog_migrate/060e9731fae70e3e244db180200f9eb6.png)
四.相关数据传输的概念:
1.PDU:Protocol Data Unit,协议数据单元
OSI参考模型的PDU概念指:协议数据单元,同样也可以在TCP/IP五层结构沿用这个概念,PDU是指同层之间传递的数据单位名称。TCP/IP五层结构体系中,上层数据被封装TCP头部后,这个单元称为段(Segment);数据段向下传到网络层,被封装IP头部后,这个单元称为包(Packet);数据包继续向下传送到达数据链路层,被封装MAC头部后,这个单元称为帧(Frame);最后帧传送到物理层,帧数据变成比特(Bits)流;比特流通过物理介质传送。
![](https://i-blog.csdnimg.cn/blog_migrate/99c8acea4565470f93a4d611173e9680.png)
以上就是我对计算机网络的理解。