【JavaEE初阶】深入理解TCP协议中的封装分用以及UDP和TCP在网络编程的区别

前言

🌟🌟本期讲解关于TCP/UDP协议的原理理解~~~

🌈上期博客在这里:【JavaEE初阶】入门视角-网络原理的基础理论的了解-CSDN博客

🌈感兴趣的小伙伴看一看小编主页:GGBondlctrl-CSDN博客

🔥 你的点赞就是小编不断更新的最大动力                                       

🎆那么废话不多说直接开整吧~~~

目录

一.封装与分用

1.封装

1.1应用层封装

1.2传输层封装

1.3网络层封装

1.4数据链路层封装

1.5物理层发送

2.分用

2.1物理层分用

2.2数据链路层分用

2.3网络层分用

2.4传输层分用

2.5应用层显示

3.路由器与交换机分用

3.1交换机的分用

3.2路由器的分用

二.网络编程重要概念

1.客户端与服务器

1.1客户端与服务器的理解

1.1客户端与服务器之间的交互

2.TCP与UDP的区别

三.总结

 

一.封装与分用

1.封装

所谓的封装是数据传输中一个重要的过程,即添加报头的过程就是封装,但是这里显得很是抽闲,那么就按照一下来进行解释吧;

假如我们要进行一次聊天,我们就会发送一个“你好吗朋友?”,那么此时每一层的操作是怎样的呢???

1.1应用层封装

这里在应用层就会把这个字符串构造成一个应用层数据包,这里的数据包就是按照应用层的协议进行构造的,我们假如这里的数据包是按照应用层协议进行构造

如图所示:

实现数据包的传输:这里就是通过传输层提供的API,进行调用过后,将应用层数据包传给传输层;

1.2传输层封装

那么这里的传输层就会将上述的数据作为一个整体,然后将这个整体封装成为传输层数据包,由于传输层使用的协议是TCP或者是UDP那么这里就会将这的传输层数据包成为TCP数据包,即添加TCP的报头

如图所示:

 此时就将这里的应用层数据包进行了封装,其中TCP部分为报头,后面部分为“载荷”,并且这里的TCP报头承载这关键的传输信息

实现TCP数据包的转送:这里就是通过调用网络层提供的API,进行调用过后,将TCP数据包传给网络层;

1.3网络层封装

这里就会将从传输层传输过来的数据又当做是一个整体,然后将这个整体封装成网络层数据包,由于这里的协议是IP协议,那么就会在这个整体之上又拼上一个IP报头;

图示如下:

此时黄色部分就是IP数据包的报头,红色和和黑色部分即是IP数据包的载荷;并且这里的IP报头承载了重要的源IP和目的IP

实现IP数据包的转送:这里就是通过调用数据链路层提供的API,进行调用过后,将IP数据包传给数据链路层;

1.4数据链路层封装

此时这里的封装和上述是一样的,这里使用的协议是“以太网”,那么就会将上述的IP数据包进行封装成为以太网数据帧;

如图所示:

那么此时整个就是一个以太网数据帧,一个帧头,一个帧尾,然后中间部分就是以太网数据帧的载荷

实现以太网数据帧的转送:这里就是通过调用数据链路层提供的API,进行调用过后,传到物理层

1.5物理层发送

这里就要将从数据链路层中的以太网数据帧的二进制数据转化成以光纤、电磁破、电信号的方式进行传播出去;

2.分用

2.1物理层分用

此时当接收方的物理层受到后,将其转化为二进制的以太网数据帧,传给数据链路层

2.2数据链路层分用

就是按照以太网数据帧的方式进行解析,取出以太网数据帧的载荷部分,传给上层的协议;

2.3网络层分用

就是按照IP协议的格式进行解析,将IP数据包的载荷取出来传给上层协议;

 

2.4传输层分用

就是按照TCP协议进行解析,取出TCP数据包的载荷部分,然后将这部分传给上层协议;

2.5应用层显示

 最后使用应用层协议,解析数据,将其中的内容信息解析出来,然后显示在另一方的手机上

注意:分用就是封装的逆向过程

3.路由器与交换机分用

接着上满的讲述,这里用于网络直通的情况下完成的工作,但是现实情况不是,在这之间,存在很多的路由器和交换机的连接,所以真正的情况并不是一直分用到五层;

3.1交换机的分用

经典的交换机,分用到数据链路层;

实际上的过程就是,交换机物理层将光电信号等转化为二进制的以太网数据帧,传给交换机数据链路层;然后就会解析以太网数据帧,取出载荷,另一方面解析帧头帧尾决定下一步数据往哪里进行发送;

如图所示:

此时解析完后进行新的以太网数据帧的插入:

 此时就完成的交换机的分用过程了~~~

3.2路由器的分用

这里的路由器分用比交换机分用要复杂一点,这里是分用到网络层;

具体过程如下:

1.首先在路由器的物理层上将物理信号转化为二进制的以太网数据帧,然后传送给数据链路层;

如下图所示:

2.然后将这的数据链路层进行解析,拿出载荷,传给网络层;

