7.29笔记(TCP和UDP)

TCP和UDP协议

  • TCP:即传输控制协议,是一种面向连接的,可靠的,基于字节流的传输层的通信协议

  • UDP:即用户数据报协议,是一种面向报文的传输层的协议

    OSI七层模型与TCP/IP五层模型:

    1. 应用层:为计算机用户提供接口和各种网络服务
    2. 表示层:提供对应用层的数据的编码和转换
    3. 会话层:负责管理各层之间的会话
    4. 传输层:为上层协议提供可靠透明的数据传输的服务
    5. 网络层:负责把地址传送给目标传输层
    6. 数据链路层:把比特组合成字节,再把字节组合成帧,使用数据链路层来访问介质
    7. 物理层:通过物理介质传输比特流

TCP和UDP的区别:

  1. TCP是面向连接的;UDP是面向无连接的,即传输前不需要建立连接

  2. TCP提供的是可靠的服务,TCP可以达到不重复,不乱序,不丢失,不重复的传输效果;UDP会尽最大努力交付,不能保证可靠交付

  3. TCP是面向字节流;UDP是面向报文的,UDP没有拥塞控制

  4. TCP的首部开销20个字节;UDP首部开销小,占了8个字节

  5. TCP需要三次握手;UDP则不需要,所以说UDP的实时性要比TCP要强,因为UDP不需要握手,因此就不易受到攻击,安全性要比TCP要好。

  6. 由于用户在传输文件时追求的是准确可靠的传输,所以TCP适用于文件传输等准确传输;

    在视频通话或者语音通话时,用户不会太在意准确性,更多的追求的时实时性,减少网络不佳所带来的不利影响,因此UDP大多适用于视频通话等音频传输

三次握手和四次握手

  • 三次握手:TCP进行建立连接

    过程:

    1. 第一次握手:客户端给服务端发送一个SYN,服务端就知道了客户端有发送能力,服务端的接受能力也正常。
    2. 第二次握手:服务端收到了SYN后,会回复SYN+ACK给客户端,客户端就知道了服务端的接收能力和发送能力正常。
    3. 第三次握手:客户端收到SYN+ACK后,会回应一个ACK报文给服务端端。服务端就知道了客户端的接收能力正常。之后建立连接

    作用:

    1. 确认双方的接受和发送能力
    2. 指定初始化的序列号,为可靠性传输做准备
  • 四次握手:TCP断开连接、

    1. 客户端向服务端发送断开连接的请求,并进入等待状态
    2. 服务端回复客户端收到断开连接的请求,并进入等待关闭状态
    3. 隔了一段时间后,服务端向客户端发送请求,表示可以断开连接,保持等待关闭状态
    4. 客户端回复服务端收到了确认的请求,然后客户端经过两个报文寿命后,客户端CLOSE;当服务端收到了客户端的确认之后立即进入CLOSE。

TCP的粘包和拆包

TCP是流的形式进行数据传输,传输的最小单位是一个报文段

粘包:

客户端发出的两个数据包首尾相连了,服务端就不知道两个数据包都是在哪开始在哪结束的了。

拆包:

就是把一条完整的消息拆分成两个数据包,服务器无法处理这种逻辑

产生粘包和拆包的原因:

TCP是以流的方式进行数据传输,传输的最小单位是一个报文段,连接层每此传输都有一个最大限制(1500比特),如果超过这个最大限制就会发生拆包的现象。

TCP为了提高性能,会把要发送的数据先发送到缓冲区,等待缓冲区满了,才一起发送,所以当写入程序大于这个缓冲区的大小,也会发生拆包。反之,如果写入程序小于这个缓冲区,就会发生粘的现象

解决方案:

  • 使用带消息头的协议,头部存储存储开始的标志和消息的长度。在解析的时候就从这个头部开始向后读取该长度的内容即可
  • 设置定长消息,服务端每次读取定长内容都作为一个完整消息
  • 设置消息边界,即从网络流中分离出消息内容

TCP的拥塞控制机制

  1. 拥塞的概念:

    在某一时刻,对网络资源的需求量大于可用资源时,网络的性能就会变坏,整个网络的吞吐量随之负荷增大而下降

  2. 拥塞控制:

    就是防止过多的数据注入到网络中,这样可以使网络的路由器或者链路不过载。拥塞控制使一种全局的控制,涉及到主机。路由器,以及影响网络传输性能的所有因素。

  3. 流量控制:

    是点对点通信流量控制,主要就是抑制发送端发送数据的速率,一边接收端来得及接收

  4. 拥塞控制的代价:

    首先要获取网络内部流量的信息,还要选择控制的策略的实施控制。这就产生了额外的开销。拥塞控制还需要将一些资源分配给各个用户单独使用,使网络资源不能更好的实现共享。

    拥塞控制的机制:

    • 慢开始

      在发送方设置一个拥塞窗口,而这个拥塞窗口的大小取决于网阔的拥塞程度。

      当主机开始发送数据时,如果立刻把所有的数据全都注入到网络,那么就很可能发生拥塞。所以要先探测一下具体的网络情况,然后在再对这个拥塞窗口进行逐步调整(以2倍的形式进行扩容)。

    • 拥塞避免

      就是缓慢的让拥塞窗口增大,就是每经过一个往返时间就会把拥塞窗口加一而不是加倍。所以再拥塞避免算法中,拥塞窗口是以线性规律缓慢增长。

    • 快重传

      就是当收到了三个重复的ACK时,就会判定下一个报文已经丢失,然后就进入快传阶段

    • 快恢复

      快重传之后就是快恢复状态,就是把慢启动的与之修改到原理啊的一半

posted @ 2021-07-29 15:05  今天不摸鱼  阅读(203)  评论(0)    收藏  举报