TCP/IP五层模型

一、简单介绍

要了解这个大问题,得先知道一些前缀问题。

什么是协议分层?

协议分层是将计算机网络通信过程分解为多个不同层次、各自独立又相互协作的结构化方法。

举个例子,比如打电话的过程。

每层之间有自己的协议,比如语言层可以是汉语、英语,设备层则有自己独有的语言,语言层调用设备的接口。但实际网络的传输过程比这个复杂得多。

为什么要分层?

这就像在写代码时,一方实现了一个接口,另一方使用这个接口一样

对于提供方,利用封装的特性,隐藏实现的细节,只提供接口就行。

对于使用方,只需要调用接口即可。

**降低复杂性:**把网络传输的这个庞大的问题转变成一层一层的小问题,每层只需专注于自己的功能

标准化:每层的接口和功能明确定义,不同厂商可以独立开发符合标准的软硬件,实现互联互通

灵活性:修改或替换某一层的实现(如将有线换成无线),不影响上下层

易于学习和维护:清晰的层次结构使得理解、开发和排错都更加容易

二、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.应用层将数据进行解析,从而在应用程序上进行展示,不同的应用程序,使用不同的应用层协议。

以上的内容主要是为了展示过程,其中很多细节会在后面进行详解。

相关推荐
抹茶咖啡2 小时前
IPSec策略实现3389端口精准访问控制
运维·网络·it运维
123过去2 小时前
hexinject使用教程
linux·网络·测试工具
i建模2 小时前
Ubuntu系统中安装NVIDIA驱动
linux·运维·ubuntu
IpdataCloud2 小时前
网络安防实战:如何用IP查询工具精准定位风险IP?
网络·经验分享·tcp/ip·网络安全
无籽西瓜a2 小时前
TCP三次握手与四次挥手详解含图解
java·服务器·网络·tcp/ip
千里马-horse2 小时前
Linux 系统中安装 ktlint
linux·运维·服务器
feng_you_ying_li2 小时前
linux攻略计划启动,首先是linux的基本介绍(1)
linux·运维·服务器
Du_chong_huan2 小时前
1.4 分组交换网中的时延、丢包和吞吐量 | 计算机网络核心原理拆解
网络·智能路由器
张3蜂2 小时前
Ubuntu Linux 与 Ubuntu with Rosetta:深入解析两者的区别与适用场景
linux·运维·ubuntu