TCP和UDP的一些概念

OSI七层模型

TCP和UDP的一些概念
HTTP位于应用层,TCP和UDP位于传输层,IP位于网络层。

TCP和UDP的区别

TCP和UDP的一些概念

面向报文流

面向报文的传输方式是指应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。因此,应用程序必须选择合适大小的报文。若报文太长,则IP需要分片,降低效率,若太短,会使IP太小。UDP对应应用层交下来的报文,即不合并,也不拆分,而是保留这些报文的边界。

面向字节流

面向字节流,虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序看成是一连串的无结构的字节流。TCP有一个缓冲,当应用程序传送的数据块太长,TCP就可以把它划分短一些再传送。如果应用程序一次只发送一个字节,TCP也可以等待积累有足够多的字节后再构成报文段发送出去。

流量控制

流量控制:防止发送方发的太快,耗尽接收方的资源,从而使接收方来不及处理。
流量控制的一些知识点:
1、接收端抑制发送端的依据:接收端缓冲区的大小
2、流量控制的目标是接收端,是怕接收端来不及处理
3、流量控制的机制是丢包

滑动窗口

使用滑动窗口实现流量控制:滑动窗口是用来告诉发送端可以发送数据的大小或者说是窗口标记了接收端缓冲区的大小。

窗口是指一次批量的发送多少数据。在确认应答策略中,对每一个发送的数据段,都要给一个ACK确认应答,收到ACK后再发送下一个数据段,这样会导致性能较差,尤其时数据往返时间长的时候。使用滑动窗口,就可以一次发送多条数据,从而提高性能。

1、接收端将自己可以接受的缓冲区大小放入TCP首部中的“窗口大小”字段,通过ACK来通知发送端(在TCP的首部中,有一个16位的窗口字段,用来存放窗口大小信息)
2、窗口大小字段越大,说明网络的吞吐率越高
3、窗口大小指的时无需等待确认应答而可以继续发送数据的最大值,即就是说不需要接收端的应答,可以一次连续发送的数据
4、操作系统为了维护滑动窗口,需要开辟发送缓冲区,来记录当前还有哪些数据没有应答,只有确认应答过的数据,才能从缓冲区删掉
5、接收端一旦发现自己的缓冲区快满了,就会将窗口大小设置成一个更小的值通知给发送端,发送端收到这个值后,就会减慢自己的发送速度
6、如果接收端发现自己的缓冲区满了,就会将窗口的大小设置为0,此时发送端将不再发送数据,但是需要定期发送一个窗口探测数据段,使接收端把窗口大小告诉发送端

拥塞控制

拥塞控制:防止发送方发的太快,使网络来不及而处理,从而导致网络拥塞。
拥塞控制使用的机制:慢启动、加法增加、乘法减少
加法增加是指执行拥塞避免算法后,在收到对所有报文段的确认后(即一个往返时间),就把拥塞窗口缓慢增大,以防止网络过早出现拥塞。
乘法减少是指出现一次超时(即一次网络拥塞),就把慢开始门限值设置为当前的拥塞窗口值乘0.5