前端常见面试题之http和https
http:
基本概念:超文本传输协议,是互联网应用很广泛的一个网络协议,也是前端面试最经常出现的一个面试题。其负责完成从客户端到服务端的一系列操作流程,专门用来传输HTML的超媒体文档等web内容。其是建立在TCP协议的基础上的应用层协议。http是通过明文方式传输内容,因此安全性较低。
标准端口:80
URL开头:http://
安全性:明文传输,安全性较低
https:
基本概念:是建立在安全套接字基础上的http协议,由SSL和http协议共同构建的可进行加密传输、身份认证的网络协议。
标准端口:443
URL开头:https://
安全性:进行加密传输,身份认证。安全性较高
常见的http请求方式(对应增删改查):
- GET:获取服务器中的资源(查)
- POST:从客户端向服务器端提交资源(增)
- PUT:修改服务器端资源(改)
- DELETE:删除服务器端资源(删)
http请求报文和响应报文:
请求报文格式:请求行、请求头部、请求正文。
响应报文格式:状态行、响应头部、响应正文。
常用http状态码:
2XX:请求成功
3XX:资源被重定向到其他的URL
4XX:客户端错误
5XX:服务器端错误
完整的http请求:
1、在搜索地址栏输入网站的url地址。
2、输入url地址后,浏览器会通过查找浏览器缓存、系统缓存、路由缓存。若有缓存就可以直接显示(在Cache—Control的max_age字段中有缓存的有效时间),若无则进行下一步。
3、通过DNS获取url对应的ip地址。查询本机的host文件中查找是否有url对应的ip地址,若无则请求DNS进行ip地址的获取。
4、建立TCP连接。通过TCP三次握手建立连接。
5、浏览器向web服务器发送请求。
6、浏览器给web服务器发送请求头信息。如果是POST还要发送请求体。
7、web服务器进行响应,并发送响应头消息。
8、web服务器发送数据。以响应头里面的content-type(媒体类型)描述的格式发送数据。
9、web服务器关闭连接。web服务器向浏览器发送了应答数据之后,就要关闭TCP连接(TCP四次握手关闭连接),如果添加了connection:keep-alive就继续保持连接。
常见content-type:
text/html : HTML格式
text/plain :纯文本格式
text/xml : XML格式
image/gif :gif图片格式
image/jpeg :jpg图片格式
image/png:png图片格式
以application开头的常见的媒体格式:
application/json : JSON数据格式
application/xhtml+xml :XHTML格式
application/xml : XML数据格式
application/atom+xml :Atom XML聚合格式
application/pdf :pdf格式
application/msword : Word文档格式
application/octet-stream : 二进制流数据(如常见的文件下载)
multipart/form-data : 表单中需要提交文件时的上传格式
三次握手建立连接:
第一次握手:客户端发送SYN包,进入SYN_SENT状态,等待服务器的确认。
第二次握手:服务器端收到SYN包同时为了验证是对应的用户,将SYN+1同时自己也发送一个ACK包,将SYN+1和ACK包发送给客户端,随之进入SYN_RECV状态等待建立连接。
第三次握手:客户端收到SYN+1和ACK包,给服务器再发送确认包在原来的ACK+1,发送完毕便进入连接状态,完成三次握手。
四次挥手断开连接:
第一次挥手:客户端发出fin,并且停止发送数据。
第二次挥手:服务器收到fin,发出ack。
第三次挥手:服务器发送fin给客户端。
第四次挥手:客户端发送ack给服务器。