初夏小谈:传输层之UDP协议与TCP协议三次握手四次挥手
一.UDP协议:
1.UDP协议总体说明
1.其特点:无连接,不可靠,面向数据报。
2.UDP协议报头由源端口,目的端口,数据包长度,校验和组成。并且报头占8B。
4.查看UDP报头: vi /usr/include/netinet/udp.h
2.UDP的缓冲区:
1.UDP没有真正意义上的发送缓冲区,它调用sendto会直接交给内核,由内核将数据传给网络层协议进行接下来的传输操作。
2.UDP具有接收缓冲区,但是它不确保收到的UDP报的顺序和发送UDP报的顺序一致,如果接收缓冲区已满,再接收数据就会被丢弃。
3.UDP注意事项:
1.由于UDP的报头中,源端口,目的端口,数据包长度,校验和各占16为即2个字节,所以是8个字节。由于数据长度最大
2^16,所以数据长度64KB再减去报头8个字节,为实际传输数据字节。
2.如果用户sendto发送的数据长度大于64k-8,就会报错。因为udp在传输层不会自动进行数据分段。
3.如果需要传输的数据大于64K-8,就需要在应用层手动的分包,多次发送,并在接收端手动拼装。
4.基于UDP协议的应用层协议:
1.NFS:网络文件系统。
2.TFTP:简单文件传输协议。
3.DHCP:动态主机分配协议(动态IP地址分配)
当IP地址全0仅用于服务端可以接收所有IP的请求。IP全1时,是广播地址。通过广播地址来确认给谁分配IP地址。
4.BOOTP:启动协议
5.DNS:域名解析协议。
5.UDP协议内部实现了广播功能--》UDP广播。
二.TCP协议:
1.TCP协议特点:面向连接,可靠传输,面向字节流。
2.图解TCP三次握手四次挥手:
标志位说明:
SYN: 请求建⽴连接; 我们把携带SYN标识的称为同步报⽂段
ACK: 确认号是否有效
FIN: 通知对⽅, 本端要关闭了, 我们称携带FIN标识的为结束报⽂段
珍&源码