TCP/IP五层模型、封装和分用

  • 1.网络通信基础
  • 2.协议分层
    • OSI七层协议模型
    • TCP/IP五层/四层协议模型【重点】
  • 3. 封装&分用

1.网络通信基础

IP地址:表示计算机的位置,分源IP和目标IP;举个例子:买快递,商家从上海发货,上海就是源IP,收货地址是湖北,湖北就是目标IP。

端口号:表示一个具体的应用程序,分源端口和目标端口,如:某个进程或服务的端口号是8080;还是买快递的例子,发货的商家,商家就是源端口号,收货的买家,买家就是目标端口号。

同学们都看过西游记⑧~唐僧每次介绍自己的时候,是这么说的:“贫僧自东土大唐而来,去西天拜佛求经”,这里的贫僧=源端口(我是谁)、东土大唐=源IP(从哪来)、佛祖=目标端口(要找谁)、西天=目标IP(到哪去)

协议:规定数据之间传输的方法/规则,就好比加密通话,说暗号,我不要碟盘了(我没事了),我对别人说:“我不要碟盘了”,对方收到后,通过之前约定的协议,对这句话进行解读,意思就是”我没事了“

2.协议分层

最原始的协议是一大类,复杂难懂,于是进行了分化,分成多种短小的协议,也就是分层,每层有各自代表的意义和作用,上层协议调用下层协议,下层协议服务上层协议,这样学习起来就有迹可循,变得简单易懂。

OSI七层协议模型

七层协议模型是指OSI(Open Systems Interconnection)七层协议模型,它是一种网络协议的分类方法,用于描述计算机网络中不同层次之间的通信协议。**OSI七层协议模型包括:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。**每一层都有其特定的功能和职责,它们之间通过接口进行通信 。七层协议模型过于复杂,实际中并不会有用到,俺就不过多赘述了~

image-20230826134215155

TCP/IP五层/四层协议模型【重点】

计算机网络中的五层协议模型是指TCP/IP五层模型,它是一种网络协议的分类方法,用于描述计算机网络中不同层次之间的通信协议。 TCP/IP五层模型包括:物理层、数据链路层、网络层、传输层、应用层,而四层协议模型只是少了一个物理层。 每一层都有其特定的功能和职责,它们之间通过接口进行通信 。

image-20230826134742912

同学们先看个故事,有助于理解五层协议的功能。

一天,我在tb买了一袋子的抹布,付款后,上海商家准备发货,把快递交给了sf快递公司,该公司准备把这个快递进行运输,运输的路线有:上海=》南京=》湖北 / 上海=》广州=》湖北,具体走哪条路线就是快递公司的事情了,这工作就好比是网络层;而我和商家只管下单接单,发货收货,不在乎这个快递是通过什么路径最终送我手上的,这个就好比是传输层;而在上海发往南京的途中,具体使用的工具是通过卡车还是飞机,这个工作就好比是数据链路层,负责两个相邻的节点进行传输。物理层就好比运输路上的基础设施,比如高速公路、铁路等。

物理层:规定了网络通信中所用到的硬件设备的规格 ,如:网线、LAN口、WAN口…

数据链路层:负责相邻两台设备之间的传输; 这里的相邻指的是:A和B设备都连接C路由,就属于相邻的两台设备。当然也不一定非要连接的是路由,也可以是网线或是其他的设备

网络层:负责规划数据传输的路径,比如:商家把快递发给买家,快递到底怎么到买家手上,这件事就归快递公司自己规划,网络层就类似于快递公司。

传输层:端口与端口之间的传输,不在乎传输过程;比如:商家把快递发给买家,买卖双方不关心快递在路上的过程,只在乎发快递和收快递。

应用层:与应用程序相关,表示 传输的数据,用户拿到这个数据怎么使用,比如:商家把快递(抹布)发给买家,买家收到货后,可以拿来擦地也可以擦桌子,也就是说数据的使用,属于应用层负责。

3. 封装&分用

数据封装:从上层协议往下层协议,层层封装

咱们假设使用QQ双方通信,比如俺发了一条消息为:hello。QQ这个应用程序就会把hello这个字符串构造成一个应用层数据报。

此处假设应用层协议的格式为:发送方QQ号+发送时间+接收方QQ号+发送的消息内容。

构造的应用层数据报:

image-20230826144355781

构造完成后,交给传输层(在系统内核里),传输层进行处理,构造成传输层的数据报, 传输层常用的协议有“UDP和TCP”,假设这里使用的是UDP,则会构造一个UDP数据报,里面包含的有源端口和目标端口等其他的数据,并拼接在应用层数据报的头部,构造完成后是这样的:

