TCP总结

TCP总结

TCP服务端和客户端建立起可靠连接进行传输数据,三次握手建立起连接,四次挥手释放链接,期间通过流量控制来处理传输速度,拥塞控制来处理传输拥堵等
TCP的可靠性主要体现在 确认应答超时重传流量控制拥塞控制,以及乱序处理

长连接:

TCP长连接,即通过三次握手,正常传输数据,等待客户端完成数据传输,且无数据需要传送是手动关闭连接,即完成一次连接

短连接:

TCP短连接,即三次握手建立连接,传输数据,四次回收自动释放连接,这个过程都是一次请求,不需要用户手动释放,即HTTP请求就是基于TCP的短连接

心跳检测:

如果TCP建立连接后,中途异常情况,连接异常中断,这个时候服务端和客户端是无法检测到这个情况,所以引入心跳机制,服务端每隔固定时间给客户端发送简易无数据的心跳包,客户端收到心跳包后给服务端回一个确认数据,如果服务端发送心跳包,在某时间端内没有收到客户端回复,即认为连接已中断,即可回收该连接

流量控制:

当客户端与服务端通信过程中,数据传输速率过快,服务端接收来不及,导致丢失数据,解决办法就是通过TCP的滑动窗口,通过接收端的滑动窗口接收大小来控制每次发送端发送的数据大小。

滑动窗口:见图中窗口部分

当发送端和接收端建立起连接后,接收端会通过数据头告知发送端能接收的最大字节数,以及告知发送端下一次请求的数据应该从第几个字节开始,如果超过接收端的范围,接收端仍会发送之前的确认号,告知发送端应该发送的号,发送端重新计算后进行发送

拥塞控制:

确认应答:

TCP实现可靠性主要通过确认应答机制,当发送方发送数据给接收方,接收方确认收到数据后会给发送方回一个确认的空数据包,确认数据已收到

超时重传:

当发送方给接收方发送数据包时,即计数器就开始记录发送时间,如果到时间未收到接收方发来的确认信息,就重新发送该数据包,直到收到接收方发来的确认信息。

重复丢弃:

如果接收方收到许多超时数据包时,这时候接收方会对首部进行校验,通过每个数据包头的序号来判断是否是重复包,然后丢弃

乱序处理:

如果因为超时重传造成一些数据包乱序,这种情况接收方会对首部进行校验,通过数据包头的序号对数据包进行排序

吞吐量计算:

T=W/RTT 即W为窗口大小(单位 比特),RTT往返时间(单位 秒)

带宽和吞吐量的区别:

带宽:单位时间内所能传输的比特数 Mbps
吞吐量:单位时间内成功传输的比特数Mbps,吞吐量会受多方面影响,所以用于实际测试性能

avatar