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七层模型的内容

在这里插入图片描述
在这里插入图片描述
这里将其分为了应用层,表示层,会话层,传输层,网络层,数据链路层,物理层。
那么他们各个层级的一些设备我给大家举例说明一下

物理层(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五层模型有哪些呢?
在这里插入图片描述

HTTP报文传输原理

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

数据的封装和分用

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/668024.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

On the Spectral Bias of Neural Networks论文阅读

1. 摘要 众所周知,过度参数化的深度神经网络(DNNs)是一种表达能力极强的函数,它甚至可以以100%的训练精度记忆随机数据。这就提出了一个问题,为什么他们不能轻易地对真实数据进行拟合呢。为了回答这个问题,研究人员使用傅里叶分析…

Oracle12c之Sqlplus命令行窗口基本使用

Oracle12c之Sqlplus命令行窗口基本使用 文章目录 Oracle12c之Sqlplus命令行窗口基本使用1. 连接1. 超级用户2. 普通用户1. 创建普通用2. 连接 2. 修改用户连接数1. 查看默认连接最多用户数1. PL/SQL developer中查看2. Sqlplus中查看 2. 查看目前已经连接的用户数3. 修改用户连…

设计模式-行为型模式(上)

行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配。 行为型模式分为类行为模式和对象行为模式,前者采用继承机制来在类间分派行为&…

Docker 搭建mysql 集群(二)

PXC方案 很明显 PXC方案在任何一个节点写入的数据都会同步到其他节点,数据双向同步的(在任何节点上都可以同时读写) 创建MySQL PXC集群 1 安装PXC镜像 docker pull percona/percona-xtradb-cluster:5.7.21 2 为PXC镜像改名 docker tag pe…

如何选择旅游路线,使得假期旅游路费最少?

旅行是许多人的热爱,但是在规划一个完美的假期时,找到最经济的路线常常是一个挑战。这里就需要引入一个著名的优化问题——旅行商问题。本文将介绍TSP的基础知识,并使用MTZ消除子环方法优化一个简单的TSP问题的示例。 旅行商问题简介 TSP&a…

用友U8 Cloud ReportDetailDataQuery SQL注入漏洞复现(QVD-2023-47860)

0x01 产品简介 用友U8 Cloud 提供企业级云ERP整体解决方案,全面支持多组织业务协同,实现企业互联网资源连接。 U8 Cloud 亦是亚太地区成长型企业最广泛采用的云解决方案。 0x02 漏洞概述 用友U8 cloud ReportDetailDataQuery 接口处存在SQL注入漏洞,攻击者未经授权可以访…

自然语言nlp学习五

6-10 文本生成--介绍_哔哩哔哩_bilibili 在自然语言处理(NLP, Natural Language Processing)领域,“sequence”通常是指一个有序的数据集合,它由一系列元素按照特定顺序排列而成。这些元素可以是单词、字符、句子或其他文本单位。…

NLP_语言模型的雏形N-Gram

文章目录 N-Gram 模型1.将给定的文本分割成连续的N个词的组合(N-Gram)2.统计每个N-Gram在文本中出现的次数,也就是词频3.为了得到一个词在给定上下文中出现的概率,我们可以利用条件概率公式计算。具体来讲,就是计算给定前N-1个词时&#xff0…

【ROS机器人系统】实验1 熟悉ROS操作系统、熟悉ROS通信架构

文章目录 实验1 熟悉ROS操作系统、熟悉ROS通信架构1、实验目的2、实验设备3、实验内容3.1 安装ROS3.2 ROS常用指令以及小海龟示例roscore命令rosrun命令rosnode 命令roscd 命令rostopic 命令 动手实现1:rosservice 命令roslaunch 命令 动手实现2:动手实现…

免费代理IP的弊端有哪些?使用代理IP前要这样哪些事项?

随着互联网的普及,越来越多的人开始需要使用代理IP来保护自己的隐私或突破网络限制。然而,免费代理IP并非完美的解决方案,它们也存在一些弊端。在本文中,我们将探讨免费代理IP的弊端以及使用代理IP前需要注意的事项。 免费代理IP的…

如何使用第三方API采集电商数据呢?

电商商家最常唠叨的就是店铺运营难做。每日多平台店铺数据统计汇总繁琐耗时,人工效率偏低,且工作内容有限。 特别是眼下“618,双十一,双十二,年底大促”将至,如何提高运营的效率和质量、保证产品及服务的良…

算法学习——华为机考题库9(HJ56 - HJ63)

算法学习——华为机考题库9(HJ56 - HJ63) HJ56 完全数计算 描述 完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。 它所有的真因子(即除了自身以外的约数)的和&…

C# CAD界面-自定义工具栏(二)

运行环境 vs2022 c# cad2016 调试成功 一、引用 acdbmgd.dllacmgd.dllaccoremgd.dllAutodesk.AutoCAD.Interop.Common.dllAutodesk.AutoCAD.Interop.dll using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.T…

【pwn】pwnable_start --只有read和write函数的getshell

首先查一下程序的保护情况 保护全关!!! 然后看ida逻辑 ida的结果很简洁,只有一段汇编代码,我们再来看看nc情况 现在我们来分析一下汇编代码 mov ecx, esp ; addr .text:08048089 B2 14 …

Fink CDC数据同步(六)数据入湖Hudi

数据入湖Hudi Apache Hudi(简称:Hudi)使得您能在hadoop兼容的存储之上存储大量数据,同时它还提供两种原语,使得除了经典的批处理之外,还可以在数据湖上进行流处理。这两种原语分别是: Update/Delete记录:H…

LLaVA:GPT-4V(ision) 的新开源替代品

LLaVA:GPT-4V(ision) 的新开源替代品。 LLaVA (https://llava-vl.github.io/,是 Large Language 和Visual A ssistant的缩写)。它是一种很有前景的开源生成式 AI 模型,它复制了 OpenAI GPT-4 在与图像对话方面的一些功…

arping交叉编译

arping命令依赖libpcap和libnet,需要先交叉编译这两个库。 1.交叉编译libpcap 下载libpcap源文件,从github上克隆: git clone https://github.com/the-tcpdump-group/libpcap.git source交叉编译环境 # environment-setup是本机的交叉编译环境, 里面…

LabVIEW风力发电机在线监测

LabVIEW风力发电机在线监测 随着可再生能源的发展,风力发电成为越来越重要的能源形式。设计了一个基于控制器局域网(CAN)总线和LabVIEW的风力发电机在线监测系统,实现风力发电机的实时监控和故障诊断,以提高风力发电的…

windows安装Visual Studio Code,配置C/C++运行环境(亲测可行)

一.下载 Visual Studio Code https://code.visualstudio.com/ 二.安装 选择想要安装的位置: 后面的点击下一步即可。 三.下载编译器MinGW vscode只是写代码的工具,使用编译器才能编译写的C/C程序,将它转为可执行文件。 MinGW下载链接:…

Stable Diffusion 模型下载:国风3 GuoFeng3

文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十推荐提示词下载地址模型介绍 欢迎使用GuoFeng3模型 - 这是一个中国华丽古风风格模型,也可以说是一个古风游戏角色模型,具有2.5D的质感。 条目内