后端工程师,老师教的七层网络模型你用在了哪里?(二)

3. TCP/IP协议

TCP/IP协议,英文为Transmission Control Protocol/Internet Protocol,是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇,当然本文的重点HTTP协议也在其中, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。所以HTTP协议是TCP/IP协议簇中的一员。

3.1 五层的体系结构?

四层结构:TCP/IP是一个四层的体系结构,它包含应用层、运输层、网际层和网络接口层,见下图中的b。


那么TCP/IP的四层的体系结构和OSI 的七层协议有什么关系呢?


OSI 的体系结构的概念清楚、理论也较完整,但它是一个概念模型,相对既复杂又不实用。所以TCP/IP采用了四层结构。不过从实质上讲,TCP/IP只有最上面的三层,因为最下面的网络接口层并没有什么具体内容。


五层结构:五层结构又是什么呢?因此在学习计算机网络的原理时往往采取对上面两个协议的折中的办法,即综合OSI和TCP/IP的优点,采用一种只有五层协议的体系结构(下图中的c),这样既简洁又能将概念阐述清楚。有时为了方便,也可把最底下两层称为网络接口层。


下图说明了这几种结构的关系:


后端工程师,老师教的七层网络模型你用在了哪里?(二)

3.2 HTTP协议与TCP/IP协议的关系

常见的HTTP服务有Apache、 Nginx 、IIS等,比较通用的机制就是创建一个进程监听80(443)接口,及时发现客户端发来的连接请求。当监听到连接请求并成功建立TCP连接之后,客户端就向服务器发送HTTP请求,服务器解析该请求并返回对应的结果,最后,释放TCP连接。


从三次握手的角度说一下HTTP协议与TCP/IP协议的关系:


用户在发出一个请求后,HTTP协议首先要和Web服务器建立 TCP连接。这需要使用三次握手。当握手两次之后(即过了一个RTT时间后),客户端就把HTTP请求报文,作为建立TCP连接的第三次握手的数据,发送给HTTP服务器。服务器收到HTTP请求报文后,就把所请求的文档作为响应报文返回给客户端。


大概的机制如下图:


后端工程师,老师教的七层网络模型你用在了哪里?(二)

从图中可以看出,向服务器请求一个文档所需的总时间等于该文档的传输时间(与文档大小成正比)加上两倍的RTT 时间(一个RTT用于连接TCP连接,另一个RTT用于请求和接收文档。)。


这也体现了HTTP/1.0的主要缺点,就是每个请求都要有两倍的RTT 的开销。若一个主页上有很多链接的对象(如图片等)需要依次进行链接,那么每一次链接下载都导致2倍RTT的开销。另一种开销就是客户端和服务器每一次建立新的TCP连接都要分配缓存和变量。特别是HTTP服务器往往要同时服务于大量客户的请求,所以这种非持续连接会使HTTP服务器的负担很重。好在浏览器都能够打开5~10个并行的TCP连接,而每一个TCP连接处理客户的一个请求。因此,使用并行TCP连接可以缩短响应时间。


从这个痛点出发,HTTP/1.1协议较好地解决了这个问题,它使用了持续连接(persistent connection)。所谓持续连接就是HTTP服务器在发送响应后仍然在一段时间内保持这条连接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的HTTP请求报文和响应报文。这并不局限于传送同一个页面上链接的文档,而是只要这些文档都在同一个服务器上就行。


上一篇:【区块链之菜鸟入门】亲,你淘的区块链到了!


下一篇:阿里云服务器25端口解封教程完美解决25端口开通问题