当前位置: 首页 > 科技观察

基础-网络知识你必须先了解HTTP

时间:2023-03-16 13:18:44 科技观察

本文转载自微信公众号《前端引力》,作者一川。转载本文请联系前端Gravity公众号。如上所述,秋季招聘已经开始。校招笔试面试往往考查?、《操作系统》、《数据库原理》等计算机基础知识,是应届毕业生必备的技能。已经在工作的小伙伴遇到了技术发展的瓶颈,不妨夯实基础,这样才能走得更远。认识HTTPHTTP协议浏览器的简单示意图HTTP:HypertextTransferProtocol(HTTP)是一种允许超文本标记语言文档从Web服务器传输到客户端浏览器的通信协议。HTTP协议建立在TCP/IP协议之上,是TCP/IP协议的一个子集。TCP/IP家族:TCP/IP协议是与Internet相关的一系列协议的集合,分层管理是TCP/IP协议的一个重要特征。TCP/IP家族通常是由应用层、传输层、网络层和数据链路层组成的系统。计算机网络的分层应用层:应用层一般是编写的应用程序,确定向用户提供什么应用服务。可以通过系统调用与传输层通信,如:FTP、DNS、HTTP等。传输层:传输层通过系统调用为应用层提供网络连接中两台计算机之间的数据传输功能。传输层有两种不同性质的协议:TCP和UDP。TCP是面向连接的、可靠的和低效的。UDP是无连接的,可靠性低,效率高。网络层:网络层用于处理在网络上流动的数据包,数据包是网络传输的最小数据单位。这一层规定了到达对方计算机的路径(传输路由),将数据包传送给对方。链路层:链路层用于处理所连接网络的硬件部分,包括控制操作系统、硬件设备驱动程序、网卡网卡、光纤等物理可见部分。硬件的范围在链路层的范围内。数据包封装过程HTTP传输过程发送方发送数据时,数据会从上层传输到下层,每一层都会标记本层的头信息。当接收端接收到数据时,会将数据从下层传输到上层,下层的头信息在传输前会被删除。下图中,当你想在浏览器中查看一个页面时,会在应用层发起一个HTTP请求,HTTP报文会通过传输层的TCP协议进行划分,每条报文都会被标记为序列号,端口号等信息,然后发送到网络层。在网络层,通过IP协议在每条报文中加上通信目的地的MAC地址,然后转发到链路层,接收端的服务器在链路层接收请求的HTTP数据。从服务器返回到浏览器的流程是相反的。HTTP数据传输过程中TCP的三次握手使用TCP协议进行通信的双方必须先建立连接,才能开始传输数据。为了保证连接双方的可靠性,TCP协议在双方建立连接时采用三次握手策略。第一次握手:客户端发送一个带有SYN标志的连接请求报文,然后进入SYN_SEND状态,等待服务器的确认。第二次握手:服务端收到客户端的SYN报文段后,需要发送ACK信息对SYN报文段进行确认,同时发送自己的SYN请求信息。服务器会将上述信息放入一个报文段(SYN+ACK报文段)中一起发送给客户端。这时服务器会进入SYN_SEND状态。第三次握手:客户端收到服务器的SYN+ACK报文段后,会向服务器发送一个ACK确认报文段。报文段发送完毕后,客户端和服务器都进入ESTABLISHED状态,完成TCP三次握手。说到客户端和服务端的三次握手,通常会有一个疑问:为什么TCP协议要进行三次握手,而不是两次握手?这是因为要建立可靠的通信,首先客户端和服务端都必须保证对方具有完整的发送和接收能力。第一次握手,客户端向服务器发送请求报文,服务器可以确认客户端发送能力正常,服务器接收能力正常;第二次握手,客户端收到服务器返回的消息信息,可以确认服务器收发能力正常,客户端收发能力正常;第三次握手客户端再次向服务端发送确认信息,服务端可以确认客户端接收消息的能力,服务端的发送能力正常。最后可以确认双方收发能力是否正常,所以需要三次握手,两次握手不能相互确认双方收发能力是否正常。DNS域名解析通过以上知识点,我们知道TCP/IP协议与HTTP密切相关,而DNS服务也离不开HTTP协议。比如访问百度www.baidu.com,可以使用主机名100.100.10.10或者域名www.baidu.com来访问,但是相对于一串纯数字的IP地址,使用域名字更容易记住住和访问。要知道TCP/IP协议在计算机网络中使用IP地址进行访问,所以需要一种机制将域名转换为IP地址。DNS服务就是用来解决这个问题的。它可以提供域名和IP地址之间的解析服务,就像我们打电话时查通讯录一样。DNS域名解析过程如图所示。当我们在浏览器中输入www.baidu.com时,具体如下:①TCP/IP协议会先访问本地的域名解析器,找到对应的IP地址后直接返回给客户端,客户端直接向服务器发起HTTP请求;当没有搜索到www.baidu.com对应的IP地址时,向上追踪找到上层域名解析器②TCP/IP协议访问根域名服务器搜索对应的IP地址。如果相同的搜索通过,则沿原路返回客户端;告知客户端没有这个域名的HTTP交易过程客户端访问WEB站点时,会先使用DNS服务查询该域名对应的IP地址,返回给客户端生成HTTP请求,并通过TCP/IP协议发送到WEB服务器。WEB服务器收到请求后,会根据请求生成相应的内容,通过TCP/IP协议返回给客户端。HTTP交易流程参考资料《超详细 DNS 协议解析》《图解HTTP》《计算机网络》MOOC《编程必备基础-大话HTTP协议》