什么是http?
超文本传输协议(Hypertext Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出。
HTTP是应用层协议,同其他应用层协议一样,是为了实现某一类具体应用的协议,并由某一运行在用户空间的应用程序来实现其功能。HTTP是一种协议规范,这种规范记录在文档上,为真正通过HTTP进行通信的HTTP的实现程序。
请求命令的传输过程
客户端发出请求命令,服务端响应请求的命令返回前端代码,然后前端代码被网站(如百度)解析,浏览器将解析的代码渲染,最后完成响应。
一个请求命令传输的完整过程
OSI七层模型
OSI七层模型中各层包含的东西
(1)应用层:浏览器输入URL,浏览器要将URL解析为IP地址,解析域名就要用到DNS协议(可以扩展DNS解析过程),DNS服务器是基于UDP的,因此会用到UDP协议。知道了IP地址,浏览器会开始构造一个HTTP请求报文,因此要用到http协议,如果采用https还会使用https协议先对http数据进行加密,随后将构建的报文传递给传输层。
(2)传输层:传输层会向服务端发起TCP连接,在建立连接前,会先进行TCP三次握手(比较慢,没有UDP协议快)。为了方便传输,会对数据进行分割(以报文段为单位),并标记编号,方便服务器接受时能够准确地还原报文信息。所以在传输层用到了TCP协议。
(3)网络层:网络层将来自传输层的TCP报文段打包,并加入源及目标的IP地址,因此用到了IP协议,随后根据路由表一跳一跳发送到目的地址。如果目标地址与源地址在同一个网段,则根据mac地址发送即可,因为又要使用到ARP协议查询mac地址。
(4)数据链路层:数据链路层将网络层传递的数据分成以"帧"为单位的数据包,因此用到了以太网协议。利用mac地址以及广播的形式进行数据帧的传递。
(5)物理层:物理层的任务就是透明地传送比特流。
(6)服务器接受请求,接受过程就是把以上步骤逆转过来,同时服务器返回HTP响应报文。
(7)浏览器根据其请求到的资源、数据渲染页面,最终向用户呈现一个完整的页面。
(8)结束连接
URL
URL:统一资源定位器(通俗来说是链接的概念),首先,浏览器第一步工作就是对URL(就是网址)进行解析,从而生成发送给Web服务器的请求信息。
URL由三部分组成:资源类型、存放资源的主机域名、资源文件名。
也可认为由4部分组成:协议、主机、端口、路径