http协议
内容:
1.预备知识
2.http协议
3.面试常问
1.预备知识
(1)网址组成(URL构成)
1 网址组成(四部分) 2 协议 http, https(https 是加密的 http) 3 主机 g.cn zhihu.com之类的网址 4 端口 HTTP 协议默认是 80,因此一般不用填写 5 路径 下面的「/」和「/question/31838184」都是路径 6 http://www.zhihu.com/ 7 http://www.zhihu.com/question/31838184
(2)通信原理
1 电脑通信靠IP地址,IP地址记不住就发明了域名(domain name),然后电脑 2 自动向DNS服务器(domain name server)查询域名对应的IP地址 3 4 比如g.cn这样的网址,可以通过电脑的ping程序查出对应 IP 地址 5 ➜ ping g.cn 6 PING g.cn (74.125.69.160): 56 data bytes 7 8 9 端口是什么? 10 一个比喻: 11 用邮局互相写信的时候,ip相当于地址(也可以看做邮编,地址是域名) 12 端口是收信人姓名(因为一个地址比如公司、家只有一个地址,但是却可能有很多收信人) 13 端口就是一个标记收信人的数字。 14 端口是一个 16 位的数字,所以范围是 0-65535(2**16) 15 实际上IP是标识一台电脑在网络中的位置,而端口则是标识这台电脑上的某个软件16 某台电脑的IP地址+端口可以标识这台电脑上的某个软件,通信实际上就是通过IP地址+端口的方式实现
2.http协议
(1)http协议是什么
1 一个传输协议,协议就是双方都遵守的规范。 2 为什么叫超文本传输协议呢,因为收发的是文本信息。 3 1,浏览器(客户端)按照规定的格式发送文本数据(请求)到服务器 4 2,服务器解析请求,按照规定的格式返回文本数据到浏览器 5 3,浏览器解析得到的数据,并做相应处理
(2)请求和返回的数据格式
1 请求和返回是一样的数据格式,分为4部分: 2 请求行或者响应行 3 Header(请求的 Header 中 Host 字段是必须的,其他都是可选) 4 \r\n\r\n(连续两个换行回车符,用来分隔Header和Body) 5 Body(可选)
(3)请求格式
1 请求的格式,注意大小写(这是一个不包含Body的请求): 2 原始数据如下 3 'GET / HTTP/1.1\r\nhost:g.cn\r\n\r\n' 4 打印出来如下 5 GET / HTTP/1.1 6 Host: g.cn 7 8 其中: 9 GET 是请求方法(还有POST等,这就是个标志字符串而已) 10 / 是请求的路径(这代表根路径) 11 HTTP/1.1 中,1.1是版本号,通用了20年 12 13 具体字符串是 'GET / HTTP/1.1\r\nhost:g.cn\r\n\r\n'
(4)返回格式
1 返回的数据如下 2 HTTP/1.1 301 Moved Permanently 3 Alternate-Protocol: 80:quic,p=0,80:quic,p=0 4 Cache-Control: private, max-age=2592000 5 Content-Length: 218 6 Content-Type: text/html; charset=UTF-8 7 Date: Tue, 07 Jul 2015 02:57:59 GMT 8 Expires: Tue, 07 Jul 2015 02:57:59 GMT 9 Location: http://www.google.cn/ 10 Server: gws 11 X-Frame-Options: SAMEORIGIN 12 X-XSS-Protection: 1; mode=block 13 14 15 16 Body部分太长,先不贴了 17 其中响应行(第一行): 18 HTTP/1.1 是版本 19 301 是「状态码」,参见文末链接 20 Moved Permanently 是状态码的描述 21 浏览器会自己解析Header部分,然后将Body显示成网页
(5)http协议的作用
1 ——前端掌握 HTTP 协议有什么用—— 2 3 可以用 JS 动态抓取内容构建页面 4 比如动态评论、加载数据 5 比如天气预报程序 6 比如壁纸图片库 7 浏览器提供了使用 HTTP 协议收发数据的接口,名为 AJAX 8 这是一个重要的技术
3.面试常问
HTTP请求的整个过程是什么样的?答案如下:
- 在浏览器地址栏键入URL,按下回车之后会经历以下流程:
- 浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址
- 解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接
- 浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器
- 服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器
- 释放 TCP连接
- 浏览器将该 html 文本并显示内容
too young too simple sometimes native!