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

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


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

😊😊 期待你的关注~~~

相关推荐
AI原吾1 小时前
构建灵活、高效的HTTP/1.1应用:探索h11库
网络·python·网络协议·http·ai·h11
看山还是山,看水还是。1 小时前
Nginx 的 Http 模块介绍(中)
android·运维·网络·nginx·http
Tony聊跨境1 小时前
什么是 HTTP 代理?它如何工作?
网络·http·ip
licy__1 小时前
计算机网络期末考试试卷及答案
网络
码出钞能力1 小时前
UDP组播测试
网络·网络协议·udp
苏湘涵1 小时前
socket编程---UDP
linux·开发语言·网络·php·进程通信
清酒伴风(面试准备中......)1 小时前
计算机网络——开放系统互连参考模型
网络·计算机网络·1024程序员节
不甘平凡的蜜蜂1 小时前
第三十三篇:TCP协议如何避免/减少网络拥塞,TCP系列八
运维·网络·网络协议·tcp/ip·计算机网络·智能路由器
xy.Ren2 小时前
【C++】`->` 符号
网络·c++