# 1. 你知道TCP协议, IP协议, HTTP协议分别在哪一次吗?

传输层,网络层,应用层。

# 2. OSI 参考模型有哪七层

# 由低向上

1.物理层

通过媒介传输比特,确定机械及电气规范(比特Bit)

利用传输介质为数据链路层提供物理连接,实现比特流的透明传输, 将电流转化为比特(bit)

# 2.数据链路层

将比特组装成帧和点到点的传递(帧Frame)

# 3.网络层

负责数据包从源到宿的传递和网际互连(包PackeT)

# 4.传输层

提供端到端的可靠报文传递和错误恢复(段Segment)

# 5.会话层

建立、管理和终止会话(会话协议数据单元SPDU)

# 6.表示层

对数据进行翻译、加密和压缩(表示协议数据单元PPDU)

# 7.应用层

允许访问OSI环境的手段(应用协议数据单元APDU)

# 3.简单的描述下TCP的连接和释放过程

  • 三次握手
  1. 主机A向主机B发送TCP连接请求包, 其中A的初始序列号为seq(A)=x(Sequence 序列号). 此时客户端进入SYN-SENT(同步已发送)状态
  2. 主机B接受到请求后, 会发送确认包, SYN = 1, ACK = 1, seq = y, ack = x + 1, 此时主机B进入 SYN-RCVD(同步收到)状态
  3. 主机A接受到主机B的确认报文后, 还需做出确认, 发送 seq(A) = x + 1, 确认号为 ack(A) = y + 1
  • 四次挥手

  1. 第一次挥手: Client 发送一个FIN, 用来关闭ClientServer的数据传送, Client 进入 IN_WAIT_1 状态;
  2. 第二次挥手: Server 收到FIN后, 发送一个ACKClient, 确认序号为收到序号 + 1(与SYN相同, 一个FIN占用一个序号), Server进入CLOSE_WAIT状态
  3. 第三次挥手: Server发送一个FIN, 用来关闭ServerClient 的数据传送, Server进入LAST_ACK 状态
  4. 第四次挥手: Client 收到FIN后, Client 进入TIME_WAIT 状态, 接着发送一个ACKServer, 确认序列号为收到的序号 + 1, Server 进入CLOSED 状态, 完成四次挥手

# 4. TCP 和 UDP 的区别

  1. 面向连接 vs 无连接
  2. 可靠性
  3. 有序性 (TCP 利用虚拟号, 保证有序)
  4. 速度(UDP 速度比较快)
  5. 量级 (TCP 重量级, UDP 轻量级)

# 5. TCP 滑窗

# 6. 在浏览器输入URL,按下回车后会经历哪些流程

  • DNS 解析

浏览器缓存, 系统存储, 路由器缓存, ip, 域名服务器, 顶级域名服务器

  • 找到ip之后, 建立服务器TCP连接
  • 发送HTTP请求
  • 服务器请求并返回HTTP报文
  • 浏览器解析渲染页面
  • 释放TCP连接(TCP四次挥手), 连接结束

# 7. HTTP状态码分类

  • 1xx: 指示信息-- 标识请求已接受, 接着处理
  • 2xx: 成功-标识请求已被成功接收, 理解, 接收
  • 3xx: 重定向-- 要完成请求必须进行更进一步的操作
  • 4xx: 客户端错误 -- 请求有语法错误或请求无法实现
  • 5xx: 服务器错误 -- 服务器未能实现合法的请求

# 8. GET 请求和POST请求的区别

  • HTTP报文层面: GET将请求信息放入URL, POST放在请求体重
  • GET 请求参数有长度限制, POST中的请求参数没有长度限制
  • 数据库层面: GET请求服务幂等性和安全性, POST不符合
  • GET请求可以被缓存, 存储, POST不行
  • Cookie存在客户端, Session存在服务端
  • Session 相对Cookie 更安全
  • 若考虑到服务器方面的开销, 应该使用Cookie

# 10. HTTP 和 HTTPS 的区别

  • HTTPS 需要到CA申请证书, HTTP不需要
  • HTTPS 密文传输, HTTP明文传输
  • 连接方式不同, HTTPS 默认使用443 端口, HTTP 使用80端口
  • HTTPS=HTTP + 加密 + 认证 + 完成性保护, 较HTTP 安全
最后编辑时间: 4/9/2020, 9:53:23 AM