5层网络模型介绍
1.下三层
- 物理层:主要作用是定义物理设备如何传输数据。
- 电脑硬件、网卡端口、网线、光缆等
- 数据链路层:在通信的实体间建立数据链路连接
- 网络层:为数据在节点之间传输创建逻辑链路(如我的电脑访问百度的服务器地址)
2.传输层(TCP/IP协议、UDP协议)
- 向用户提供可靠的端到端(End-to-End)服务:
- 建立了我们的电脑到百度的服务器之间的连接之后,两个端是如何传输数据,传输数据的方式都是在这一层进行定义的。
- 如果传输的数据包很大,需要分包,如何分包也是在这层定义的
- 传输层向高层屏蔽了下层数据通信的细节:
- 因为http协议是实现在TCP/IP协议基础上的,HTTP协议要传输一个数据,只需要简单的输入一个url,就会自动的去发送相关数据到服务器端,服务器端进行解析数据,再返回给浏览器,然后显示到页面。其实输入url的过程涉及到了数据的一系列的拼装及传输,这个过程作为网页的开发 者不需要知道怎么跟服务器进行沟通的。因为传输层已经给我们封装好了。
- ajax请求也是HTTP协议的,同理
3.应用层
- HTTP协议(应用层)要基于传输层中一个重要的协议(TCP/IP协议)
- 为应用软件提供了很多服务
- 屏蔽了网络传输相关细节
4.说明:
- 网络协议通过分层来确定每一层的职责,通过定义明确的接口来协同工作,每个层都可以使用下面各层的功能,而不必关心各层是如何实现的
- 应用层:负责提供特定于应用程序的协议。如:
- 负责浏览器和网络服务器相互通信的HTTP协议
- 负责文件传输的FTP协议
- 。。。
- 传输控制层:发送数据包到计算机上使用特定端口号的应用程序
- 网络层:使用IP地址将数据包发送到特定的计算机
- 链路层:负责将二进制数据包与网络信号相互之间转换
- 应用层:负责提供特定于应用程序的协议。如:
例:使用应用层中的HTTP协议请求获取HTML文本
- 发送一个请求消息:
- 消息在发送前会被分解成许多片段(数据包)——应用层
- 数据包到达传输控制层后,每个数据包都会被分配一个端口号,端口号用来确定目标计算机的哪一个应用程序要接受并使用该数据包。========TCP是一种面向连接的可靠字节流服务协议(原因:三次握手)。每个收到的数据包都会向发送方发送ack确认,以保证发送成功
- 进入IP层后,每个数据包将会赋予目标计算机的IP地址。——IP是不可靠的无连接协议,它并不关心数据包是否到达目的地,也不关心连接和端口号。它的工作是发送数据包并将其路由到目标计算机。每个数据包都是独立的互不依赖的,所以有可能会乱序到达目标地址,或者在传输途中丢失。那么如何保证数据包到达和顺序正确呢?这就交给了TCP(这也就体现了分层的作用):
- 当数据包过大时,在IP层会进行分包。
- 由于每个数据包在物理链路层走的物理链路不一样,传输速度也不一样。导致数据包没有按顺序到达目的地。但TCP会根据数据包上携带的序列号来进行排序重组。并且发送方在一个特定的时间内没有接收到接收方的ack确认时。则发送方会重新传送该数据包
- 有了IP地址和端口号之后,链路层将数据包的文本信息转译成电子信号,然后通过电缆传输,在电缆的另一端的路由器检查每个数据包中的目标地址,并确定将其发送到何处
-
- 最终数据包到达目标服务器后,然后数据包从TCP/IP协议族的底部开始向上运行。
- 当数据包向上通过协议族时,客户端添加的所有路由数据,如IP地址和端口号都将从数据包中剥离出来。当数据到达顶部(应用层时),数据包已经重新恢复成最初始的形式
- 通过端口号可以将数据传递给当前服务器监听该端口的应用程序,应用程序根据当前请求数据做出反应
- 如请求index.html,服务器会将index.html的数据通过刚才的方式返回给你的电脑(客户端)
- 到这里就完成了客户端与服务器端在互联网中的一次交互
- 最终数据包到达目标服务器后,然后数据包从TCP/IP协议族的底部开始向上运行。