UDP 和 TCP 的特点(区别)
-
用户数据报协议 UDP(User Datagram Protocol)是==无连接==的,==尽最大可能交付==,==没有拥塞控制==,==面向报文==(对于应用程序传下来的报文不合并也不拆分,只是添加 UDP 首部),==支持一对一、一对多、多对一和多对多的交互通信==。
-
传输控制协议 TCP(Transmission Control Protocol)是==面向连接==的,==提供可靠交付==,==有流量控制,拥塞控制,提供全双工通信,面向字节流==(把应用层传下来的报文看成字节流,把字节流组织成大小不等的数据块),每一条 TCP 连接==只能是点对点的==(一对一)。
UDP 首部格式
首部字段只有 8 个字节,包括源端口、目的端口、长度、检验和。12 字节的伪首部是为了计算检验和临时添加的。
TCP 首部格式
序号 :用于对字节流进行编号,例如序号为 301,表示第一个字节的编号为 301,如果携带的数据长度为 100 字节,那么下一个报文段的序号应为 401。
确认号 :期望收到的下一个报文段的序号。例如 B 正确收到 A 发送来的一个报文段,序号为 501,携带的数据长度为 200 字节,因此 B 期望下一个报文段的序号为 701,B 发送给 A 的确认报文段中确认号就为 701。
数据偏移 :指的是数据部分距离报文段起始处的偏移量,实际上指的是首部的长度。
确认 ACK :当 ACK=1 时确认号字段有效,否则无效。TCP 规定,在连接建立后所有传送的报文段都必须把 ACK 置 1。
同步 SYN :在连接建立时用来同步序号。当 SYN=1,ACK=0 时表示这是一个连接请求报文段。若对方同意建立连接,则响应报文中 SYN=