Open Lawguancong opened 3 years ago
https://blog.csdn.net/sinat_21455985/article/details/53508115 https://juejin.cn/post/6844903510119546887
https://www.cnblogs.com/azraelly/archive/2012/12/25/2832393.html
序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。
确认序号:Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1。
标志位:共6个,即URG、ACK、PSH、RST、SYN、FIN等,具体含义如下:
seq: Sequence number(顺序号码)
ack: Acknowledge number(确认号码)
标志位:
相当于发信息,不需要对方同意就可以发,也不知道对方看了短信没有。
相当于打电话,需要对方同意了接听电话,可靠,知道对方接了电话
https://mp.weixin.qq.com/s/25atTs4b-vORIx525ur_aw 在http早期,每个http请求都要求打开一个tcp socket连接,并且使用一次之后就断开这个tcp连接。 使用keep-alive可以改善这种状态,即在一次TCP连接中可以持续发送多份数据而不会断开连接。通过使用keep-alive机制,可以减少tcp连接建立次数,也意味着可以减少TIME_WAIT状态连接,以此提高性能和提高httpd服务器的吞吐率(更少的tcp连接意味着更少的系统内核调用,socket的accept()和close()调用)。 但是,keep-alive并不是免费的午餐,长时间的tcp连接容易导致系统资源无效占用。配置不当的keep-alive,有时比重复利用连接带来的损失还更大。所以,正确地设置keep-alive timeout时间非常重要。
HTTP 的 Keep-Alive 也叫 HTTP 长连接,该功能是由「应用程序」实现的,可以使得用同一个 TCP 连接来发送和接收多个 HTTP 请求/应答,减少了 HTTP 短连接带来的多次 TCP 连接建立和释放的开销。
TCP 的 Keepalive 也叫 TCP 保活机制,该功能是由「内核」实现的,当客户端和服务端长达一定时间没有进行数据交互时,内核为了确保该连接是否还有效,就会发送探测报文,来检测对方是否还在线,然后来决定是否要关闭该连接。
参考链接 https://juejin.cn/book/6844733788681928712/section/6844733788795174920 https://packetlife.net/blog/2010/jun/7/understanding-tcp-sequence-acknowledgment-numbers/
tcp传输全过程(三次握手、请求、数据传输、四次挥手)
https://blog.csdn.net/sinat_21455985/article/details/53508115 https://juejin.cn/post/6844903510119546887
重要字段 状态
https://www.cnblogs.com/azraelly/archive/2012/12/25/2832393.html
序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。
确认序号:Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1。
标志位:共6个,即URG、ACK、PSH、RST、SYN、FIN等,具体含义如下:
seq: Sequence number(顺序号码)
ack: Acknowledge number(确认号码)
标志位:
总结
TCP UPD 区别
UDP
相当于发信息,不需要对方同意就可以发,也不知道对方看了短信没有。
TCP
相当于打电话,需要对方同意了接听电话,可靠,知道对方接了电话
区别
TCP 的 Keepalive 和 HTTP 的 Keep-Alive
https://mp.weixin.qq.com/s/25atTs4b-vORIx525ur_aw 在http早期,每个http请求都要求打开一个tcp socket连接,并且使用一次之后就断开这个tcp连接。 使用keep-alive可以改善这种状态,即在一次TCP连接中可以持续发送多份数据而不会断开连接。通过使用keep-alive机制,可以减少tcp连接建立次数,也意味着可以减少TIME_WAIT状态连接,以此提高性能和提高httpd服务器的吞吐率(更少的tcp连接意味着更少的系统内核调用,socket的accept()和close()调用)。 但是,keep-alive并不是免费的午餐,长时间的tcp连接容易导致系统资源无效占用。配置不当的keep-alive,有时比重复利用连接带来的损失还更大。所以,正确地设置keep-alive timeout时间非常重要。
HTTP 的 Keep-Alive 也叫 HTTP 长连接,该功能是由「应用程序」实现的,可以使得用同一个 TCP 连接来发送和接收多个 HTTP 请求/应答,减少了 HTTP 短连接带来的多次 TCP 连接建立和释放的开销。
TCP 的 Keepalive 也叫 TCP 保活机制,该功能是由「内核」实现的,当客户端和服务端长达一定时间没有进行数据交互时,内核为了确保该连接是否还有效,就会发送探测报文,来检测对方是否还在线,然后来决定是否要关闭该连接。
参考链接 https://juejin.cn/book/6844733788681928712/section/6844733788795174920 https://packetlife.net/blog/2010/jun/7/understanding-tcp-sequence-acknowledgment-numbers/