UDP 协议
UDP的特点
传输层协议
无连接:知道对端的IP地址和端口号就直接进行传输,不需要建立连接;
不可靠传输:没有确认机制,没有重传机制,如果因为网络故障该段无法发送到对方,UDP协议层不会给应用层返回任何消息提示
面向数据报不能灵活控制读写数据的次数和数量
面向数据报
应用层交给UDP多长报文,UDP原样发送,既不拆分,也不合并
例如用UDP发送100字节数据:
如果发送端调用一次sendto ,发送100字节,接收端必须调用对应的一次recvfrom,接受100字节,而不能循环调用十次recvfrom,每次接受10字节
UDP缓冲区
UDP没有正真意义大的发送缓冲区,调用sendto会直接交给内核,由内核将数据传给网络层协议进行后续传输动作
UDP具有接受缓冲区,但接受缓冲区不能保证收到的UDP报的顺序和发送的报文的舒徐一直致,如果缓冲区满了,再到达的UDP数据报会被丢弃
UDP的socket既能读,也能写,全双工
注意事项:UDP首部中有一个16位的最大长度,也就是说UDP传输的最大数据是64k(包含UDP首部)如果传输的数据大于64k就需要在应用层进行首东分包,多次发送斌在接收端手动拼装
TCP协议
传输层协议
有连接
可靠传输
面向字节流
TCP协议段格式<