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

news2024/11/28 0:56:30

文章目录

  • 消息的传输
    • 什么是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.coloradmin.cn/o/1432863.html

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

相关文章

Docker基础与持续集成

docker 基础知识: docker与虚拟机 !左边为虚拟机,右边为docker环境 – Server :物理机服务器Host OS :构建的操作系统Hypervisor :一种虚拟机软件,装了之后才能虚拟化操作系统Guest OS :虚拟化的操作系统…

操作系统-01-Mac 苹果操作系统 Brew /端口占用

Brew brew 又叫 Homebrew,是 Mac OSX上的软件包管理工具。类似 ubuntu 中的 apt-get。 Install $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"如下 houbinbindeMacBook-Pro:tools houbin…

机器学习系列——(十)支持向量机

一、背景 支持向量机(Support Vector Machine,SVM)是一种用于分类、回归和离群点检测等领域的监督学习方法。它最初由Vapnik和Cortes在1995年提出,被认为是机器学习领域中最成功的算法之一。 二、原理 2.1 线性SVM 我们先从最简…

django+flask网上购物商城系统的设计与实现python-vue

全球经济在快速的发展,中国更是进步飞速,这使得国内的互联网技术进入了发展的高峰时期,这让中外资本不断转向互联网这个大市场[3]。在这个信息高度发达的现在,利用网络进行信息管理改革已经成为了人们追捧的一种趋势。“网上购物系…

Qt案例 在对QGraphicsView视图修改和撤销修改图元操作时,使用命令模式实现。

当项目中有QGraphicsView视图直接修改图元的功能时,常会有CtriZ和CtrlY这种执行与撤销图元修改的功能,以便于在修改图元后能够进行一个还原/执行操作,此时就适合使用命令模式设计来实现这个功能。 以下示例在WINDOWS系统,Qt Creat…

【蓝桥杯冲冲冲】动态规划学习 [NOIP2003 提高组] 加分二叉树

【蓝桥杯冲冲冲】动态规划学习 [NOIP2003 提高组] 加分二叉树 蓝桥杯备赛 | 洛谷做题打卡day24 文章目录 蓝桥杯备赛 | 洛谷做题打卡day24[NOIP2003 提高组] 加分二叉树题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示数据规模与约定思路 题解代码我的一些话 [NOI…

MySQL如何实时同步数据到ES?试试阿里开源的Canal

前言 前几天在网上冲浪的时候发现了一个比较成熟的开源中间件—— Canal 。在了解了它的工作原理和使用场景后,顿时产生了浓厚的兴趣。今天,就让我们跟随我的脚步,一起来揭开它神秘的面纱吧。 目录 前言 简介 工作原理 MySQL主备复制…

两种方式实现文本超出指定行数显示展开收起...

需要实现这样一个功能 默认高度下文本超出隐藏&#xff0c;点击展开可查看所有内容&#xff0c;点击收起可折叠 方法一&#xff1a;通过html和css实现 代码部分 html:<div className"expand-fold"><input id"check-box" type"checkbox&qu…

(4)【Python数据分析进阶】Machine-Learning模型与算法应用-回归、分类模型汇总

线性回归、逻辑回归算法应用请参考: https://codeknight.blog.csdn.net/article/details/135693621https://codeknight.blog.csdn.net/article/details/135693621本篇主要介绍决策树、随机森林、KNN、SVM、Bayes等有监督算法以及无监督的聚类算法和应用PCA对数据进行降维的算法…

2024年生成式AI芯片市场规模将达500亿美元

1月24日&#xff0c;德勤发布《2024科技、传媒和电信行业预测》中文版报告&#xff0c;2024年是科技、传媒和电信行业关键的一年&#xff0c;不少科技公司正利用生成式AI升级软件和服务&#xff0c;预计今年全球生成式人工智能芯片销售额可能达到500亿美元以上。 2024年将有许…

量子计算帮助解锁对衰老和疾病的理解

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

初探unity中的ECS

ECS是一种软件架构模式&#xff0c;就像MVC一样。ECS最早在游戏《守望先锋》中提及到的相关链接。ECS具体是指实体&#xff08;entity&#xff09;、 组件&#xff08;component&#xff09;和系统&#xff08;system&#xff09;&#xff1a; 实体&#xff1a;实体是一个ID&a…

IDEA如何进行远程Debug调试(二)解决jar包运行报错的问题

一、解决jar包运行报错的问题 上文提到在进行debug远程调试的时候&#xff0c;打包后的jar包本地无法运行&#xff0c;报如下的错误 ​​​​​​​IDEA如何进行远程Debug调试-CSDN博客 查看报错是找不到对应的类&#xff0c;那么我们使用jd-gui的反编译工具&#xff0c;看看…

opencv中使用cuda加速图像处理

opencv大多数只使用到了cpu的版本&#xff0c;实际上对于复杂的图像处理过程用cuda&#xff08;特别是高分辨率的图像&#xff09;可能会有加速效果。是否需要使用cuda需要思考&#xff1a; 1、opencv的cuda库是否提供了想要的算子。在CUDA-accelerated Computer Vision你可以…

Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(三)

原文&#xff1a;Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 第六章&#xff1a;决策树 决策树是多功能的机器学习算法&#xff0c;可以执行分类和回归任务&#xff0c;甚至多输出任务。它们…

Android BitmapShader setLocalMatrix缩放Bitmap高度重新onMeasure,Kotlin

Android BitmapShader setLocalMatrix缩放Bitmap高度重新onMeasure&#xff0c;Kotlin <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://sc…

Kubernetes基础(十一)-CNI网络插件用法和对比

1 CNI概述 1.1 什么是CNI&#xff1f; Kubernetes 本身并没有实现自己的容器网络&#xff0c;而是借助 CNI 标准&#xff0c;通过插件化的方式来集成各种网络插件&#xff0c;实现集群内部网络相互通信。 CNI&#xff08;Container Network Interface&#xff0c;容器网络的…

JavaScript原型和原型链是什么

JavaScript原型和原型链是Web前端技术中的重要概念&#xff0c;了解它们可以帮助开发者更好地理解JavaScript对象的创建和继承机制。本文将深入探讨JavaScript原型和原型链&#xff0c;并提供相关的示例代码和解析。 首先&#xff0c;让我们了解一下JavaScript中的原型。每个J…

ubuntu 18.04修改网卡名称

1.原来网卡配置 现在要把enp3s0的名称改为eth0 2. 总共修改三个文件 第一个修改 sudo vi /etc/default/grub 添加最后一行 GRUB_CMDLINE_LINUX"net.ifnames0 biosdevname0" 第二个修改sudo vi /etc/udev/rules.d/70-persistent-net.rules 如果没有就新建文件&a…

用通俗易懂的方式讲解:12 个大模型 RAG 痛点及解决方案

受 Barnett 等人的论文《工程检索增强生成系统时的七个失败点》启发&#xff0c;让我们在本文中探讨论文中提到的七个失败点以及开发 RAG 管道时的五个常见痛点。 论文&#xff1a;https://arxiv.org/pdf/2401.05856.pdf 更重要的是&#xff0c;我们将深入探讨这些 RAG 痛点的…