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传输的功能变得非常强大。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vulhub中 Apache Airflow Celery 消息中间件命令执行漏洞复现(CVE-2020-11981)

Apache Airflow是一款开源的,分布式任务调度框架。在其1.10.10版本及以前,如果攻击者控制了Celery的消息中间件(如Redis/RabbitMQ),将可以通过控制消息,在Worker进程中执行任意命令。 1.利用这个漏洞需要控…

css1字体属性

一.font-family(字体系列) 不同字体系统用,隔开; 多个字母的字体系统用“”; 二.font-size(字体大小)(有单位px)(默认字体16px) 三.font-weight&#xff08…

linux虚拟机升级g++编译器版本

原先的 更新你的软件包列表: sudo apt update 添加Ubuntu Toolchain PPA(Personal Package Archive),这是一个提供较新编译器版本的第三方软件源: sudo add-apt-repository ppa:ubuntu-toolchain-r/test 再次更新软件包…

gateway网关路由配置

搭建项目(略) gatewa配置文件 server:port: 9999 spring:application:name: gatewaycloud:nacos:discovery:server-addr: localhost:8848username: nacospassword: nacosgateway:routes:- id: api-service1uri: lb://user-login-api #服务名predicat…

Windows下MySQL的界面安装

华子目录 下载MySQL安装MySQL配置MySQL配置环境变量检验MySQL是否安装成功 下载MySQL 首先我们在MySQL的官方下载MySQL https://www.mysql.com 点击download,开始下载 安装MySQL 下载完成后,我们双击msi文件 再点击next 之后我们先勾选I acc…

Qt事件机制

文章目录 1 事件机制2 ignore 和 accept3 bool event(QEvent *event);4 bool eventFilter(QObject *watched, QEvent *event);5 总结 1 事件机制 事件传递图: 记录一下事件的传递顺序,主要围绕 QEventFilter, QEvent, QKeyEvent等事件展开&#xff1a…

N-142基于springboot,vue停车场管理系统

开发工具:IDEA 服务器:Tomcat9.0, jdk1.8 项目构建:maven 数据库:mysql5.7 项目采用前后端分离 前端技术:vueelementUI 服务端技术:springbootmybatis-plus 本项目分为普通用户和管理员…

springboot156基于SpringBoot+Vue的常规应急物资管理系统

基于SpringBootVue的常规应急物资管理系统的设计与实现 摘 要 1 ABSTRACT 2 第一章 绪论 3 1.1研究背景 3 1.2研究意义 3 1.3国内外研究现状 4 1.3.1国外研究现状 4 1.3.2国内研究现状 4 1.4研究内容与方法 5 1.4.1研究内容 5 1.4.2研究方法 5 1.5论文的组织结构 5…

管理类联考-复试-英语-听力

文章目录 准备工作1.如何准备英语听力?2.听力学习注意事项一:培养良好的听音习惯,听读顺序要合理3.听力学习注意事项二:边听边记关键词 训练短期记忆能力4.听力学习注意事项三:熟记语篇衔接词把握信息走向5.听力学习注…

Tribon二次开发-tbsetenv.exe和tbunsetenv.exe

通过DOS窗口,输入命令可以添加或删除Tribon环境变量,帮助文档如下: 添加Tribon环境变量 删除环境变量 一般在第三方程序与Tribon交互会用到这种方法,通过调用CMD,输入命令,并将界面隐藏

Linux Centos stream9 mdadm

RAID(Redundant Array of Independent Disk独立冗余磁盘阵列)技术是加州大学伯克利分校1987年提出,最初是为了组合小的廉价磁盘来代替大的昂贵磁盘,同时希望磁盘失效时不会使对数据的访问受损失而开发出一定水平的数据保护技术。RAID就是一种由多块廉价磁…

pnpm安装以及管理多个nodejs版本

官网 https://pnpm.io/zh/ https://www.pnpm.cn/ nodejs安装包 https://nodejs.org/download/release/ windows安装 iwr https://get.pnpm.io/install.ps1 -useb | iex重新打开一个新的控制台,输入pnpm -v ubuntu下安装 curl -fsSL https://get.pnpm.io/insta…

​​​​​​​MD5加密原理

MD5是以512位的分组来处理输入的信息,并且将每一分组又划分成16个32 位的子分组,经过了一系列的处理后,算法的输出由四个32位的分组组成,将这 四个32位的分组结合后将生成一个128位的散列值。详细的MD5加密算法流程如 图6-13所示…

【lesson9】高并发内存池Page Cache层释放内存的实现

文章目录 Page Cache层释放内存的流程Page Cache层释放内存的实现 Page Cache层释放内存的流程 如果central cache释放回一个span,则依次寻找span的前后page id的没有在使用的空闲span,看是否可以合并,如果合并继续向前寻找。这样就可以将切…

oracle数据库索引失效情况总结

场景: 在开发中有时候遇到某个表中的列明明是创建了索引,但查询时却发现索引失效。 环境: 下面是工作流activiti中的两张表act_hi_procinst、act_hi_taskinst关系是一对多(一个流程包含多个流程环节),一个…

【乳腺肿瘤诊断分类及预测】基于自适应SPREAD-PNN概率神经网络

课题名称:基于自适应SPREAD-PNN的乳腺肿瘤诊断分类及预测 版本日期:2023-06-15 运行方式: 直接运行PNN0501.m 文件即可 代码获取方式:私信博主或QQ:491052175 模型描述: 威斯康辛大学医学院经过多年的收集和整理&…

使用Python和HTTP代理进行API请求

Python,这个简单易学又功能强大的编程语言,在网络爬虫、数据分析、自动化任务等领域都有着广泛的应用。而当我们需要从外部网站获取数据时,API(应用程序接口)就成了我们的得力助手。但有时候,某些网站会对A…

机器学习_15_贝叶斯算法

文章目录 1 贝叶斯定理相关公式2 朴素贝叶斯算法2.1 朴素贝叶斯算法推导2.2 朴素贝叶斯算法流程 3 高斯朴素贝叶斯4 伯努利朴素贝叶斯5 多项式朴素贝叶斯6 贝叶斯网络6.1 最简单的一个贝叶斯网络6.2 全连接贝叶斯网络6.3 “正常”贝叶斯网络6.4 实际贝叶斯网络:判断…

陪女朋友学习计算机二级之数据库笛卡尔积和自然连接

数据库中的基本关系运算 交 和数学中的交集类似,但是需要相同的表模式 如果俩个表有相同的关系模式如表1为(ID,姓名,学号)表2为ID,姓名,学号) 表1 表2 交之后就可以变成 并 和数…

SpringBoot数据访问复习

SpringBoot数据访问复习 数据访问准备 引入jdbc所需要的依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jdbc</artifactId></dependency> 原理分析 导入的启动器引入了两个…