3.在网络层,IP协议就会对这个IP数据包进行解析,取出载荷,拿到数据后进行新的IP报头的封装,即如下:

4.然后继续传给是数据链路层, 继续新的以太网数据帧的封装:

封装完成后,传输给下一层的物理层,进行物理信号的转化,传输给下一个组件;

二.网络编程重要概念

1.客户端与服务器

1.1客户端与服务器的理解

概念:在网络中主动发起信息的是客户端,被动接收信息的一端是服务器;

同一个程序在不同的场景中扮演的客户端还是服务器是不确定的;

如下图:

例如此时:这里的的入口服务器在绿色方框内,就代表的是服务器,但是在黄色方框内就是发起请求的一方,那么他就是客户端

客户端给服务器发送数据就是“请求”

服务器给客户端返回数据就是“响应” 

1.1客户端与服务器之间的交互

1.一问一答

即一个请求对应的是一个响应,后序的网站开发就是如此;

2.一问多答

即一个请求对应的是多个响应,即这里的场景多为“下载”;

3.多问一答

即多个请求对应的是一个响应,这里的使用场景多为“上传”;

4.多问多答

即多个请求对应的是多个响应,这里使用的场景一般就是“远程桌面、远程控制”

2.TCP与UDP的区别

TCP:有连接,可靠传输,面向字节流,全双工

UDP:无连接,不可靠传输,面向数据报,全双工

1.有连接&无连接

这里的连接不是物理意义上的连接,而是虚拟的连接,有连接就是像打电话一样,双发接通才能通话消息;而无连接就是发短信,微信一样,只要发送了无论对方是否同意,那么都能受到消息

2.可靠传输&不可靠传输

这里的可靠传输是尽可能完成数据传输,虽然无法确保能否传输给对方,但是知道这个数据对方是否收到了,而不可靠传输,就并不知道数据是否对方收到了

3.面向字节流&面相数据报

和文件IO一致,面向字节流表示的是以字节来进行传输,而面向数据报,表示的是按照数据报的方式进行传输(数据报是由一系列字节组成的特定结构)

4.全双工&半双工

一个通道可以双向通信就是全双工,如只能一方进行通信就是半双工;

三.总结

💬💬本期小编注重讲解了关于TCP/UDP协议的内部实现数据的传输转化的原理,包括如何进行封装,如何进行分用,以及存在路由器和交换机的情况;最后在网络编程小编提出了客户端与服务器的概念,以及TCP与UDP的区别~~~

🌅🌅🌅~~~~最后希望与诸君共勉,共同进步!!


💪💪💪以上就是本期内容了, 感兴趣的话,就关注小编吧。

                             😊😊  期待你的关注~~~

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

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

相关文章

前端算法:时间复杂度和空间复杂度

一、算法的重要性 1.为什么前端开发需要学习算法? 学习算法可以帮助培养逻辑思维能力,在面对复杂的问题时,能够系统性地分析问题、分解步骤并成功找到的正确的解决方案。 掌握基本的排序、查找算法和时间复杂度分析可以帮助编写更高效的代码…

移动网络知识

一、3G网络 TD-SCDMA(时分同步码分多址接入)、WCDMA(宽带码分多址)和CDMA2000三种不同的3G移动通信标准 TD-SCDMA(时分同步码分多址接入):中国自主开发的一种3G标准主要用于国内市场&#xff…

零跑“半价平替”杀疯了,没钱别硬上问界理想

文 | AUTO芯球 作者 | 雷慢 你绝对想不到, 现在造车新势力的周销量榜第二名已经是零跑了 来看啊,十月第2周, 零跑周销量8700量,已经超过问界的7100辆, 放以前,问界也是周销量9000台左右的主&#xff0…

RHCE——时间服务器

NTP——网络时间协议,通过udp123端口进行网络时钟同步 chronyd chronyd——一个开源自由的网络时间协议 NTP 的客户端和服务器软件。能让计算机保持系统时钟与时钟服务器(NTP)同步,从而使计算机保持精确的时间。 Chrony由两个程…

大数据查询引擎之Tez

Apache Tez 是一个用于大数据处理的分布式计算框架,旨在提高 Hadoop 的 MapReduce 计算引擎的效率和性能。它是一个面向 DAG(有向无环图)任务执行的框架,主要用于大规模数据处理场景中,特别是在 Apache Hadoop 生态系统…

开放式耳机好不好用?盘点开放式蓝牙耳机排行榜前五名

​开放式耳机是好用的,目前非常流行,它们以时尚、美观和舒适著称,迅速赢得了众多用户的喜爱,成为了耳机市场的新宠。与传统的入耳式耳机相比,开放式耳机佩戴更稳固,对耳朵也更为温和。尽管有些人认为它们价…

C++在vscode中的code runner配置/环境配置

