官方网站营销,石家庄市工程建设造价管理站网站,东莞哪种网站推广好,中标公告 网站建设#x1f397;️ 主页#xff1a;小夜时雨 #x1f397;️ 专栏#xff1a;javaEE初阶 #x1f397;️ 乾坤未定#xff0c;你我皆黑马 目录 一、应用层协议二、传输层协议#xff08;UDP协议#xff09; 一、应用层协议
应用层是和代码直接相关的一层#xff0c;决定… ️ 主页小夜时雨 ️ 专栏javaEE初阶 ️ 乾坤未定你我皆黑马 目录 一、应用层协议二、传输层协议UDP协议 一、应用层协议
应用层是和代码直接相关的一层决定了数据要传输什么怎么去使用这些数据等问题。 应用层这里虽然存在一些现有的协议(比如HTTP)但是也有很多的情况需要我们去自定义一些协议这里的自定协议就是约定应层数据报的数据格式。
如何约定格式
确定要传输哪些信息。根据需求
比如一个外卖程序我们需要传输以下的信息。
请求 用户id 用户的位置等响应 若干个商家信息 每个商家信息商家的名字 图片 评分 类型等 2. 确定数据按照什么样的格式来组织的 一个简单的方案就是按照分隔符进行组织数据如下图 在实际的开发中还有一些现成的格式是可以直接使用的
xml格式
这种格式主要是通过标签的形式来组织数据具体如下图 其中 html 可以看作是 xml 的特殊情况
json 格式
json 是使用 {} 来作为标识的
二、传输层协议UDP协议
学习协议的一个重要环节认识 协议的报文格式
UDP的报文格式
UDP的特点
无连接 知道对端的 ip 和 端口号就可以进行通信不需要建立连接不可靠 没有任何的安全机制即是 发送端发送数据报之后如果因为某些原因接收端没有收到来自发送端的数据UDP协议层也不会给发送端返回任何的错误提示信息面向数据报 应用层交给UDP多长的报文UDP原样发送既不会拆分也不会合并全双工 UDP只有接收缓冲区没有发送缓存区 UDP没有真正意义上的 发送缓冲区。发送的数据会直接交给内核由内核将数据传给网络层协议 进行后续的传输动作 UDP具有接收缓冲区但是这个接收缓冲区不能保证收到的UDP报的顺序和发送UDP报的顺序一致如果缓冲区满了再到达的UDP数据就会被丢弃 UDP的 socket 既能读也能写这个概念叫做全双工
源端口和目的端口 两者描述了数据从哪里来以及到哪里去ip 地址用来区分是哪一个主机一个主机上有多个应用程序运用端口号来区分出具体的程序。 报文长度 表示了 UDP 数据报的长度2个字节能表示的最大长度是65535即是64KB所以传输一个UDP 数据报的最大长度就是64KB 若是传输比较大的数据怎么解决 将数据拆分成多个部分使用多个 UDP 数据报进行传输类似于多次搬东西但是比较复杂直接使用 TCP 协议TCP对数据长度没有限制 校验和 意义 用来判断当前传输的数据是否发生错误 校验和往往就是去内容或者是内容的一部分通过一些算法或者数学公式进行一些变换得到一个数值。 如果内容发生了改变则校验和也就会发生了变化也就可以感知到传输出错 扩展问题
经典面试题
UDP本身是无连接不可靠面向数据报的协议如果要基于传输层UDP协议来实现一个可靠传输应该如何设计UDP大小是受限的如果要基于传输层UDP协议传输超过64K的数据应该如何设计 以上两个问题答案类似都可以参考TCP的可靠性机制在应用层实现类似的逻辑 例如 引入序列号保证数据顺序 引入确认应答确保对端收到了数据 引入超时重传如果隔一段时间没有应答就重发数据 … ️️️ 好啦到这里有关 应用层协议与传输层协议 (UDP) 的分享就没了如果感觉做的还不错的话可以点个赞关注一下你的支持就是我继续下去的动力蟹蟹大家了我们下期分享传输层协议 (TCP)拜拜~ ☆*: .. o(≧▽≦)o ..:*☆