网络通讯-大白话理解OSI七层模型与TCP/IP四层概念
网络分层
我们在架构设计,模型设计时都会选择分层设计,因为他会给我们带来很多好处,比如:
- 高内聚低耦合
- 每一个层单一职责
- 提升复用性
所以在网络通讯协议上也有分层的概念
OSI七层模型
OSI是国际标准化组织制定的一个用于计算机或通讯系统间互联的标准体系,它的七层从高到低分别为:
- 应用层 : 网络服务与最终用户的一个接口,为应用程序提供服务。
- 表示层: 数据的表示、安全、压缩、加密。
- 会话层: 建立、管理、维护会话
- 传输层: 定义传输数据的协议端口号, 建立、管理、维护端对端的链接
- 网络层: 逻辑地址/IP选址,路由
- 数据链路层: 建立逻辑连接、进行硬件地址寻址,提供介质访问与链路管理
- 物理层: 物理硬件,以二进制流的形式存在。
TCP/IP四层概念
相比较七层模型,TCP简化为四层模型概念,从高到低分别为:
- 应用层
- 传输层
- 网络层
- 接口链路层
它与OSI对照与协议族如下:
单纯说四层协议,可能非常的抽象,我们已我们日常code的代码来更直观的方式了解TCP/IP的四层协议,流程图如下
是不是一目了然了,应用层将协议,请求方法请求体进行封装,传输层获取发起端端口号以及目标服务器端口继续包装,到网络层后,将来源IP以及目标服务器IP继续包装到报文里,后进入接口链路层,通过IP需要传输到目标机器,这里的网关就泛指运营商,它会层层跳转,直到跳转到目标地址。
设想下,我们要进行数据通讯是不是首先要建立链接,建立连接的过程就是TCP/IP的三次握手
三次握手
三次握手是为了双向通讯。流程图如下:
- 首先客户端向服务器监听的端口发送SYN包以及序列
- 服务端返回给客户端ACK标识,标识服务端已经接收到客户端发过来的包
- 客户端确认收到后,返回给服务端,这样服务端也知道客户端也收到了
建立完成后开始数据传输。
四次挥手
目的跟三次握手一样,为了确认双方都已经断开。流程图如下:
客户端主动关闭TCP链接:
- 客户端发起FIN包通知服务端要进行关闭了
- 服务端收到后发送ACK信息通知客户端我知道了,这时客户端进入FIN_WAIT_2状态,白话就是我已经准备好断开了
- 服务端通知应用后开始尝试关闭,然后FIN通知客户端可以关闭了
- 客户端收到信息后,发送ACK信息给服务端说明我已经可以关了,服务端收到后就可以正式关闭了