当前位置: 首页 > Web前端 > HTML

12个前端冲刺必备攻略-HTTP-HTTPS-HTTP2-DNS-TCP-经典题

时间:2023-04-02 21:46:27 HTML

前言大家好,我是扎尔?你每天努力工作吗?能升职加薪吗?成为CEO经理当上CEO嫁给白富美走上人生巅峰?想了想,是不是有点小激动?这是我第12期的内容?,希望把每一个知识点都解释清楚,(当然有不懂的可以在评论区讨论!)?,计时开始!如果觉得本文对您有帮助,请点赞、收藏、评论,留下您的学习足迹吧?我高兴地谈论它?学习阅读本文还是需要一点前端网络基础的。至少你用过接口,了解后端什么的之后。(也懂一点网络知识,但不太了解的学习者)学习Http协议太重要了。了解Http协议可以了解Web应用的前后端交互等等HTTP网络中的HTTP是什么,HTTPS、HTTP2、DNS、TCP、CDN等等,你是不是一头雾水?你有很多问号吗,孩子??如果Web是基于HTTP协议的,那我们就从HTTP协议说起。HTTP协议:特点:1.简单快速,2.灵活,3.无连接,4.无状态(HTTP是状态不保存,StateProtocol——虽然从HTTP/1.1开始就是无状态协议,为了实现保持状态的功能,引入了Cookie技术,可以用它来管理状态)。(切记)HTTP消息:请求消息、响应消息请求消息:请求行:请求方法、请求URL、HTTP协议和版本;请求头,告知服务器有关客户端请求的信息。空行,发送回车换行响应消息:状态行,响应头,空行,响应体HTTP方法:主要GET方法获取数据,POST方法传输资源,PUT方法更新资源,DELETE方法删除resources,HEAD方法获取消息的头部,当然作为程序HTTP状态码工作人员常用的:这部分在描述之后对比一下应该大部分人都明白了吧?那么接下来我会补充一些内容。让我们了解一下Web网络的基础知识,我们知道我们使用HTTP协议来访问Web,那么你知道当我们在Web浏览器的地址栏中输入URL时,网页是如何呈现的吗?第一步?浏览器将请求的url提交给dns域名解析,找到真实IP,向服务器发起请求。第二步?服务器交给后台处理后,返回响应数据,浏览器接收文件。第三步,浏览器解析加载的资源(根据浏览器地址栏指定的url,浏览器从web服务器获取文件资源等信息),并建立相应的内部数据结构。第四步,浏览器加载解析后的资源文件,渲染页面,呈现网页。所以,即使你不明白它是如何工作的,你仍然可以看到网页。客户端通过指定的访问地址获取服务器资源,服务器使用HTTP协议进行通信,将资源交付给客户端。在浏览器地址栏输入网址后,信息就会被发送到某处,然后从某处得到的回复就会显示在网页上。所以,HTTP协议是一种超文本传输??协议,是一种从万维网服务器向本地浏览器传输超文本的传输协议。HTTP是基于TCP/IP协议的通信协议来传输数据。主要是客户端和服务端之间的通信格式,不涉及数据包传输。那么什么是网络基础TCP/IP网络基础TCP/IP当然,说到网络基础TCP/IP,就必须了解TCP/IP协议族!常用的网络是在网络基本的TCP/IP协议族的基础上运行的,所以,再加上我刚才说的,HTTP是它里面的一个子集(subset?数学概念)。协议就是定义规则。只有事先定义和确定了规则,它们才能相互通信。网络基础TCP/IP是与互联网相关的各种协议族的总称。在图形化HTTP中,TCP/IP协议族分为4层:应用层、传输层、网络层和数据链路层(分层)。使用TCP/IP协议族进行网络通信:相互之间按层次顺序进行通信,发送方(客户端)从应用层向下,接收方(服务器)从链路层向上到应用层。即:客户端、应用层(HTTP客户端)?、传输层(TCP)?、网络层(IP)?、链路层(网络)?;服务器端,应用层(HTTP服务器端),?传输层(TCP),?网络层(IP),?链路层(网络)。从发送端到接收端,发送HTTP请求过程:发送端每经过一层就添加一个header,接收端每经过一层就删除header。发送方发起HTTP请求,从发送方:应用层,HTTP数据(HTTP报文)?,接收TCP头到传输层,即TCP头包含HTTP数据?,接收IP数据包到网络层,即IP头包含TCP头,TCP头包含HTTP数据?,接收网络架构走到链路层,即以太网头包含IP头,IP头包含TCP头,并且TCP标头包含HTTP数据。在发送端就是这样一个传输。然后发送端的链路层传输到接收端的链路层,也就是经过每一层,都会删除header,所以,传输的HTTP数据,(Ethernetheader?IPheader?TCPheader?HTTPdata),从发送端到接收端,接收端向上走每一层去删除header(即链路层到应用层),所以,从链路层到网络层删除header后接收端的(P头?TCP头?HTTP数据),打个比方,HTTP数据留在接收端的应用层。那么有人说,计算机网络中的七层协议呢?是的,有七层,但它们都不会受到影响。顺便说一下七层协议。在主机上:应用层、表现层、会话层、传输层;在网络上:网络层、链路层、物理层。以上知识点可以一部分一部分的学习。HTTP中GET和POST的区别在网上冲浪的时候,看到这篇文章《99%的人都理解错了HTTP中GET与POST的区别》。GET和POST之间有一个主要区别。GET生成一个TCP数据包;POST生成两个TCP数据包。GET请求中,浏览器发送http头和数据,服务器返回200。对于POST,浏览器发送头,服务器返回100continue,浏览器发送数据,服务器返回200。然后看到这篇文章《听说『99% 的人都理解错了 HTTP 中 GET 与 POST 的区别』??》,总结出“GET发一个包,POST发两个包”的知识99%大概都是从这篇文章中得到的《XMLHttpRequest (XHR) Uses Multiple Packets for HTTP POST?》大家可以自己去查一下!(自己多多思考,不断问为什么,扩展自己的知识点边)一个TCP连接可以发送多少个HTTP请求so,一个tcp连接可以发送多少个HTTP请求??,应该是tcp连接不断开,一直可以发送请求,不用断开就可以随便发送。对于HTTP2来说,在一个连接中是可以并行的,但是HTTP/1.1不行。(可以开启Pipelining,http1.1,但是浏览器默认是没有开启Pipelining的)(感觉应该和网络情况有关,并没有一定的方式哪个比那个快)之后一个TCP连接,是否会在HTTP请求完成后断开连接?在HTTP/1.0中,服务器在发送HTTP响应后断开TCP连接。但是这个请求会和端口重新建立TCP连接,代价太大。如果服务器支持Connection:keep-alive标头。表示HTTP请求完成后,HTTP请求使用TCP的TCP连接不需要断开,可以重复使用。发送HTTP请求后,无需重新建立TCP连接。保持连接有很多好处,所以在HTTP/1.1中把Connection头写进了标准。除非它被关闭,否则它会在一段时间内保持一个TCP连接。默认情况下,连接TCP不会断开。只有在请求头中声明Connection:close请求完成后连接才会关闭。如果保持连接,则TCP连接可以发送多个HTTP请求。HTTP请求可以在TCP连接中一起发送吗?在PiPelining中解决这个问题:(什么是Pipelining)?深化)IP、TCP、DNS说到IP、TCP、DNS这三个协议,当然在网络通信中,层层牵扯,只好说说还是算了。TCP/IP是一种协议系统。它是一组用于网络通信的协议。tcp的头部格式负责IP协议的传输。几乎所有使用网络的系统都使用IP协议(位于网络层)。IP协议的作用是向对方传输各种数据包。需要保证两个重要条件,IP地址(表示节点分配的地址,IP可以更改)和MAC地址(指网卡所属的固定地址,MAC地址基本不会变)。使用ARP协议通过MAC地址进行通信,(ARP是一种地址解析协议,通过通信对方的IP地址可以查回对应的MAC地址)。ARP协议用于当通信双方需要经过多台计算机和网络设备相互到达时,利用下一站中转设备的MAC地址来寻找下一个中转地址。(如果是快递公司,你作为寄件人,只知道你的快递已经寄给了快递公司,在快递过程中,你无法了解快递过程的细节。)也就是说,寄件人想发送到某个IP地址的数据包(快递包)会通过ARP协议中转,数据包会被发送到一个带有MAC地址的中转站(路由器),然后到达下一个中转地址(搜索(发送))从上一个中转地址到下一个中??转地址),最后到达接收端。数据包:我知道MAC地址的通信过程中使用的是ARP协议,但是这个是在通信双方很少在同一个局域网的情况下使用的。TCP协议用于保证可靠性。它位于传输层,提供字节流服务。字节流服务将大块的数据以消息段为单位分成数据包进行管理(主要是为了传输方便)。而这里要保证数据的可靠传递,这里就是我们常说的TCP协议使用三次握手来保证数据准确发送到目的地。(TCP建立连接-三次握手,TCP释放连接-四次挥手(后面会讲到))三次握手,四次挥手过程中使用了TCP标志,SYN(synchronize)同步信号和ACK(acknowledgement)确认信号。描述过程为:(三次握手)第一次握手:发送端将标有SYN的数据包发送给接收端,等待对方接收。第二次握手:接收端收到后,发送一个带有SYN/ACK标志的数据包,显示确认信息。第三次握手:发送端收到后,将带有ACK标志的数据包发回给接收端,握手接收。发送端将标记为SYN的数据包发送给接收端。接收端收到后,向发送端发送一个标记为SYN/ACK的数据包。发送端收到后,向接收端发送一个标记为ACK的数据包。结尾。如图:(SYN、ACK为TCP包中的控制位)描述过程为:挥手四次。通常我们习惯于记住域名,但是机器之间相互识别的是ip地址。域名和ip地址是一一对应的。域名之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成。所以,这就需要DNS服务来负责域名解析。DNS服务负责域名解析。负责域名解析的DNS服务就是通过域名来查询具体的IP。当客户端计算机发出查询请求时,它会在本地计算机的缓存中进行搜索。如果本地无法获取到查询信息,则将查询请求发送到DNS服务器。首先,客户端计算机向本地DNS服务器发送域名查询请求,并在服务器管理的区域的记录中进行查询。如果找到该记录,则使用该记录进行解析。如果没有满足查询要求的区域信息,则在本地找不到客户端查询的信息将请求发送给根域名DNS服务器,DNS服务器负责解析客户端请求的根域部分,以及将包含下一级域名信息的DNS服务器地址返回给客户端的DNS服务器地址,最终在目标的DNS服务器上找到对应的IP地址信息。DNS服务是应用层的协议,提供域名和IP地址之间的解析服务。(了解域名购买和解析服务后可以添加DNS服务,这样更容易理解,这是一台不通过IP地址访问,而是使用主机名或域名访问对方电脑的电脑),它通过域名提供IP查找。也可以从IP地址反向查找域名。详细解释过程就是发件人向DNS发送请求,告知我某个域名下的IP地址。DNS收到后,将对应的IP地址返回给发送方。发送方可以通过IP地址向Web服务器发送访问请求。那么,根据上面的总结,我可以描述一下HTTP协议的通信过程:HTTP协议的通信过程。请求某个域名下的页面资源,HTTP协议会生成一个HTTP请求报文给目标Web服务器。TCP协议就是将HTTP请求报文分成报文段,可靠地传送给对方。通过IP协议负责的(数据包中转站),搜索有对方MAC地址的路由器,边中转边传输。到达对方服务器(一个IP地址),TCP协议负责接收对方发来的报文段,按照序号按照原来的顺序重新组合到达,HTTP协议处理对方请求的内容网络服务器。这个过程就是应用层、传输层、网络层、链路层之间的传递。客户端向服务器发送HTTP请求的请求报文是什么?因为上面提到了请求报文,请求报文如下图所示:这是客户端的请求报文,服务端也有。收到后,以响应消息的形式返回结果:使用表格描述GET资源获取:描述请求GET/index.htmlHTTP/1.1响应返回index.html页面资源所以,使用HTTP消息用于HTTP协议交互信息,消息是由多行数据组成的字符串文本。大致分为两部分:消息头和消息体。消息的结构请求消息和响应消息的结构(解释见下图)。当然,如果不够清楚,我又找了几张图:请求头,请求体,状态行,响应头,响应体这里,还有一些知识点是地址栏输入的url。网址应该更常说。就是同一个资源定位器,英文是(UniformResourceLocator)。url是在地址栏中输入的网页地址。URI说到url,我们要理解URI,就是同一个资源标识。了解绝对URI的格式。URI一般定位Internet上的资源,以保证在Internet上任何地方都可以访问资源(HTTP协议使用URI来让客户端定位资源)。如下图所示:很快看到这里的朋友应该对HTTP有了很好的了解。GET和POST有什么区别?面试常见问题:GET和POST有什么区别?GET不会在浏览器回滚时再次请求,POST会再次提交请求。GET请求会被浏览器主动缓存,而POST则不会。如果您手动设置GET请求参数,它们将完整保留在浏览器历史记录中。POST中的参数GET请求的URL中传递的参数长度没有限制,但是通过POST的URL传递的GET参数长度没有限制,POST放在请求正文。HTTP的四个版本分别是HTTP1.0、HTTP1.1、HTTP/2、HTTP/3HTTP1.0默认为短连接。每次与服务器交互时,都需要打开一个新的连接。HTTP1.1版本,默认持久连接,只要不指定端口,就会一直保持,可以发送多个HTTP请求,重点是恢复传输,使用HTTP报文头使用block传输编码以块为单位传输实体主体。现在一些网站使用https协议。在网络上,当客户端与服务器进行交互时,可能会被劫持。需要使用CA(可信组织)来帮助客户端确认服务器的真实性。这时候就需要申请数字证书了。数字证书包含证书持有者、证书有效期、服务器公钥等信息。客户端用CA的公钥解密证书(证书由CA组织的私钥解密,然后客户端用CA证书的公钥解密)过程如下图所示:管道连接和持久连接只在HTTP/1.1Pipelining中支持,在持久连接的前提下,请求一次性打包传回,响应一次性打包传回。随着管道技术的出现,可以直接发送下一个请求,无需等待响应。HTTP1.1中的所有连接默认都是持久连接,使用同一个TCP连接发送和接收多个HTTP请求或响应。持久连接(HTTPPersistentConnections,也称为HTTPkeep-alive或HTTP连接重用)好处:减少TCP连接重复建立和断开带来的额外开销,减轻服务器端的负载,提高网页的显示速度页面,加深对cookie的理解下面我们来看一下Cookie技术,通过在请求和响应报文中写入Cookie信息来控制客户端的状态。跨域什么是同源策略同源策略是一种约定。“协议+域名+端口”是一样的。跨域就是请求可以发出去,服务器可以正常接收请求并返回结果,但是结果被浏览器拦截了。解决跨域:jsonp、iframe、cors、img、HTML5postMessage等。跨域使用html标签的原则是html不受同源策略影响。但是只是接受Get的请求方法,这个一定要搞清楚。JSONP的原理,使用JS请求返回不需要域名,不存在跨域问题,即使用从输入URL到页面显示,中间发生了什么?从输入URL到在页面显示完整的流程图输入url回车,浏览器进程检查url,组装协议形成完整的url,通过进程间通信将url请求发送给网络进程(IPC),并在收到url请求后检查本地缓存是否缓存了请求的资源。如果是,则将资源返回给浏览器进程。如果没有,网络进程向网络服务器发起http请求。向web服务器发起http请求进行DNS解析,获取服务器ip地址,利用ip地址与服务器建立tcp连接建立请求头信息发送请求头信息服务器响应后,网络处理接收响应头和响应信息,解析响应内容网络流程分析响应流程准备渲染流程传输数据,更新状态WebServer实现多个域名单台虚拟主机HTTP/1.1规范允许一台HTTP服务器搭建多个Web站点代理,网关,隧道来自《图解HTTP》代理:来源来自《图解HTTP》网关:来自《图解HTTP》隧道:来自《图解HTTP》缓存:来自《图解HTTP》有效期:来自《图解HTTP》使用明文的网络安全通信可能被窃听,通信内容存在窃听风险TCP/IP可能被窃听的网络加密处理防止窃听无法证明消息的完整性,可能已被篡改使用HTTPS通信HTTP+加密+认证+完整性保护=HTTPS参考资料猜猜一次TCP连接可以发送多少HTTP请求前端总结--网络熬夜写了一篇HTTP总结《图解HTTP》