|
马上注册登陆,结交更多好友,享用更多功能,让你轻松玩转社区
您需要 登录 才可以下载或查看,没有账号?用户注册
x
CP协议对应传输层,HTTP协议对应应用层,二者在本质上其没有可比性,但际应用中出现问题很容易混淆,并且不容易定位问题,在此按自身理解分享给大家。?哈喽,大家好,我是指北君。话不多说,先来个小能量。 子域名查询的相关问题可以到网站了解下,我们是业内领域专业的平台,您如果有需要可以咨询,相信可以帮到您,值得您的信赖!
有些路看起来很近走去却很远,缺少耐心永远走不到头。——沈从文
接下来就开始指北君的分享~
前言对于从事互联开发的同学来说,永远都法绕过络连接,各种原理、各种协议轻轻松松就被搞得晕头转向,不知所措,从而影响解决问题的效率,同时需要投入大量时间去查阅资料,搞不好还会搞丢自己的绩效想想后果就不禁一颤,那不如提前储备,以备不时之需。
本篇内容主要围绕常见的HTTP内容,同时对比TCP进行梳理,接下来就和小编一起去探索络连接那些事!
络小知识?
分析络连接前,需要给大家简介下络知识,了解的同学可以直接跳过
络模型通常分为四层或七层,小编以七层为例,络自下而层为:物理层、数据链路层、络层、传输层、会话层、表示层、应用层。每一层都依赖于其底层的协议,比如没有络层,就不会有传输层。HTTP协议对应络的应用层,TCP协议对应络的传输层。(多提一句,IP协议对应络层,是基于TCPIP协议封装的应用接口,便于开发人员使用)TCP协议主要作用是如何稳定速的传输数据,而HTTP协议负责定义数据,以便络两端的计算机理解数据。HTTP协议HTTP协议全超文本传送协议(HTP),是联的基础,也是移动端常用协议之一。HTTP协议属于应用层,主要作用于两台连接的计算机,并且在不同计算机中充当着客户端和服务器的角色。客户端发起请求,服务器负责给予请求对应的响应,完成数据交互。HTTP属于状态协议,每一次请求都是互相单独的、没有任何关联的。在10版本中,客户端每次请求都是建立一次单独的连接,请求完成后自动释放,11版本中单连接允许处理多个请求,并且多个请求可以并发执行。(后续会单独详细介绍HTTP,敬请期待)由于HTTP每次请求结束后会释放连接,所以被称为‘短链接’。为了保持客户端的在线状态,需要不断向服务器发起连接请求,根据服务器的响应结果判断连接是否断开。TCP协议?TCP全传输控制协议(TCP),是一种面向连接的、可靠的、基于字节流的传输层通信协议,是移动端建立线络连接的基础,现移动联TCP相对于HTTP发起请求、接收响应、释放连接来说,是更加复杂的。比较常见且比较重要的就是‘次握手’:首次握手:发送SYN包(=)到,并进入SYN_SEND状态开始等待;第二次握手:接收并确认的SYN包(=+1),同时也额外发送SYN包(=),即SYN包+ACK包,此时进入SYN_RECV状态;第次握手:收到的SYN+ACK包后,向发送ACK包(=+1),成功后和分别进入ESTABLISHED状态,完成次握手。TCP还有另外一层容易被忽略的就是断开连接(四次挥手)首次挥手:端接收完数据,会向端发起释放请求(=);第二次挥手:端接收并确认的释放请求(=+1),通知应用层要释放TCP连接,并进入CLOSE_WAIT状态;第次挥手:端如果还有没有发送完的数据,会继续发送,直到发送完毕后会向端发送连接释放请求(=),然后进入到LAST_ACK状态;(此处可以将第二次和第次合并,延迟ACK包的发送,用来解决传输时间限制等问题)第四次挥手:端接受并确认的释放请求(=+1)后,进入TIME_WAIT状态,并持续2MSL时间,若该时间内未收到端的重发请求,就会进入CLOSE状态,并向发送+包,端确认接收后,也进入CLOSE状态。际应用小编比较近遇到的一个十分紧急的问题,就是外的页面资源加载延迟高,特别是图片、等静态资源。由此为出发点,先解决静态资源加载,想到了HTTP缓存这一特性。
HTTP缓存:当浏览器访问服务端时,会将请求资源缓存到本地,当下次再发起相同请求,则直接加载本地缓存资源,不再请求服务端,节省络资源。HTTP缓存是由请求头字段(C-C)控制。具体根据资源更新频率设置缓存时长。参考微信使用HTTP缓存(仅供参考)::,-=500(为公共缓存,-为缓存时间500秒)
JS文件:-=31536000(1年),文件命带版本号或指纹信息,方便及时更新。
CSS文件:-=31536000,文件命带版本号或指纹信息,方便及时更新。
图片:-=31536000,文件命带版本号或指纹信息,方便及时更新。
XHR请求:-,-
比较终小编利用HTTP缓存解决了页面加载问题,主要是参考微信的请求参数设置,后续涉及其它资源化本文不再作详细介绍,如果有其它问题可以私信一起探讨。
总结TCP协议对应传输层,HTTP协议对应应用层,二者在本质上其没有可比性,但际应用中出现问题很容易混淆,并且不容易定位问题,在此按自身理解分享给大家。
HTTP协议是基于TCP协议的,HTTP在发起请求时通过TCP建立起连接服务器的通道,当请求结束后,会立即断开TCP连接。
比较后借用比较形象的比喻:HTTP是轿车,是封装或显示数据的具体形式;将TCP封装的API(即S编程接口),是发动机,提供了络通信能力。 |
|