0


【JavaEE初阶】第七节.网络原理TCP/IP协议

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

今天我们将学习有关计网中应用层和传输层的有关内容;包括应用层的TCP/IP协议,传输层的UDP,TCP协议;就让我们一起进入到今天的学习中吧!!!!!


1.1 应用层协议;

1)介绍:

咱们自己编写的应用程序,就是在应用层;

(也是实际开发中最常打交道的)

虽然应用层里面有一些现成的协议. 但是咱们在工作中少不了一个重要的事情, 自定义应用层协议

自定义应用层协议相当于发明协议;

协议就是约定,约定好客户端和服务器;按照啥样的格式来传输数据;

2)应用层协议是如何约定的?

举例说明:(回显服务器)

约定了:每个请求,都是以\n结尾;每个响应,也都是\n结尾.

scanner.next();这是一个非常简单的约定;

3)自定义应用层协议,需要从两个方面入手:

1.考虑清楚,交互过程要传递的信息有哪些;

举例说明:

点外卖的案例;

比如我们现在需要在美团上面点一个外卖;

1)启动程序,涉及到网络交互.(交互中涉及到哪些信息的传递,和需求又是密切相关!)

请求:需要用户的身份信息,位置信息;

响应:商家的信息(商家名称,商家的评分,商家的位置,商家的预览图)

2) 点击某个商家,涉及到网络交互.

请求:用户信息,点击的商家信息;

响应:该商家的详细情况(有哪些外卖可以点,每个菜都是多少钱,评价如何,销量多少,预览图,分类信息)

2.考虑清楚,这些信息组织格式;

方式一:

直接使用简单分隔符来对不同部分的信息做区分;

注意:使用的;以及\n都是可以灵活的替换成其他符号的;

方式二:

使用固定长度来区分是从哪里到哪里的一个信息;

方式三:

** 上述的两种风格,还可以混搭.**

有些字段使用固定长度,有些字段使用分割符;

上述格式,比较的简单粗暴;

除此之外,还有一些业界更通用的数据约定的格式~~但是格式就要更复杂些了;

方式四:

通过XML的格式来约定数据;

** 方式五:**

** 方式六:**

总结:

咱们应用层协议数据格式,有很多种可以参考的方式!!!

在实际开发中,就要根据实际的情况来决定使用哪种更合适;

应用程不仅仅是可以写代码自定义协议,也有一些现成的协议,可以直接使用的.

其中最著名的就是HTTP协议 (后面的课程再介绍)

二、传输层协议;

2.1 UDP协议;

1)UDP****协议端格式:

**实际情况的格式: **

** 1.源端口号和目的端口号;**

使用的是ip地址;主要用来区分当前是哪个主机;

一个主机上可能有多个应用程序,使用端口号来区分应用程序;

eg:送快递的话;

源端口号就是发件人电话;目的端口号就是收件人电话;

2.UDP长度;

**一个UDP数据报最长就是64KB; **

为啥不把UDP协议升级更新下?把长度用更大的字节(4字节, 8字节)

原因:

UDP已经内置到各个操作系统内核中了;发布到全世界无数的主机中了.

要想进行升级,就得要求全世界的主机的操作系统都统一升级到这个新版本的UDP才行.

万一有一部分没升级.... UDP就无法工作了.

务必要考虑到升级带来的影响!!很多的升级操作,都要考虑到"兼容性";

3.UDP效验和;
1)作用:
接收方,收到了数据之后,就得验证下,看看当前的数据是否是正确的!!

因为网络传输中,传输的数据,不一定是准确无误的!!!

本质上是光信号/电信号;使用不同频率的光信号,表示1-0,使用不同电平的电信号,表示1-0;

干扰就可能造成"比特反转";

2)举实例说明:

比如生活中****买电脑台式机(组装的);

就需要选配置;买之前就需要确定每个硬件的配置单;

电脑商家把电脑组装好了,发给你的时候,会带着配置单一起再发给你.

拿着这个配置单,来检查看这里的每个部分都是是否匹配;所以这里的配置单就起到了效验的效果;

3)使用流程:

UDP传输数据,网络上的数据是可能收到干扰;

发送的时候,针对要传输的数据,计算一 个"校验和”(相当于配置单);

发送的时候,把数据连带校验和一起发送过去;

接收的时候,针对收到的数据重新计算校验和,对比一下自己计算的校验和和发来的校验和是否是一样的;

如果是一样的,就说明数据没啥问题;不一样数据就有问题的;

效验和的注意点:

校验和,不仅仅是在UDP这里,很多别的地方也会涉及到;

只要是数据传输可能出现问题,都可以使用校验和的思想;

2.2 TCP协议;

1)特点:

1.有连接;2.可靠传输;3.面向字节流;4.全双工;

2)可靠传输:

可靠传输,是TCP最核心的部分. TCP内部的很多机制,都是在保证可靠传输;

(1)概念:

传输了数据之后,对方收没收到,我心里清楚;

而不是说,发出去之后,对方100%能收到!!毕竟极端情况,网线断了.

(2)可靠性是如何保证的:

通过确认应答的操作;

举实例说明:

比如汤老师约女神去吃饭;

**当我收到这个应答的报文的时候,就知道了对方一定是收到了!! **

如果我没收到,估计是不是对方没看到,或者短信发丢了(十几年前经常见到的);

情况1:

** 但是在网络上存在后发先至的问题;**

** 所以说在后发先至的背景下,不能通过顺序;**

来判断当前应答报文是在应答哪个数据;

解决上述问题的方法,我们可以通过编号来解决;

总结:

TCP在解决可靠性传输的时候;核心机制是确认应答;

确认应答需要通过序号进行控制;需要通过序号来知道我们当前应答的报文是在应答哪一条;

总结

今天的内容就介绍到这里,我们下一节内容再见!!!!!


本文转载自: https://blog.csdn.net/qq_64861334/article/details/128603047
版权归原作者 未央.303 所有, 如有侵权,请联系我们删除。

“【JavaEE初阶】第七节.网络原理TCP/IP协议”的评论:

还没有评论