面试题:计算机网络
图
HTTP和HTTPS的区别?常用的HTTP方法?GET和POST的区别?三次握手?四次挥手?HTTP状态码?WebSocket和HTTP区别?

HTTP和HTTPS的区别?

  • 端口号:HTTP默认使用端口号80进行通信,而HTTPS默认使用端口号443进行通信
  • 安全性:HTTP不是安全的协议,因为数据以明文形式传输,容易被劫持、窃取或篡改。而HTTPS使用SSL/TLS加密协议对数据进行加密,确保数据在传输过程中不被窃取、篡改或伪造
  • 证书认证:HTTPS需要使用数字证书来验证服务器的身份,防止中间人攻击。而HTTP没有这个认证机制,无法验证服务器的真实身份,容易遭受攻击

常用的HTTP方法?

HTTP 协议定义了多种请求方法,其中最常用的方法有以下几种:

  1. GET:用于获取资源,请求参数附加在URL后面,可以被缓存和收藏
  2. POST:用于提交数据并创建新资源,请求参数包含在请求体中,不可被缓存或收藏
  3. PUT:用于更新资源,请求参数包含在请求体中,要求对指定URI的资源进行完全替换
  4. DELETE:用于删除资源,请求参数附加在URL后面
  5. HEAD:类似于GET方法,但只返回响应头部信息,不返回实体内容
  6. OPTIONS:获取服务器支持的HTTP方法列表
  7. PATCH:用于更新资源,与PUT方法类似,但只更新部分属性

GET和POST的区别?

  • 请求参数:GET方法将请求参数附加在URL后面进行传输,而POST方法将请求参数包含在请求体中进行传输
  • 安全性:GET方法将请求参数暴露在URL中,容易被恶意获取、篡改或缓存。而POST方法将请求参数包含在请求体中,相对更加安全
  • 支持数据类型:GET方法只支持ASCII字符集,而POST方法支持任意字符集,且可以上传二进制数据
  • 数据长度限制:GET方法提交的数据量有限制,一般为2048个字符;而POST方法没有数据量大小限制
  • 浏览器行为:GET方法会被浏览器主动缓存,常用于获取静态资源,点击浏览器的后退按钮时,有可能从缓存中读取页面,不会向服务器重新发送请求。而POST方法不会被缓存,每次点击后退按钮都会向服务器重新发送请求

三次握手?

三次握手用于建立TCP连接,为之后的可靠性传送做准备:

  1. 第一次握手:客户端发送同步序列编号(SYN)包到服务器,请求建立连接。SYN包中包含一个随机的初始序列号ISN(Initial Sequence Number)
  2. 第二次握手:服务器收到SYN包后,回复一个 SYN-ACK 包以确认请求,并向客户端发起自己的SYN包,也包含一个随机的ISN
  3. 第三次握手:客户端收到ACK包后,再向服务器发送一个ACK包以确认连接。此时连接已经建立成功,可以开始数据传输

四次挥手?

终止一个连接要经过四次挥手:

  1. 第一次挥手:客户端向服务器发送一个FIN包,表示已经完成了数据传输并请求关闭连接
  2. 第二次挥手:服务器收到FIN包后,回复一个ACK包以确认收到了请求,但仍可以继续发送数据
  3. 第三次挥手:如果服务器也要关闭连接,则会向客户端发送一个FIN包,表示它已经没有数据要发送了
  4. 第四次挥手:客户端收到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不存在跨域问题