目录
一、UDP协议
UDP是一个简单的面向消息的传输层协议。由于它的协议格式非常简单,所以功能也很有限,它有三个特点,无连接、不可靠、面向数据报。
- 无连接:只要直到目的端口和IP地址就可以直接进行传输,不需要进行连接。
- 不可靠:这里的可靠和安全没有关系,而是指发送方能不能直到数据发送成功,因为UDP协议没有确认应答和超时重传机制,所以它不知道数据传送成功还是失败了
- 面向数据报:数据报是一种数据传输的基本单位,一般相当于若干个字节;一个数据报最大只能到64K,意思应用层交给UDP多长的报文,UDP就会原样传送,既不会拆分也不会组装。如果发送端调用sendto传输100字节,接收端就会调用recvfrom函数一次性接收这100个字节,而不能调用十次recvfrom函数每次接收10个字节,因为UDP协议没有发送缓冲区,它发送数据会直接交给操作系统内核处理。
1、UDP协议格式
- 端口号:用来标志一个主机上的进程,理论上有2^16个端口可选择,因为它的长度是16个bit位。
- 长度:包含一个头部和数据部,因为头部的长度是固定的,所以根据长度就可以计算出数据部的长度。
- 校验和:这里的校验只是简单统计数据的个数,简单的说,就是如果其中内容被篡改了,接收方是感应不到的。
2、UDP的优点和适用场景
虽然UDP协议很简单,没有一些确保可靠性的机制,比如确认应答,超时重传等,但就是因为这样,所以它的传输速度非常快,而且由于UDP是无状态的,所以它还可以支持广播模式。
UDP一般适用于对效率要求较高,对可靠性要求不高的场景,比如视频会议,这就要求延迟很小,发送方说一句话接收方能够立刻给出应答,虽然由于UDP是不可靠的传输,可能发生一些丢包的现象,但是我们可以在应用层对丢包做出一些应对,在网络非常通畅的情况下,丢包的概率是很小的,而且就算丢包了,重新传输数据也只会让视频质量有所下降,而不会出现较大的延迟。
3、基于UDP的应用层协议
- NFS: 网络文件系统
- TFTP: 简单文件传输协议
- DHCP: 动态主机配置协议
- BOOTP: 启动协议(用于无盘设备启动)
- DNS: 域名解析协议
二、TCP协议
TCP协议是一种面向连接的端到端的可靠的传输层协议,提供可靠字节流和对对上层协议提供连接服务。TCP协议建立在IP协议的基础之上,可以根据IP协议提供的服务传输大小不定的数据段。IP协议负责数据的分段、重组及在多种网络和互联的网关间传输数据报。它有三个特点有链接、可靠、面向字节流。
- 有连接:TCP是通过建立连接来完成数据传输的,建立连接的过程称为三次握手。
- 字节流:流传输数据的基本单位是字节,相比数据报来说,使用更加的灵活。
1、TCP协议格式
- 序列号和应答号:TCP协议使用序列号和应答号来保证其传输的可靠性,TCP协议是面向字节流的,每个字节都有一个序列号,一个数据段的第一个字节的序列号将随同数据段被发送,并且作为这个数据段的序列号。数据段同时还带有一个应答序号,表明它期望对方下次发送的字节的顺序号。
- 首部长度:这里的长度单位是4个字节&