C在vscode中快捷运行(code runner) 一、配置tasks.json 在vscode中创建文件夹或打开文件夹,会发现文件夹下多了一个.vscode文件夹,在该文件夹下创建tasks.json文件,并添加一下内容 {"version": "2.0…

单周期处理器设计思路

目录 单周期处理器设计思路加法器的优化行波进位加法器(RCA)先行进位加法器(CLA)两种加法器的对比CLA的再优化可以用加法器实现的其他操作 编写可维护的RTL代码 单周期处理器设计思路 加法器的优化 (用综合器综合*/等…

如何修改MAC地址破解网络无线网络限制-担心别人蹭网,路由器设置MAC地址过滤,限定了能访问无线网络的网卡地址-供大家学习参考

路由器都设置了MAC地址过滤,也就是限定了能访问无线网络的网卡的MAC地址。因为无线路由器不一定由自己控制,所以当更换了笔记本或者更换了无线网卡的时候,也许就上不了网了。我们可以修改网卡的MAC地址实现上网。 下载:https://do…

R01 vue+springboot 高考志愿推荐AI问答大数据平台

可以查看本文系统对应的视频讲解: vuespringboot 高考推荐AI问答志愿推荐大数据 R01 带增删改查、大屏、支持爬虫 1 系统背景 近年来,高考作为中国教育体系中最重要的考试之一,承载了无数考生和家庭的梦想。随着信息技术的迅猛发展&#xff…

Linux shell脚本文件通过shc工具加密,生成静态链接可执行文件

要使用 shc 工具对 Linux shell 脚本进行加密并生成静态链接的可执行文件,你可以按照以下步骤操作: 安装 shc 工具: 如果你的系统中还没有安装 shc,可以通过包管理器安装,例如在 Ubuntu 系统中,可以使用以下…

YOLOv11模型改进-模块-引入空间池化模块StripPooling 解决遮挡、小目标

本篇文章将介绍一个新的改进机制——空间池化模块StripPooling,并阐述如何将其应用于YOLOv11中,显著提升模型性能。首先,我们将解析StripPooling的工作原理,SP模块通过条带池化在水平和垂直方向上捕捉长距离依赖关系,增…

如何在线查看近8年的建筑覆盖变化

我们在《谷歌发布建筑数据,高度误差达惊人的1.5米》一文中介绍了谷歌2.5D建筑数据用途、制作方法以及数据下载方式。 现在我们演示下如何在线查看近8年的建筑物覆盖、建筑物质心和建筑物高度的变化。 历史建筑覆盖在线查看 2.5D建筑演变数据集包含2016年至2023年…

碰一碰支付怎么推广的?小白也能看懂的教程来了!

作为支付宝和微信全面力推的一个项目,碰一碰支付的热度可谓是节节攀升,连带着与之相关的话题,如碰一碰支付是什么和碰一碰支付怎么推广的等也因此成为了人们关注的焦点。那么,本期,我们就来详细地解答一下这两个问题。…

2024台州赛CTFwp

备注: 解题过程中,关键步骤不可省略,不可含糊其辞、一笔带过。解题过程中如是自己编写的脚本,不可省略,不可截图(代码字体可以调小;而如果代码太长,则贴关键代码函数)。…

I.MX6U 字符设备驱动开发指南

目录 一、引言 二、字符设备驱动的基本概念 1.字符设备的定义 2.字符设备驱动的作用 三、I.MX6U 字符设备驱动开发步骤 1.确定设备信息 2.编写设备驱动代码 3.编译和加载驱动 4.测试设备驱动 四、实例分析 1.确定设备信息 2.编写设备驱动代码 3.编译和加载驱动 4.…

iOS 回到主线程刷新UI

在iOS 里面,项目打开就会运行一个主线程,所有的UI都在主线程里进行.其他网络请求或者耗时操作理论上也可以在主线程运行,但是如果太耗时,那么就会影响主线程其他UI.所以需要开字线程来进行耗时操作,子线程进行完耗时操作之后,如果项目需求有需要刷新UI,或者改变UI,一定得回到主…

音频/视频提取器:Python和moviepy实现

在这篇博客中,我们将深入探讨一个使用Python和wxPython构建的音频/视频提取器应用程序。这个应用程序允许用户从视频文件中提取音频,或者从音频文件中截取特定时间段。让我们逐步分析这个程序的功能和实现。 C:\pythoncode\new\MP3towav.py 全部代码 import wx import os imp…

「iOS」——YYModel学习

iOS学习 前言优势使用方法简单的Model与JSON互转多样化的数据类型交换容器类数据交换 model中包含其他model白名单与黑名单 总结 前言 YYModel是YYKit的高效组件之一,在实际场景中的非常实用,在项目中使用MVC架构时,可以简化数据处理。在性能…

OpenShift 4 - 云原生备份容灾 - Velero 和 OADP 基础篇

《OpenShift 4.x HOL教程汇总》 说明: 本文主要说明能够云原生备份容灾的开源项目 Velero 及其红帽扩展项目 OADP 的概念和架构篇。操作篇见《OpenShift 4 - 使用 OADP 对容器应用进行备份和恢复(附视频) 》 Velero 和 OADP 包含的功能和模…