http服务器二:TCP协议
Posted 张京墨
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了http服务器二:TCP协议相关的知识,希望对你有一定的参考价值。
一:网络的TCP/IP四层模型
Http服务器,工作在传输层和应用层。
Tcp:传输控制协议,解决可靠传输的问题,比udp稳定,丢包几率低。
普通的传输控制协议就像,古代A给B写信,寄出去后,A不知道B是否收到信(B给A回信前),也不知道信在传输的过程中有没有损坏等情况的发生。但是Tcp协议可以保证数据的可靠传输
数据可靠传输
TCP保证数据可靠传输的方式主要有以下六点:校验和、确认应答与序列号、超时重传、连接管理、流量控制、拥塞控制。
1、校验和
在数据传输的过程中,将发送的数据段都当做一个16位的整数。将这些整数加起来。并且前面的进位不能丢弃,补在后面,最后取反,得到校验和。发送方在发送数据之前计算校验和,并进行校验和的填充。接收方收到数据后,对数据以同样的方式进行计算,求出校验和,与发送方的进行比对。
简单理解:A给B发一箱货物,发之前清点获取总数,将数量写在纸条,放在箱子里,B收到后,清点货物总数与A留的纸条进行对比,就知道货物数量是否一致,简单的做到了数量比对。
注意:如果接收方比对校验和与发送方不一致,那么数据一定传输有误。但是如果接收方比对校验和与发送方一致,数据不一定传输成功。
2、确认应答与序列号
序列号:TCP传输时将每个字节的数据都进行了编号,这就是序列号。
确认应答:TCP传输的过程中,每次接收方收到数据后,都会对传输方进行确认应答。也就是发送ACK报文。这个ACK报文当中带有对应的确认序列号,告诉发送方,接收到了哪些数据,下一次的数据从哪里发。
序列号的作用不仅仅是应答的作用,有了序列号能够将接收到的数据根据序列号排序,并且去掉重复序列号的数据。这也是TCP传输可靠性的保证之一。
3、超时重传
简单理解就是发送方在发送完数据后等待一个时间,时间到达没有接受到ACK报文,那么对刚才发送的数据进行重新发送。由于TCP传输时保证能够在任何环境下都有一个高性能的通信,因此这个最大超时时间(也就是等待时间)是动态计算的。
4、连接管理
连接管理就是三次握手和四次挥手的过程,保证可靠的连接,是保证可靠性的前提。
5、流量控制
接收端在接收到数据后,对其进行处理。如果发送端的发送速度太快,导致接收端的结束缓冲区很快的填充满了。此时如果发送端仍旧发送数据,那么接下来发送的数据都会丢包,继而导致丢包的一系列连锁反应,超时重传。而TCP根据接收端对数据的处理能力,决定发送端的发送速度,这个机制就是流量控制。
6、拥塞控制
TCP通过维护一个拥塞窗口来进行拥塞控制。网络中没有出现拥塞,拥塞窗口的值就可以再增大一些,以便把更多的数据发送出去。网络出现拥塞,拥塞窗口的值就应该减小一些,以减少注入到网络中的数据包数。
简单理解:地铁,非下班高峰期,通道很宽,下班高峰期,通道收窄。
流量控制
服务器和普通计算机的网卡性能差异很大,普通计算机和服务器进行通信,因为有Tcp传输协议的存在,互相知道彼此的数据处理能力,调整发送速度。服务器会减缓数据的发送速度,保证普通计算机能够正常完整的接收数据,不至于让普通计算机崩溃。
拥塞控制
与流量控制不同的是,感知的是互联网的网络压力,而不是处理数据的压力,网络压力大,就控制传输速度,保证整个网络不会瘫痪。
二:TCP报文
TCP数据包的数据,包括给应用层的报文,也就是http请求传输的报文。
TCP协议是面向字节流的协议,因此图片,文字,音频,视频都必须转成字节进行传输。
三:应用场景
微信/QQ等app消息发送、浏览器与服务器的通信、其他可靠通信的场景
# TODO
以上是关于http服务器二:TCP协议的主要内容,如果未能解决你的问题,请参考以下文章