这是我参与8月更文挑战的第6天,活动详情查看:8月更文挑战
从上一篇的实战中,我们成功搭建一个Netty Http Server服务器,并通过接口调用成功,那么今天我们来具体聊聊Netty支持的协议吧!
HTTP协议
HTTP协议的请求包如下
主要包含3部分:请求行(line),响应头(header),响应正文(body)
line
- 请求方法(Method)
- 请求的url(URL)
- 协议的版本(Version)
- ..
header
header格式为(name :value),用于客户端请求的描述信息。 请求头header一般用来存放一些cookie,token信息; 具体可以看看# HTTP Header 详解
body
主要反馈数据,具体反馈什么数据根据请求来决定,比如用户的接口就反馈用户信息,一般反馈的数据格式为json格式
UDP
什么是UDP?
UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议 UDP协议与TCP协议一样用于处理数据包,在OSI模型中,两者都位于传输层,处于IP协议的上一层 UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的 UDP用来支持那些需要在计算机之间传输数据的网络应用
UDP的应用需要考虑几点:
性能上:
- 对当前网络通讯质量要求不高 UDP没有TCP的那些可靠机制,在网络质量不好的时候容易发生丢包,哪个包丢了也不会有反馈信息,所以存在不稳定、不可靠的缺点
- 要求通讯网络速度快 UDP是一个无状态的传输机制,不像TCP那样,需要握手,确认窗口,重传,拥塞机制等操作,所以在传输数据时非常快
业务上:
数据包少,并且有自己定义的轮询等方式来进行校验时
- 业务只需要发一两个包并且对丢包有一定的容忍度
- 业务自己有简单的轮询或重复机制
- 实时性要求很高,并且业务上几乎不能容忍重传 应用场景: 音频视频的通信 多人连线游戏中的动作,位置等