1.TCP协议的特点?
1、首先字节流传输是指传输数据时按照字节为单位发送数据,因为这种方式无需一次存储过大的数据占用太大内存,但是有一个缺点,可能会发生粘包和拆包的问题,这个问题可以通过设定标志位去解决,
2、其次是可靠传输这个特点
这点我认为可以将TCP拆分为很多层,每一层相互影响,最开始TCP通过停止等待协议,发送端发送一个数据包之后,接收端回复一个ack接收包,告知发送方自己已经收到数据包,但是其中存在两个问题。
第一个问题是加入数据包在传输控制中丢包,接收方方永远收不到数据,会导致发送方一直处于等待接收方的接收包状态,为了解决这个问题,TCP建立了超时重传来解决这一问题,当发送方自发送开始,规定一个时间,当时间到,如果没有接收到接收端的ack包,会RST重新发送一次数据包,
停止等待协议第二个问题就是,如果第一次发送的包没有丢失,只是因为网络延时,当规定时间到时,且网络恢复正常,这时接收方会同时接收到两个数据包,无法辨别。
这时TCP又提出了序号与确认号这一概念,指的是设置发送数据的第一个字节号,和接收方期待的下一份数据包的第一个字节编号,来标记每一个数据包属于重置还是新数据,其实这三种方式已经可以实现小数据的传输。
但是每次发送确认,导致效率较低,TCP又提出了一个连续ARQ协议,通过累计确认和选择确认方式提高传输效率,然而在传输过程中ARQ协议可能会遇到因为传输太快导致接收无法接收的问题,这时TCP,通过网洛TCP流量控制,来建立滑动窗口来解决此问题,发送方根据接收方的缓冲区大小,设置自己的可发送窗口大小,处于发送窗口的数据才能被发送,当窗口内的数据接收到确认回复时,整个窗口才会往前移动,直到完成所有的数据传输。
TCP小结
于 2022-05-05 23:03:37 首次发布