美文网首页
4:Web基础扩展(1)(HTTP与TCP)

4:Web基础扩展(1)(HTTP与TCP)

作者: _River_ | 来源:发表于2021-04-29 20:53 被阅读0次
    1:HTTP与TCP协议的区别
    纠正一下一直误解的概念:以为HTTP和TCP是两种不同的,但是地位对等的协议,虽然知道TCP是传输层,而HTTP是应用层
    实际上 HTTP是要基于TCP连接的基础上的
    

    TCP就是单纯的建立连接以及数据传输协议  不涉及任何我们需要请求的实际数据。
    HTTP是需要用来收发数据的,即是实际应用上。
    

    从传输层,先说TCP连接,我们要和服务端连接TCP连接,需要通过三次连接,包括:请求,确认,建立连接。即传说中的“三次握手协议”。
    
    一次HTPP请求在底层发送了什么: 
    在前面客户端和应用服务器建立TCP连接之后,就需要用http协议来传送数据了:
           
    第一:客户端Client发送一个http请求给服务端Sever,这个请求包括请求头和请求内容;     
    第二:服务端Sever收到了http请求,然后根据http请求,返回http响应到客户端Client;
    第三:客户端Client收到了以后,就由浏览器完成一系列的渲染,包括执行JS脚本等。      
    

    TCP是底层通讯协议,定义的是连接方式 和 数据传输 的规范。 
    HTTP是应用层协议,定义的是传输数据的内容的规范。
    
    TCP/IP是网络中使用的基本的通信协议,是Internet国际互联网络的基础
    HTTP协议中的数据是利用TCP协议传输的,所以支持HTTP也就一定支持TCP。    
    

    TCP/IP实际上是一组协议,它包括上百个各种功能的协议(了解)
    如:远程登录、文件传输和电子邮件等,而TCP协议和IP协议是保证数据完整传输的两个基本的重要协议。     
         通常说TCP/IP是Internet协议家族,而不单单是TCP和IP。
    
    2:是不是一次HTTP请求 就要建立一次TCP连接
    非持久连接:HTTP/1.0 中 的首部字段Connection 默认值为 close,
                    即每次请求都会重新建立和断开 TCP 连接.
    持久连接:HTTP/1.1 中 的首部字段Connection 默认值为 keep-alive ,
                连接可以复用,只要发送端、接收端都没有提出断开连接,则保持tcp连接状态。
    

    管线化(pipelining)(HTTP 1.1)(BIO)
        管线化技术的出现,实现了同时发送多个http请求,不必等待上一请求返回响应,但是浏览器默认关闭管线化,原因如下:
            1:一些代理服务器不能正确的处理 HTTP Pipelining
            2:Head-of-line Blocking 连接头阻塞:
                在建立起一个 TCP 连接之后,假设客户端在这个连接连续向服务器发送了多个请求。
                如果按照标准的话,服务器应该按照收到请求的顺序返回结果,假设服务器在处理首个请求时花费了大量时间,
                那么后面所有的请求都需要等着首个请求结束才能响应,造成了阻塞。
    

    因为http1.1中的管线化实际上无法使用,因此在http2.0中出现了Multiplexing 多路传输特性
    

    多路复用(Multiplexing)(HTTP 2.0)(NIO)    
        在 HTTP 2.0 中,有两个非常重要的概念,分别是帧(frame)和流(stream),
        帧代表着最小的数据单位,每个帧会标识出该帧属于哪个流,流也就是多个帧组成的数据流。   
        多路复用,就是在一个 TCP 连接中可以存在多条流。
        换句话说,也就是可以发送多个请求,对端可以通过帧中的标识知道属于哪个请求。
        通过这个技术,可以避免 HTTP 旧版本中的队头阻塞问题,极大的提高传输性能。
    

    相关文章

      网友评论

          本文标题:4:Web基础扩展(1)(HTTP与TCP)

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