提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
今天我们将学习有关计网中应用层和传输层的有关内容;包括应用层的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在解决可靠性传输的时候;核心机制是确认应答;
确认应答需要通过序号进行控制;需要通过序号来知道我们当前应答的报文是在应答哪一条;
总结
今天的内容就介绍到这里,我们下一节内容再见!!!!!
版权归原作者 未央.303 所有, 如有侵权,请联系我们删除。