聊聊 HTTP 协议的知识点
最近刚入手了一本 【图解HTTP】,阅读的同时写点总结笔记,一来方便对学习后的加深理解,同时也分享给大家。
本文主要分享一些关于 HTTP 协议的核心知识点,方便大家可以快速对HTTP 协议有一个简单的了解。我将通过如下三块内容带你快速了解 HTTP 协议。
- 什么是HTTP 协议
- HTTP 协议知识点与介绍
- 各个知识点之间的关系
什么是 HTTP 协议
HTTP 协议中文名:超文本传输协议,英文名:HyperText Transfer Protocol 简称 HTTP。关于HTTP 中文名叫超文本传输协议并不严谨,其实应该翻译为:超文本转移协议。只不过后来大家都这样叫就懒得改了。
看完介绍,你可能会想说:请说人话!我第一次看到这个解释也是一头雾水,下面就是我看完【图解HTTP】用自己方式描述:
你正常通过游览器百度查询西红柿炒鸡蛋怎么做?操作步骤如下:
第一步:打开游览器输入www.baidu.com。
第一步:在游览器输入框输入 西红柿炒鸡蛋怎么做?
第三步:游览器显示西红柿炒鸡蛋怎么做。
当你输入西红柿炒鸡蛋怎么做后点击回车,然后游览器显示西红柿炒鸡蛋怎么做这个过程就是通过 HTTP 协议帮你展示到游览器上的。它做的事情就是把具体内容传输到游览器上。
这回你可能知道了 HTTP 是做数据传输的,但是怎么去定位你要哪些数据,以及数据如何展示的呢?这个请继续阅读下面关于 HTTP 协议知识点与介绍。
HTTP 协议知识点与介绍
如下图所示就是和HTTP 协议核心相关的知识点,当然还有一些具体的并没有展示,没有关系请听我慢慢道来。
客户端
其实就是 PC 游览器,或者手机上的 App 。简单点将就是获取数据的一端。
服务端
具体的服务器,例如可以存储各种菜的做法。其实就是提供数据的一端。
HTTP
就是HTTP 协议上面我已经做了简单解析。
URL
具体定位查找知识点地址,例如 www.baidu.com。
HTML
展示从服务器端获取到的信息。帮助游览器将数据展示成我们看到的页面。
TCP/IP:
所有网络通信规则的统称,HTTP 就是 其中之一。
TCP/IP应用分层
应用分层就有点类似 Java Web 的三层架构一样,TCP/IP应用分层简单可以分为4层,分别为:应用层、传输层、网络层、数据链路层。
应用层:真正向外提供服务的一层,例如 HTTP协议,FTP 协议(文件传输协议)
传输层:主要负责数据的传输。这层的协议有 TCP(传输控制协议) 、 UDP(用户数据报协议)。
网络层:确保以正确的传输路径将数据包传送给对方,这层的协议有 IP 协议。
数据链路层:用来处理网络和硬件对接的部分(操作系统、设备驱动、网卡、光纤)。
TCP 协议
TCP(传输控制协议)提供可靠的字节流服务。该协议位于网络层,值得一提的是为了保证数据可靠性 TCP 协议采用了三次握手的策略。三次握手操作流程如下:
- 客户端发送带SYN数据报给服务端。
- 服务端接收到后回传一个 SYN/ACK 标志数据报表示确认。
- 客户端在发送客户端一个ACK 数据报表示握手结束。
- 握手如若中断则会在次以相同的顺序发送数据包。
IP 协议
该协议位于网络层,首先要说明的是IP 地址和IP 协议不是一回事,IP 协议是将数据包传送给对方,而IP 地址和 MAC 地址 IP地址指明了被分配的地址,而MAC 地址则表示网卡所属的固定地址。IP 协议主要是依靠IP 地址和 MAC 地址来确定传输的路线。
DNS
DNS(Domain Name System) 该协议位于应用层,就是讲域名(例如 baidu.com)转换成IP地址。
各个知识点之间的关系
文章的最后让我用一个景点面试题来梳理一下各个知识点之间的关系。
在浏览器中输入url地址 ->> 显示主页的过程
- 游览器查找域名的IP 地址,通过DNS 域名服务系统。
- 游览器向 Web 服务器发送一个HTTP请求,HTTP 协议负责生成请求报文。
- TCP 协议将 HTTP 请求报文分割成报文段并可靠的传输给服务端。
- IP 协议服务搜索正确的传输路径直到数据传输到服务器。
- 服务器端收到请求后再反向形式向客户端响应一个HTML响应。
- 最后游览器显示HTML;
参考文献
[1]【日】上野 宣著 图解HTTP
[2] JavaGuide 计算机网络常见面试题