Linux网络通信——TCP/OSI七层模型/TCP/IP(五层或四层模型)/HTTP报文传输原理

文章目录

  • 消息的传输
    • 什么是OSI七层模型
    • OSI七层模型的内容
      • 物理层(Physical Layer):
      • 数据链路层(Data Link Layer):
      • 网络层(Network Layer):
      • 传输层(Transport Layer):
      • 会话层(Session Layer):
      • 表示层(Presentation Layer):
      • 应用层(Application Layer):
    • TCP/IP五层模型
  • HTTP报文传输原理
  • 数据的封装和分用

消息的传输

在了解tcp之前我们先来说一下消息是如何传输的,在这里我们就要说一下OSI七层模型了。

什么是OSI七层模型

***OSI(Open Systems Interconnection)***即为开放式系统互联,七层模型成为开放式系统互联参考模型,是一个逻辑上的定义和规范。
为什么是七层呢?
因为他把网络从逻辑上分为了七层,每一层都有关相对应的物理设备。
OSI七层模型的作用
OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输;
OSI七层模型的优点
它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整. 通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯;
OSI七层模型的缺点
它的缺点其实就是太麻烦了复杂又不实用。

OSI七层模型的内容

Linux网络通信——TCP/OSI七层模型/TCP/IP(五层或四层模型)/HTTP报文传输原理_第1张图片
Linux网络通信——TCP/OSI七层模型/TCP/IP(五层或四层模型)/HTTP报文传输原理_第2张图片
这里将其分为了应用层,表示层,会话层,传输层,网络层,数据链路层,物理层。
那么他们各个层级的一些设备我给大家举例说明一下

物理层(Physical Layer):

设备: 网络中的传输媒体和设备,如网线、光纤、中继器(Repeater)等。
功能: 负责传输比特流,定义物理传输介质的特性。

数据链路层(Data Link Layer):

设备: 网络交换机、网桥(Bridge)、网卡等。
功能: 负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太网、令牌环网, 无线LAN等标准. 交换机(Switch)工作在数据链路层.

网络层(Network Layer):

设备: 路由器(Router)、三层交换机、层三交换机等。
功能:负责地址管理和路由选择. 例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层.

传输层(Transport Layer):

设备: 网关(Gateway)、负载均衡器、防火墙等。
功能: 负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机。

会话层(Session Layer):

设备: 无特定硬件设备,实现在通信实体之间建立、管理和终止会话。
功能: 处理数据的同步和复位,提供数据交换的控制机制。

表示层(Presentation Layer):

设备: 无特定硬件设备,一些加密设备和数据格式转换设备。
功能: 负责数据格式的转换,处理数据的加密和解密,数据的压缩和解压缩。

应用层(Application Layer):

设备: 个人电脑、服务器、路由器上运行的应用程序。
功能: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等. 我们的网络编程主要就是针对应用层

TCP/IP五层模型

TCP/IP是一组协议的代名词,他还包括了很多的协议,TCP/IP通讯协议采用了五层的层级结构但是呢我们做软件开发的平常是很少关注物理层的因此对物理层所以很多时候我们也会说他是四层模型。
一般而言呢:
对于一台主机, 它的操作系统内核实现了从传输层到物理层的内容;
对于一台路由器, 它实现了从网络层到物理层;
对于一台交换机, 它实现了从数据链路层到物理层;
对于集线器, 它只实现了物理层;
那么TCP/IP五层模型有哪些呢?
Linux网络通信——TCP/OSI七层模型/TCP/IP(五层或四层模型)/HTTP报文传输原理_第3张图片

HTTP报文传输原理

HTTP报文的传输其实有点儿像是一个快递从制作到传输到我们手中的过程,我们现在在网上购买一个快递的话,那么这个快递是怎么到我们手上的呢?首先这个快递肯定要通过车间工厂进行制作吧,那么在制作的过程中,每一个岗位的工人都有自己负责的工作比如说有些人负责打螺丝有些人负责给他包装,那么在工厂的流水线上,一件商品其实就可以看作是在一层层的加包的过程,之后快递到我们的手上我们再核对信息然后把之前加的包装从外向内全部去掉,因此HTTP报文传输其实也是一个数据的加包和解包如下图
Linux网络通信——TCP/OSI七层模型/TCP/IP(五层或四层模型)/HTTP报文传输原理_第4张图片

数据的封装和分用

我们的数据在发送的过程中其实并不是光秃秃的,就像我们的快递在寄到你手上的时候肯定不是只有一个快递肯定还包含了快递盒,以及二维码之类的信息,这也就跟我们的消息传输一样我们的消息在网络中的传输其实也是在传递的过程中会对其封装,但是为什么我们接受到消息的时候看不到所谓的封装呢,这是因为数据的封装只是为了便于传输,但是我们应用层或者说我们的客户实际上想要的只有那个消息而已。大致大家可以看成下图这样
Linux网络通信——TCP/OSI七层模型/TCP/IP(五层或四层模型)/HTTP报文传输原理_第5张图片
从这张图大家也能看出来我们的数据在传输的过程中是按照之前的模型进行分层传递的并且在到达一个层后会在这个层的前端加一个首部也就是报头的东西,就像唐僧西天取经每经过一个地方都会让这个国家的国王盖个章一样。在传输层封装时,添加的报文首部时要存入一个应用程序的标识符,无论TCP和UDP都用一个16位的端口号来表示不同的应用程序,并且都会将源端口和目的端口存入报文首部中。在网络层封装的时候IP首部会标识处理数据的协议类型,或者说标识出网络层数据帧所携带的上层数据类型,如TCP、UDP、ICMP、IP、IGMP等等。
在链路层封装时,网络接口分别要发送和接收IP、ARP和RARP等多种不同协议的报文,因此也必须在以太网的帧首部中加入某种形式的标识,以指明所处理的协议类型,为此,以太网的报文帧的首部也有一个16位的类型域,标识出以太网数据帧所携带的上层数据类型,如IPv4、ARP、IPV6、PPPoE等等。
在实际传输中我们的数据还需要发出去也就是发到不在同一个物理网络的主机上那么这个消息是如何发的呢?如下图
Linux网络通信——TCP/OSI七层模型/TCP/IP(五层或四层模型)/HTTP报文传输原理_第6张图片
数据包在不同网络中进行发送的时候网络层会通过路由器去对不同的网络的数据进行存储分组转发处理。构造互连网最简单的方法是把两个或多个网络通过路由器进行连接。路由器可以简单理解为一种特殊的用于网络互连的硬件盒,其作用是为不同类型的物理网络提供连接:以太网、令牌环网、点对点的链接和FDDI(光纤分布式数据接口)等等。物理网络之间通过路由器进行互连,随着增加不同类型的物理网络,可能会有很多个路由器,但是对于应用层来说仍然是一样的,TCP协议栈为大家屏蔽了物理层的复杂性。总之,物理细节和差异性的隐藏,使得互联网TCP/IP传输的功能变得非常强大。

你可能感兴趣的:(linux,linux,tcp/ip,http)