【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的区别~~~

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


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

                             😊😊  期待你的关注~~~

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

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

相关文章

【Spring】关于Spring中aware相关接口的作用

Aware 接口的回调方法是在 Bean 实例化之后调用的。具体来说,这些回调方法是在依赖注入完成后,但在 Bean 完全初始化之前调用的。这是 Spring 容器管理 Bean 生命周期的一部分 完成了属性赋值之后,Spring会执行一些回调,包括&…

java中Set,Map,List集合的比较(不包含增删改查函数方法)

目录 1. 集合的简介2. List3. Set4. Map5. 比较5.1 结构特点5.2 实现类5.3 区别 6. 其他问题6.1 集合与数组的区别6.2 哪些集合类是线程安全的 7. 参考链接 1. 集合的简介 所有的集合类和集合接口都在java.util包下。 在内存中申请一块空间用来存储数据,在Java中集…

C++加载sqlite3数据库文件

db数据库文件简单轻便,形式上可以像excel数据那样,但是解析的时候却有很大的灵活性。使用Python解析db数据已经是很简单的事情,使用专门的数据库可视化工具,通过sql语句查询内容也是有手就行,也许C也不难,但…

31省226地级市极端天气和气候风险指数 (1993-2023年)附下载链接

1993-2023年31省、226个地级市极端天气和气候风险指数 下载链接-点它👉👉:1993-2023年31省、226个地级市极端天气和气候风险指数-最新出炉.zip 数据名称 1993~2023 省市级气候风险指数 数据来源 nature 子刊,已转…

DEPT:DECOMPOSED PROMPT TUNING FOR PARAMETER-EFFICIENT FINE-TUNING

论文汇总 当前的问题 (1)Prompt Tuning通常收敛缓慢,并且对初始化敏感; (2)Prompt Tuning延长了输入序列的总长度,从而加剧了计算需求(即训练/推理时间和内存成本),这是由于Transformer的二次复杂度(Vaswani et al, 2017)。 解…

鸿蒙开发:实现全局异常捕获和异常查看

前言 开发中的异常信息,我们很容易排查,直接可以在控制台中就可以查看,但是,提交给测试同学或者上线后的异常信息,我们如何获取呢?这里我们很容易想起,三方sdk,比如常见的腾讯Bugly…

基于Springboot+Vue的学校课程管理系统(含源码数据库)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 这个系…

vue之打包配置环境

一直以来都是用脚手架直接搭建的项目,也很少去深究,前两天因为环境配置变更,稍微研究了下 NODE_ENV 首先 在evn.xxx 的配置文件里 一定要有的NODE_ENV NODE_ENV 默认只有两种状态即development和production development: 指代本地开发即localhost环境(本地的开发…

VirtualBox虚拟机桥接模式固定ip详解

VirtualBox虚拟机桥接模式固定ip详解 VirtualBox 桥接设置Ubuntu 24.04使用固定IP问题记录 VirtualBox 桥接设置 为什么设置桥接模式?桥接模式可以实现物理机和虚拟机互相通信,虚拟机也可以访问互联网(推荐万金油),物…

2020款Macbook Pro A2251无法充电无法开机定位及修复

问题背景 up主有一台2020年的Macbook Pro,带Touch Bar,16G512G,四核I5,型号A2251 应该是一周没充电了,之前还用的好好的,后来有一天出差想带上 打开没电,手头上有个小米的66W快充头&#xff0c…

LeetCode常用算法模板

代码模板 1、DFS:适用于树和图的遍历、组合问题。 2、BFS:适用于树和图的层次遍历、最短路径问题。 3、二分查找:适用于有序数组的搜索问题。 4、动态规划:适用于最优化问题、序列问题。 5、贪心算法:适用于局部最优问…

(二)Windows通过vs c++编译PaddleOCR-2.8.1

编译环境 操作系统:windows 11 paddleOCR版本:2.8.1 opencv版本:4.10.0 cmake版本:3.22.6 git版本:2.47.0 visual statio版本:VS 2022 Community(选择社区版本即可,安装时记得…

python离线安装依赖

以pymsql依赖为例操作如下: Python Package Index(PyPI)的官方网址是: PyPI The Python Package Index 在这个网站上,你可以搜索、浏览和下载Python包。 tar -xvzf pymysql2-1.3.3.tar.gz cd pymysql2-1.3.3 python setup.p…

502 错误码通常出现在什么场景?

服务器过载场景 高流量访问:当网站遇到突发的高流量情况,如热门产品促销活动、新闻热点事件导致网站访问量激增时,服务器可能会因承受过多请求而无法及时响应。例如,电商平台在 “双十一” 等购物节期间,大量用户同时…

文生图的底层逻辑比你想象中简单!从大语言模型到大型多模态模型的演进与展望

2024年8月15日,来自浙江农林大学(数学与计算机科学学院)冯海林团队在CMC期刊发表名为“Evolution and Prospects of Foundation Models: From Large Language Models to Large Multimodal Models”的文章。在这篇文章中,研究团队首…

铲屎官们快来交作业!双十一性价比高的宠物空气净化器求推荐?

好不容易等到一年一度的双十一,这个购物狂欢节我肯定不能错过。除了自己买买买外,还准备给我家小猫也买个礼物。之前听说宠物空气净化器对养宠家庭作用很大,打算趁活动拿下。 不看不知道,一看吓一跳,有点太贵了吧&…

【SoC】被忽略的reset结构设计

1024这天爆出来的设计失误,真的很应景啦! 先献上A72的reset结构图吧,虽然最终的解决方案不是按照这个来的,不过也给了一个相对较清晰的reset架构了。 异步复位树 当对整个电路进行复位的时候,使用异步复位&#xff0c…

spark统一内存模型 详解

Apache Spark 是一个用于大规模数据处理的分布式计算框架,它支持多种处理模型(如批处理、流处理、SQL、机器学习等)。为了高效地在分布式环境中处理这些多样化的工作负载,Spark 在 2.x 版本后引入了统一内存管理模型,以…

【实战项目】——Boost搜索引擎(五万字)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、项目的相关背景 1.1、什么是Boost库? 1.2、什么是搜索引擎? 1.3、为什么要做Boost库搜索引擎? 二、搜索引擎的宏观原…

生产小工单如何轻松实现生产任务敏捷管理的?

在现代生产任务制造业中,有效管理生产是提升效率的关键。生产管理系统中的生产小工单管理,是解决传统生产管理痛点的重要工具。本文将深入探讨生产小工单的概念、流程及其主要功能。 下面我会用一个实际的生产工单系统为例,给大家详细介绍下…