计算机网络是学习计算机的一门重要学科,其中的HTTP知识更是前端的重要知识,这里不仅体现在前后端交互会用到,而且一些缓存,优化也大多是跟这里的相关,不过由于我本人在学习这些的知识上还未深入理解,所以这里只是先记录我最近所学到的知识,以后有机会深入研究再做补充。
1)理解计算机网络中的一些知识点对于我们后续学习HTTP会有更大的帮助。在计算机网络中,有一个很经典的五层模型:
- 物理层:主要定义物理设备如何传输数据
- 数据链路层:在通信的实体间建立数据链路链接
- 网络层:为数据在结点之间的传输创建逻辑链路
- 传输层(tcp,udp...):向用户提供了可靠的端到端服务,同时向高层屏蔽了下层数据通信的细节
- 应用层(http,ftp...):为应用软件提供了很多服务,构建于TCP之上,屏蔽网络传输的相关细节
这里的HTTP就属于应用层
2)HTTP的发展历史
- HTTP/0.9:只有一个命令,没有发送HEADER等描述数据的信息,服务器发送完毕,就关闭TCP连接
- HTTP/1.0:增加了很多命令,增加了status code和header,多字符集支持、多部分发送、权限、缓存等
- HTTP/1.1:增加了持久连接,pipeline和host和其他一些命令
- HTTP/2.0:所有数据以二进制的形式传输,同一个连接里发送多个请求不再需要按照顺序来,头信息压缩以及推送等提高效率的功能
3)HTTP与TCP关系:
HTTP只能在浏览器和服务器中其发送和接受的作用,需要通过TCP来建立连接
4)URI、URL、URN之间的关系
- URI
- 定义:Uniform Resource Identifier,即统一资源标识符
- 作用:用来唯一标识互联网上的信息资源
- URL
- 定义:Uniform Resource Locator,即统一资源定位器
- URN(不深入)
- 定义:永久统一资源定位符
- 作用:在资源移动后还能被找到
- 目前还未有成熟的使用方案
5)HTTP报文
- 分类
- 请求报文
- 响应报文
- 报文格式
- 起始行(注意:请求报文中的methods要与后面的有一个空格)
- 首部
- 主体
(注意:首部和主体之间需要空一行)
与这个话题中的常见考点:
1)输入一个url背后进行的过程?
2)TCP的三次握手,为什么不是两次或者四次?