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.hqwc.cn/news/452013.html

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

相关文章

北朝隋唐文物广西展风采,博物馆环境监测终端全天候守护

​在灿烂的文化星空中,每一件文物都是历史的见证人,它们的保存直接影响到人类后代对过去的了解。近日,“太原博物馆北朝隋朝文物展”在广西民族博物馆拉开序幕,一场视觉历史盛会就此展开。 文物作为不可再生的历史遗产&#xff0c…

【数据结构】并查集(路径压缩)

文章目录 并查集1.朴素版本2.路径压缩3.按秩合并4.启发式合并5.练习题 并查集 1.朴素版本 1. 并查集解决的是连通块的问题,常见操作有,判断两个元素是否在同一个连通块当中,两个非同一连通块的元素合并到一个连通块当中。 并查集和堆的结构…

元数据驱动的思想

元数据驱动的思想 元数据驱动的思想应该不会陌生,但元数据驱动的实践应该会非常陌生。 因为元数据驱动架构是为了解决高频个性化的复杂业务而诞生的,而这种业务场景只存在2B领域。 有关元数据驱动的架构思想,在这里暂先简单抛几个点。&#…

云计算、Docker、K8S问题

1 云计算 云计算作为一种新兴技术,已经在现代社会中得到了广泛应用。它以其高效、灵活和可扩展特性,成为了许多企业和组织在数据处理和存储方面的首选方案。 1.1 什么是云计算?它有哪些特点? 云计算是一种通过网络提供计算资源…

【前端收藏】前端小作文-前端八股文知识总结(超万字超详细)持续更新

有了这个八股文不仅对你基础知识的巩固,不管你是几年老前端程序员,还是要去面试的,文章覆盖了前端常用及不常用的方方面面,都是前端日后能用上的,对你的前端知识有总结意义,看完后,懂的不懂的都…

OJ_成绩排序

题干 c实现 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<vector> #include<algorithm> using namespace std;struct student {int id;int score; };bool compare(student a, student b) {if (a.score > b.score) {return false;}else i…

0130-2-秋招面试—HTML篇

2023 HTML面试题 1.src和href的区别 scr用于替换当前元素&#xff0c;href用于在当前文档和外部资源之间建立联系。 <script src"main.js"></script><link href"style.css" rel"stylesheet" />2.对HTML语义化的理解 根据内…

【5G SA流程】5G SA下终端完整注册流程介绍

博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。 博客内容主要围绕: 5G/6G协议讲解 …

虚拟机Windows Server 2016 安装 MySQL8

目录 一、下载MySQL8 1.下载地址&#xff1a; 2.创建my.ini文件 二、安装步骤 第一步&#xff1a;命令窗口 第二步&#xff1a;切换目录 第三步&#xff1a;安装服务 第四步&#xff1a;生成临时密码 第五步&#xff1a;启动服务 第六步&#xff1a; 修改密码 三…

Java 数据结构 二叉树(二)红黑树

目录 数据结构图-树 简介 规则 旋转 重新着色 红黑树构建过程 前言-与正文无关 生活远不止眼前的苦劳与奔波&#xff0c;它还充满了无数值得我们去体验和珍惜的美好事物。在这个快节奏的世界中&#xff0c;我们往往容易陷入工作的漩涡&#xff0c;忘记了停下脚步&#xf…

【Win10下实现开机Jar启动的CICD自动化流程】

目录 在Win10下实现开机Jar启动的CICD自动化流程,可以按照以下步骤进行操作:在Win10下实现开机Jar启动的CICD自动化流程,可以按照以下步骤进行操作: 安装Java环境:确保你的计算机上已经安装Java环境,可以通过命令行运行java -version来验证Java环境是否已安装。 编写启动…

基于SpringBoot+Vue的防汛应急物资管理系统

本防汛物资管理系统的主要分为管理员角色和用户角色&#xff0c;主要设计的功能包括注册登录管理、密码信息管理、用户信息管理、物资信息管理等模块。 注册登录管理&#xff1a;使用本系统需要打开浏览器&#xff0c;输入相应的网址&#xff0c;如果用户是首次使用本系统&…