image-20230826144919510

之所以拼接报头,一是为了安全,二是为了表明消息要去哪,怎么传输,就好比发快递,要包一层快递盒,在盒子上贴上标签,标签上有收货人的信息,报头就好似一个标签。

传输层构造完成后,再交给网络层,网络层常用的协议有“IP协议”,于是网络层再打包一个IP协议报头,拼接到传输层报头前,IP报头里包含的有源IP和目的IP,构造完成后是这样的:

image-20230826145438833

网络层完成后,再交给数据链路层,此处使用的协议是“以太网协议”,根据已有的数据打包成一个“以太网数据帧”,在已有的数据报前后加上以太网帧头、帧尾。数据链路层构造完成后是这样的:

image-20230826150013627

最后数据链路层把数据交给物理层,物理层把上述的二进制数据转换给光信号/电信号,发送给另一台设备。经过上面的准备,此时才把数据真正的发送出去了。以上过程则称为“封装”。

数据分用:从下层协议往上层协议,层层解析

接收方,接收到我发送的数据后,进行对数据的解析~~~

物理层接收到发送来的光信号/电信号后,进行转换成以太网数据帧,于是又成了这个样子:

image-20230826151224450

再把这个数据交给数据链路层,链路层则会去掉帧头和帧尾,取出中间的载荷,以太网帧头里会记录这个载荷是不是一个IP协议。

数据链路层的解析:

image-20230826151921856

数据链路层把载荷交给网络层,再根据IP协议,解析IP报头,取出载荷(传输层的数据),根据IP报头解析出是TCP还是UDP协议。

网络层的解析:

image-20230826153438927

网络层把解析后的数据交给传输层进行解析,由于网络层根据IP报头里的内容解析出UDP协议,所以传输层根据UDP协议进行解析,取出报头,取出载荷(应用层数据),再把这个载荷交给应用层的程序。UDP报头里包含的有目的端口,根据这个目的端口就可以找到具体的一个应用程序,于是把最后的数据交给对应的应用程序。

传输层的解析:

image-20230826153509055

数据到达了应用层,QQ则会根据规定的应用层协议进行解析数据,最后构造,显示到界面上。

image-20230826154459518

)]

数据到达了应用层,QQ则会根据规定的应用层协议进行解析数据,最后构造,显示到界面上。

在这里插入图片描述

上述这些解析则叫做“分用”。

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

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

相关文章

理虚实一体化全栈全场景云计算应用实训室解决方案

一、 云计算应用统概述 云计算应用系统是指基于云计算技术构建的应用系统,它将软件、数据、计算和存储资源部署在云服务器上,通过网络根据应用按照一定策略为用户提供相关服务。云计算应用系统广泛应用于各个领域,包括但不限于金融、教育、政…

Windows 系统彻底卸载 SQL Server 通用方法

Windows 系统彻底卸载 SQL Server 通用方法 无论什么时候,SQL Server 的安装和卸载都是一件让我们头疼的事情。因为不管是 SQL Server 还是 MySQL 的数据库,当我们在使用数据库时因为未知原因出现问题,想要卸载重装时,如果数据库…

零基础如何使用IDEA启动前后端分离中的前端项目(Vue)?

一、在IDEA中配置vue插件 点击File-->Settings-->Plugins-->搜索vue.js插件进行安装,下面的图中我已经安装好了 二、搭建node.js环境 安装node.js 可以去官网下载:安装过程就很简单,直接下一步就行 测试是否安装成功:要…

[JDK8下的HashMap类应用及源码分析] 数据结构、哈希碰撞、链表变红黑树

