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

news/2024/10/21 18:21:58/

前言

🌟🌟本期讲解关于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.ppmy.cn/news/1540863.html

相关文章

危化品经营单位(生产管理人员)考试试题及答案

危化品经营单位(生产管理人员)考试试题及答案 76.生产经营单位应当组织开展本单位的( ),使有关人员了解应急预案内容,熟悉应急职责、应急程序和岗位应急处置方案。 A.应急预案培训活动 B.应急预案编制 C.应急预案演练 答案:A…

六、LogicFlow 自定义业务边 Edge

前言 经过前面的文章讲解,目前已经实现了节点拖拽到画布中,并且也实现了节点之间的基础连线,到这里也算是入了门,接下来继续探究新学习新的功能,以满足新的需求,那么这一章就会学习如何更改两节点之间的连…

Verilator——最简单、最细节上手教程

目录 前言工具安装Verilator 安装GTKwave 安装 Verilator 基础用法fst格式和vcd格式的wave文件Verilator 的使用 Verilator 的进阶使用与GDB搭配与makefile搭配 Verilator 的高阶用法访问模块内部数据 前言 此教程会以ubuntu22.04为例 从如何安装,到如何使用 全程帮…

oracle中的exists 和not exists 用法

exists (sql 返回结果集为真) not exists (sql 不返回结果集为真) exists 与 in 意思相同,语法不同,效率高于in not exists 与 not in 意思相同,语法不同,效率高于in 基本概念: se…

WPF入门_03路由事件

1、如何定义路由事件 1)事件定义 public static readonly RoutedEvent ClickEvent; 2)事件注册,Button按钮的Click事件是继承于ButtonBase基类的 ClickEvent = EventManager.RegisterRoutedEvent("Click", RoutingStrategy.Bubble, typeof(RoutedEven…

鸿蒙网络编程系列7-TLS安全数据传输单向认证示例

1.TLS简介 TLS(Transport Layer Security)协议的前身是SSL(Secure Socket Layer)安全套接层协议,由Netscape公司于1994年提出,是一套网络通信安全协议。IETF(The Internet Engineering Task Fo…

汕头市自闭症全托管学校,为孩子打开未来大门

原文指路:http://www.zibizhengwang.com/page33.html 在探索自闭症儿童教育的广阔领域里,全托管学校以其独特的优势,为众多家庭提供了专业、全面且贴心的支持。汕头市自闭症全托管学校的成功实践,无疑为我们提供了一个宝贵的参考…

SQL数据库刷题sql_day34(移动平均值、累计求和)

描述 移动平均值 1.求不同产品 每个月以及截至当前月最近3个月的平均销售额 2.求不同产品截至当前月份的累计销售额 数据准备 mysql CREATE TABLE sales_monthly (product VARCHAR(20),ym VARCHAR(10),amount DECIMAL(10,2) );-- 插入测试数据 INSERT INTO sales_monthly (prod…