HTTP和HTTPS的区别?
- 端口号:HTTP默认使用端口号80进行通信,而HTTPS默认使用端口号443进行通信
- 安全性:HTTP不是安全的协议,因为数据以明文形式传输,容易被劫持、窃取或篡改。而HTTPS使用SSL/TLS加密协议对数据进行加密,确保数据在传输过程中不被窃取、篡改或伪造
- 证书认证:HTTPS需要使用数字证书来验证服务器的身份,防止中间人攻击。而HTTP没有这个认证机制,无法验证服务器的真实身份,容易遭受攻击
常用的HTTP方法?
HTTP 协议定义了多种请求方法,其中最常用的方法有以下几种:
- GET:用于获取资源,请求参数附加在URL后面,可以被缓存和收藏
- POST:用于提交数据并创建新资源,请求参数包含在请求体中,不可被缓存或收藏
- PUT:用于更新资源,请求参数包含在请求体中,要求对指定URI的资源进行完全替换
- DELETE:用于删除资源,请求参数附加在URL后面
- HEAD:类似于GET方法,但只返回响应头部信息,不返回实体内容
- OPTIONS:获取服务器支持的HTTP方法列表
- PATCH:用于更新资源,与PUT方法类似,但只更新部分属性
GET和POST的区别?
- 请求参数:GET方法将请求参数附加在URL后面进行传输,而POST方法将请求参数包含在请求体中进行传输
- 安全性:GET方法将请求参数暴露在URL中,容易被恶意获取、篡改或缓存。而POST方法将请求参数包含在请求体中,相对更加安全
- 支持数据类型:GET方法只支持ASCII字符集,而POST方法支持任意字符集,且可以上传二进制数据
- 数据长度限制:GET方法提交的数据量有限制,一般为2048个字符;而POST方法没有数据量大小限制
- 浏览器行为:GET方法会被浏览器主动缓存,常用于获取静态资源,点击浏览器的后退按钮时,有可能从缓存中读取页面,不会向服务器重新发送请求。而POST方法不会被缓存,每次点击后退按钮都会向服务器重新发送请求
三次握手?
三次握手用于建立TCP连接,为之后的可靠性传送做准备:
- 第一次握手:客户端发送同步序列编号(SYN)包到服务器,请求建立连接。SYN包中包含一个随机的初始序列号ISN(Initial Sequence Number)
- 第二次握手:服务器收到SYN包后,回复一个 SYN-ACK 包以确认请求,并向客户端发起自己的SYN包,也包含一个随机的ISN
- 第三次握手:客户端收到ACK包后,再向服务器发送一个ACK包以确认连接。此时连接已经建立成功,可以开始数据传输
四次挥手?
终止一个连接要经过四次挥手:
- 第一次挥手:客户端向服务器发送一个FIN包,表示已经完成了数据传输并请求关闭连接
- 第二次挥手:服务器收到FIN包后,回复一个ACK包以确认收到了请求,但仍可以继续发送数据
- 第三次挥手:如果服务器也要关闭连接,则会向客户端发送一个FIN包,表示它已经没有数据要发送了
- 第四次挥手:客户端收到FIN包后,回复一个ACK包以确认收到请求,并进入TIME_WAIT状态。等待2MSL(最长报文段寿命)时间后,才会关闭连接。这样做是为了确保所有网络中的相关数据包都能够被完全接收,避免数据包丢失或延迟而导致的问题
HTTP状态码?
- 1xx:信息类(Informational),表示请求已被接受,需要继续处理
- 2xx:成功类(Successful),表示请求已经被成功接收、理解和处理
- 3xx:重定向类(Redirection),表示需要客户端采取进一步的操作才能完成请求
- 4xx:客户端错误类(Client Error),表示请求包含语法错误或无法完成请求
- 5xx:服务器错误类(Server Error),表示服务器在处理请求时发生了错误
WebSocket和HTTP区别?
- 连接方式:HTTP每次请求都需要建立一个新的连接,单向通行;WebSocket则是一种全双工通信协议,只需要建立一次连接即可进行双向通信
- 数据格式:HTTP传输数据使用的是文本格式,WebSocket传输数据则是二进制数据流的形式
- 协议头:HTTP协议头较为繁琐,数据包大小比较大,而WebSocket的协议头相对简单,数据包大小比较小
- 跨域:WebSocket不存在跨域问题