系列文章目录 [Java基础] StringBuffer 和 StringBuilder 类应用及源码分析 [Java基础] 数组应用及源码分析 [Java基础] String,分析内存地址,源码 [JDK8环境下的HashMap类应用及源码分析] 第一篇 空构造函数初始化 [JDK8环境下的HashMap类应用及源码分…

Java基础 数据结构一【栈、队列】

什么是数据结构 数据结构是计算机科学中的一个重要概念,用于组织和存储数据以便有效地进行访问、操作和管理。它涉及了如何在计算机内存中组织数据,以便于在不同操作中进行查找、插入、删除等操作 数据结构可以看作是一种数据的组织方式,不…

React + Next.js 搭建项目(配有对比介绍一起食用)

文章标题 01 Next.js 是什么02 Next.js 搭建工具 create-next-app03 create-react-app 与 create-next-app 的区别04 快速构建 Next.js 项目05 App Router 与 Pages Router 的区别 01 Next.js 是什么 Next.js 是一个 React 框架,它允许你使用 React 框架建立超强的…

Python(Web时代)—— Django数据库(多表)

两表联查 常见的两表关系: 一对多:ForeignKey 举例:一个学生对应多个地址 一般通过外键实现 需要在“多”的那个模型中使用ForeignKey 使用on_delete指定级联删除策略: CASCADE:当父表数据删除时,相对…

前端工程化

一、前端发展阶段概述 1、混沌期 整个江湖中只有一个传奇,就是”程序员” 这种模式下对人员的综合要求高,开发者既要会数据库开发(SQL)、又要会服务器端开发(Java、C#、Php),还要会基本的前端…

使用 Netty 实现群聊功能的步骤和注意事项

文章目录 前言声明功能说明实现步骤WebSocket 服务启动Channel 初始化HTTP 请求处理HTTP 页面内容WebSocket 请求处理 效果展示总结 前言 通过之前的文章介绍,我们可以深刻认识到Netty在网络编程领域的卓越表现和强大实力。这篇文章将介绍如何利用 Netty 框架开发一…

<C++> STL_list

1.list的介绍 list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向 其前一个元素和后一个元素。list与…

ELK日志收集系统

目录 一、概述 二、组件 一、logstash 一、工作过程 二、INPUT 三、FILETER 四、OUTPUTS 二、elasticsearch 三、kibana 三、架构类型 一、ELK 二、ELKK 三、ELFK 四、ELFKK 五、EFK 四、配置ELK日志收集系统集群实验的步骤文档 五、配置ELK日志收集系统集群 …

【JAVA基础】数据类型,逻辑控制

❤️ Author: 老九 ☕️ 个人博客:老九的CSDN博客 🙏 个人名言:不可控之事 乐观面对 😍 系列专栏: 文章目录 数据类型整型变量 int长整型变量 long单精度浮点数 float双精度浮点数 double字符类型 char字节…

C#_特性反射详解

特性是什么? 为程序元素额外添加声明信息的一种方式。 字面理解:相当于把额外信息写在干胶标签上,然后将其贴在程序集上。 反射是什么? 反射是一种能力,运行时获取程序集中的元数据。 字面理解:程序运行…

oracle 启停操作

1. 监听端口启停 # 根据实际情况 切换至oracle用户 su - oracle# 状态查看 lsnrctl stat# 启动1521端口监听 lsnrctl start# 关闭1521监听 lsnrctl stop 2. 数据库服务启停 # 立即关闭服务 shutdown immediate# 启动服务 startup

QT登陆注册界面练习

一、界面展示 二、主要功能界面代码 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QMainWindow(parent), ui(new Ui::Widget) {ui->setupUi(this);this->setFixedSize(540,410); //设置固定尺寸th…

linux下安装Mycat

1 官网下载mycat 官方网站: 上海云业网络科技有限公司http://www.mycat.org.cn/ github地址: MyCATApache GitHubMyCATApache has 34 repositories available. Follow their code on GitHub.https://github.com/MyCATApache 2 Mycat安装 1 把MyCat…

【Java】基础入门 (十六)--- 异常

1.异常 1.1 异常概述 异常是指程序在运行过程中出现的非正常的情况,如用户输入错误、除数为零、文件不存在、数组下标越界等。由于异常情况再程序运行过程中是难以避免的,一个良好的应用程序除了满足基本功能要求外,还应具备预见并处理可能发…

Linux服务器安装部署MongoDB数据库 – 【无公网IP远程连接】

文章目录 前言1.配置Mongodb源2.安装MongoDB数据库3.局域网连接测试4.安装cpolar内网穿透5.配置公网访问地址6.公网远程连接7.固定连接公网地址8.使用固定公网地址连接 前言 MongoDB是一个基于分布式文件存储的数据库。由 C 语言编写,旨在为 WEB 应用提供可扩展的高…

LeetCode-160. 相交链表

这是一道真的非常巧妙的题,题解思路如下: 如果让他们尾端队齐,那么从后面遍历就会很快找到第一个相交的点。但是逆序很麻烦。 于是有一个巧妙的思路诞生了,如果让短的先走完自己的再走长的,长的走完走短的,…

lib61850 学习笔记一 (概念)

IEC61850 定义60多种服务满足变电站通信需求。支持在线获取数据模型,也支持IED水平通信(GOOSE报文) 术语定义 间隔 bay: 变电站由据应公共功能紧密连接的子部分组成。 例如 介于进线或者 出线 和母线之间的断路器;二条母线之间…