源端口号和目的端口号:各16位,最大端口号为2到16次方减去1,即65535。
序列号字段:32位,TCP为数据流的每个字节加一个数字,序列号字段的值是指数据包段中第一个字节的序列号。
确认序列号:32位,对方预期发送的报文段数据第一个字节的序号,表示该序列号之前报文段内的所有数据都已接收到,ACK标识符设置为1时有效。
报头长度:4 位,表示 TCP 报文的长度,以 4 字节计算,如果没有选项字段,则值为 5,表示报头 20 字节。
保留:6 位,保留使用,必须为 0。
窗口:16位,滑动窗口大小,以字节计算,最大位为65535字节。
验证字段:16位,用于数据验证的字段,在计算测试和时,TCP头和数据都会参与。
紧急指针:16 位,当 urg 标志设置为 1 时有效,表示需要紧急发送的数据,指示该消息段中有多少字节的紧急数据。
选项字段:最多 40 个字节。
启动器 SYN 设置为随机生成序列号 A
设置接收机SYN和ACK,随机生成序列号B,确认编号设置为A+1
设置发起方ACK,序列号为A+1,确认号为B+1
序号 SEQ 的值是对方发送的最后一个数据包段 ACK 的值。
确认号的值是对方发送的最后一个报文的序列号+有效载荷长度,表示所有序列号早于确认号的数据包都已收到。
win 字段的值表示缓冲区大小,即当前可以接收的最大字节数。
上次检索数据后,将释放相应的缓冲区。
发送方 FIN 和 ACK 已设置到位,并且请求已断开连接。
接收端接收到数据后,ACK设置位置进行回复,变为半连接状态。
在接收器没有要发送的数据后,FIN 和 ACK 将设置到位,并请求断开连接。
发送方 ACK 已设置并断开连接。
源端口号和目的端口号:各16位,最大端口号为2到16次方减去1,即65535。
长度:16 位,包括 UDP 标头长度和数据,最大长度为 65,535 字节。
验证总和:16位,用于数据验证,验证和计算涉及UDP头和数据。
TCP 是面向连接的,UDP 是无连接的。 TCP数据在传输之前,需要经过三次握手过程,当数据传输完成后,通过四次挥手释放连接。 TCP 报头具有 6 位控制位,其中 SYN、ACK 和 FIN 参与连接和释放过程。 另一方面,UDP 在没有连接的情况下发送数据包。
TCP 是可靠的,UDP 是不可靠的。 TCP在传输前建立连接,通过ACK确认接收到的数据包,如果未收到,则在发送方重新传输数据包。 但是UDP没有重传和响应机制,只想给对方发送报文,不管对方是否收到报文,也没有拥塞控制手段,以恒定的速度发送数据,并不关心网络拥塞。
TCP 用于字节流,UDP 用于数据包。 TCP是面向字节流的,不把消息一一考虑,它识别所有的字节流,不识别消息的边界,即消息边界不受保护,在这种情况下可能会出现粘性数据包的问题,而UDP是面向数据包的,一个接一个地发送消息, 所以没有粘性数据包的问题。
TCP是一对一的,UDP支持一对。
一、一对多、多对多。 这是因为 TCP 在通信前通过三向握手建立连接,而 UDP 具有单播、组播和广播功能。
TCP 开销大,UDP 开销小。 最小TCP报头为20字节,最大为60字节,UDP报头固定为8字节,因此UDP报头开销更小,传输效率更高。
TCP 和 UDP 有不同的应用场景。 TCP一般用于文件传输,UDP一般用于音频传输,这是由于对文件传输的可靠性要求较高,对传输速率的要求较高,即使有一些丢包,也不会影响整体使用效果。