美文网首页
HTTP,UDP,TCP协议

HTTP,UDP,TCP协议

作者: zhouluyao | 来源:发表于2020-03-31 17:52 被阅读0次

HTTP协议:

HTTP2.0 相比 HTTP 1.1做的优化:

HTTP 1.1 在应用层以纯文本的形式进行通信。每次通信都要带完整的 HTTP 的头,为了解决这些问题,HTTP 2.0 会对 HTTP 的头进行一定的压缩,将原来每次都要携带的大量 key value 在两端建立一个索引表,对相同的头只发送索引表中的索引。

QUIC解决TCP按序到达等待问题:

基于序列号的TCP:

当其中一个数据包遇到问题,TCP 连接需要等待这个包完成重传之后才能继续进行。TCP 的流量控制是通过滑动窗口协议。TCP 的 ACK 机制是基于序列号的累计应答,一旦 ACK 了一个系列号,就说明前面的都到了,所以只要前面的没到,后面的到了也不能 ACK,就会导致后面的到了,也有可能超时重传,浪费带宽。

对每一个发送了,但是没有 ACK 的包,都有设一个定时器,超过了一定的时间,就重新尝试。TCP 的策略是超时间隔加倍。每当遇到一次超时重传的时候,都会将下一次超时时间间隔设为先前值的两倍。两次超时,就说明网络环境差,不宜频繁反复发送。

基于offset的UDP:

1.QUIC重新定义了重传机制,使用序列号+偏移量的方式,发送的数据在这个数据流里面有个偏移量 offset,可以通过 offset 查看数据发送到了哪里,这样只要这个 offset 的包没有来,就要重发;如果来了,按照 offset 拼接,还是能够拼成一个流。

2.QUIC 的 ACK 是基于 offset 的,每个 offset 的包来了,进了缓存,就可以应答,应答后就不会重发,中间的空挡会等待到来或者重发即可,而窗口的起始位置为当前收到的最大 offset,从这个 offset 到当前的 stream 所能容纳的最大缓存,是真正的窗口大小。

HTTPS 是综合了对称加密和非对称加密算法的 HTTP 协议。既保证传输安全,也保证传输效率。

1.客户端从服务器网站请求一个证书去CA去进行验证,验证通过后获得公钥.

2.客户端生成一个随机数,通过服务器的公钥进行加密,发送给服务器

3.服务器通过客户端生成的随机数进行加密消息,进行对称加密的沟通

UDP协议:

UDP特点:

TCP 是面向连接的,UDP 是面向无连接的。所谓的建立连接,是为了在客户端和服务端维护连接,而建立一定的数据结构来维护双方交互的状态,用这样的数据结构来保证所谓的面向连接的特性。

通过 TCP 连接传输的数据,无差错、不丢失、不重复、并且按序到达,而 UDP 继承了 IP 包的特性,不保证不丢失,不保证按顺序到达。TCP 是可以有拥塞控制的。它意识到包丢弃了或者网络的环境不好了,就会根据情况调整自己的行为,看看是不是发快了,要不要发慢点。UDP 就不会,应用让我发就发。

使用场景:

1.需要资源少,在网络情况比较好的内网,或者对于丢包不敏感的应用。

2.不需要一对一沟通,建立连接,而是可以广播的应用。

3.需要处理速度快,时延低,可以容忍少数丢包,但是要求即便网络拥塞,也毫不退缩,一往无前的时候。

TCP协议:

三次握手除了双方建立连接外,主要还是为了沟通一件事情,就是 TCP 包的序号的问题。

快速重传算法:

接收方发现 6 收到了,8 也收到了,但是 7 还没来,那肯定是丢了,于是发送 6 的 ACK,要求下一个是 7。接下来,收到后续的包,仍然发送 6 的 ACK,要求下一个是 7。当客户端收到 3 个重复 ACK,就会发现 7 的确丢了,不等超时,马上重发。当接收端发现丢了一个中间包的时候,发送三次前一个包的 ACK,于是发送端就会快速的重传,不必等待超时再重传。

发送端滑动窗口的大小指的是:发送未确认+未发送可发送
滑动窗口.jpg

1.这个新的窗口 8 通过 6 的确认消息到达发送端的时候,你会发现窗口没有平行右移,而是仅仅左面的边右移了,窗口的大小从 9 改成了 8。如果接收端还是一直不处理数据,则随着确认的包越来越多,窗口越来越小,直到为 0。

2.发送端窗口左侧要不要右移取决于确认消息到达发送端.

3.发送端窗口右侧要不要右移取决于接收端是否处理数据.

快速重传机制:

接收方发现 6 收到了,8 也收到了,但是 7 还没来,那肯定是丢了,于是发送 6 的 ACK,要求下一个是 7。接下来,收到后续的包,仍然发送 6 的 ACK,要求下一个是 7。当客户端收到 3 个重复 ACK,就会发现 7 的确丢了,不等超时,马上重发。

接收端的窗口大小:等待接收未确认区间
tcp_窗口_receive.jpg

1.如果接收端还是一直不处理数据,则随着确认的包越来越多,窗口越来越小,直到为 0。

2.接收缓冲要不要右移,取决接收已确认的读取速度。

窗口为缓冲区大小的一半时再通知发送端发送数据

当接收方比较慢的时候,要防止低能窗口综合征,别空出一个字节来就赶快告诉发送方,然后马上又填满了,可以当窗口太小的时候,不更新窗口,直到达到一定大小,或者缓冲区一半为空,才更新窗口。

相关文章

  • TCP、UDP、Socket、HTTP你不知道的故事

    什么是 TCP / UDP TCP / UDP / HTTP 是 TCP / IP 协议族中众多的子协议中的一员。...

  • 网络编程面试题总结

    网络编程知识→ tcp、udp、http、https 等常用协议tcp协议:传输控制协议(TCP,Transmis...

  • 有状态协议、无状态协议2020-05-30

    无状态协议:HTTP、UDP有状态协议:TCP、FTP

  • 计算机网络02 - 传输层

    目录 TCP协议和UDP协议TCP首部TCP连接管理UDP首部 1. TCP协议和UDP协议 TCP协议:面向连接...

  • 【网络通信】

    网络通信(TCP/UDP HTTP协议 TCP为什么安全) HTTP协议简介 http协议 定义了浏览器向服务器如...

  • 前端系统班 - 07. Node.js Server

    网络与 IP TCP 与 UDP HTTP 协议的底层是由 TCP/IP 协议构建的。 TCP(Transmiss...

  • TCP/IP

    TCP/IP协议族 TCP/IP协议族包含:TCP、UDP、IP、FTP、HTTP、SMTP、ICMP OSI七层...

  • TCP和UDP的区别

    TCP和UDP的区别: TCP协议和UDP协议特性区别总结: TCP协议可靠;UDP协议不可靠 TCP协议是面向连...

  • 网络协议学习

    Http、TCP、UDP 、Socket 简述 HTTP协议:简单对象访问协议,对应于应用层 ,HTTP协议是基于...

  • tcp udp

    TCP、UDP以及HTTP的简单讲解 先来一个讲TCP、UDP和HTTP关系的 1、TCP/IP是个协议组,可分为...

网友评论

      本文标题:HTTP,UDP,TCP协议

      本文链接:https://www.haomeiwen.com/subject/allguhtx.html