一直不太明白TCP连接怎么回事,为什么说TCP连接会消耗系统资源,最近看了一些文章才建立起一个模型。
所谓TCP链接是一个虚拟链接,连接两端机器各自记录了对方的IP地址、端口号、当前字节序号以及连接状态。并且,为了维护连接状态,两端机器还要创建计时器以应对超时响应的问题。这些都要消耗内存、CPU资源。
以TCP连接建立过程的三次握手为例。客户端先向服务端发送连接请求报文,服务端回复确认报文,客户端再次发送连接建立报文。这三次报文发送在操作系统层面具体发生了什么还不清楚,但可以肯定的是一定有内存、CPU的消耗,中断设置和触发。连接建立后客户端和服务端都要建立对应的数据结构保存对方信息,并定时检查连接状态。
再想想连接关闭过程的四次挥手。A先向B发关闭请求,B确认收到关闭请求,A进入等待状态,B传完数据后发送被动关闭信息,A发送被动关闭确认,为防止B没收到确认A等一段时间后才真正销毁连接信息。
网友评论