一、简单介绍要了解这个大问题得先知道一些前缀问题。什么是协议分层协议分层是将计算机网络通信过程分解为多个不同层次、各自独立又相互协作的结构化方法。举个例子比如打电话的过程。每层之间有自己的协议比如语言层可以是汉语、英语设备层则有自己独有的语言语言层调用设备的接口。但实际网络的传输过程比这个复杂得多。为什么要分层这就像在写代码时一方实现了一个接口另一方使用这个接口一样对于提供方利用封装的特性隐藏实现的细节只提供接口就行。对于使用方只需要调用接口即可。降低复杂性:把网络传输的这个庞大的问题转变成一层一层的小问题每层只需专注于自己的功能标准化每层的接口和功能明确定义不同厂商可以独立开发符合标准的软硬件实现互联互通灵活性修改或替换某一层的实现如将有线换成无线不影响上下层易于学习和维护清晰的层次结构使得理解、开发和排错都更加容易二、OSI七层模型该模型分为以下七层分层名称功能7应用层针对特定应用的协议6表示层设备固有数据格式和网络标准数据格式的转换5会话层通信管理负责建立和断开通信连接(数据流动的逻辑分路)4传输层管理两个节点的数据传输负责可靠传输(确保数据被可靠的传输到目标地址)3网络层地址管理和路由选择2数据链路层互联设备之间传送和识别数据帧1物理层以 “0” “1”代表电压的高低、灯光的闪灭。界定连接器和网络的规则由于OSI模型的局限性实际网络采用的是TCP/IP五层(或四层)模型来实现三、TCP/IP五层四层模型TCP/IP是⼀组协议的代名词它还包括许多协议组成了TCP/IP协议簇。 TCP/IP通讯协议采⽤了5层的层级结构每⼀层都呼叫它的下⼀层所提供的⽹络来完成⾃⼰的需求这五层从下到上分别是物理层、数据链路层、网络层、传输层、应用层。物理层负责光/电信号的传递方式。其实就是以太网通用的网线、电缆、光纤之类。包括现在使用的WIFI使用的电磁波实际也属于物理层。数据链路层负责设备之间数据帧的传送和识别。例如网卡的驱动、帧同步、冲突检测、数据差错校验等工作。交换机工作就在数据链路层。网络层负责地址管理和路由选择。在IP协议中通过IP地址识别一台主机并通过路由表 的方式规划出两台主机之间的数据传输的线路路由。路由器就工作在该层。传输层负责两台主机之间的数据传输。如传输控制协议(TCP)能够确保数据可靠的从源主机发 送到目标主机。应用层负责应用程序间沟通如简单电子邮件传输SMTP、文件传输协议FTP、网络远 程访问协议Telnet等。写代码主要就是针对应用层。四、过程简述以发消息为例发送1.应用程序获取到用户输入构造一个应用层的数据包然后以某个形式例如结构体把这个数据包封装起来这个结构是开发者自定义的这个结构体可能包含一些格式内容包括发送方的id、时间、消息的内容等。发送数据的时候会把这个数据包序列化从而使这个数据能够进行发送。这只是简单的例子数据包的格式依据不同的规定可能复杂得多但基本都是字符串的拼接这里为了演示过程就不详细设计了2.应用程序开始调用下层提供的接口即传输层的接口api传输层从而开始加工数据包。传输层的协议主要是TCP 、UDP这里以前者为例。一个TCP数据断含TCP报头和TCP载荷这里的载荷实际上就是应用层数据包。这一部分内容后面会单独写一篇博客。3.传输层再调用网络层的api再次加工数据包网络层最主要的协议使IP协议即拼上IP报头。IP数据包由IP报头和载荷组成载荷就是传输层数据包这里说明一个点每一层都会记录上一层用的是哪个协议传输层记录的是数据交付对象也就是把数据交给哪个应用程序4.网络层调用数据链路层api把IP数据包交给数据链路层数据链路层的核心协议就是以太网。以太网数据帧包括帧头、载荷、帧尾5.以太网把最终的数据交给硬件设备也就是网卡网卡将最终的数据二进制数据以电磁波等形式发送出去。至此数据才发送出去此前流程都在本地设备上进行。接收接收过程是从下到上依次进行解析但实际上中间的传输过程也十分复杂这里就仅展示接收到的过程。其实就是分用。1.网卡把光电信号还原成二进制然后将数据交给数据链路层。2.数据链路层按照以太网协议去掉帧头帧尾。将载荷上传到网络层3.网络层按照IP协议去掉IP头将载荷数据交给传输层。4.传输层按照TCP协议去掉TCP头部将载荷上传到应用层。传输层通过目的端口号把数据交给对应的应用程序。5.应用层将数据进行解析从而在应用程序上进行展示不同的应用程序使用不同的应用层协议。以上的内容主要是为了展示过程其中很多细节会在后面进行详解。