乐趣区

关于后端:后端面经计算机基础HTTP和TCP的区别

【后端面经 - 计算机根底】HTTP 和 TCP 的区别

1. OSI 七层模型和相干协定

在计算机网络的学习中,OSI 七层构造是一个很重要的概念。
七层模型从上到下如下所示:

  • 应用层:负责利用之间的通信,解决申请和响应的具体格局
  • 表示层:对于数据格式进行解决
  • 会话层:负责建设和断开通信连贯,
  • 传输层:负责建设端口之间的连贯,标准数据传输
  • 网络层:负责主机之间的传输和寻路
  • 数据链路层:负责传输数据帧,进行过错检测
  • 物理层:负责将数据和电信号进行转化

OSI 七层模型的每一层有对应的协定和标准,如图所示:

2. TCP 协定

TCP(Transmission Control Protocol)是传输控制协议,是一种面向连贯的、牢靠的、基于字节流的传输层通信协议。

2.1 特点:

TCP 是面向连贯、牢靠、基于字节流的传输协定。
传输层的另一个协定是 UDP(User Datagram Protocol),
UDP 是面向无连贯、不牢靠、基于数据报的传输协定。
TCP 和 UDP 的区别如下表所示:

2.2 报文格式

TCP 协定的报文格式如图所示:

对各字段的解释如下表所示:

2.3 三次握手和四次挥手

TCP 的连贯建设和开释是一个很重要的过程,其实重点在于三点:

  • 对连贯建设和开释须要屡次确认的了解
  • 相干标记位的数值
  • 端到端主机的状态扭转

各位能够参考如下博客学习:
“三次握手,四次挥手”你真的懂吗?

3. HTTP 协定

HTTP(HyperText Transfer Protocol)是超文本传输协定,是基于 TCP 协定的一个应用层协定。

3.1 特点

  • 短连贯:基于 TCP 面向连贯的个性,每次申请都须要建设连贯,申请完结后断开连接。想要放弃长连贯,可在连贯有效期内定期发送申请。
  • 无状态:因为是短连贯,申请响应之后间接断开连接,因而不会进行状态存储,下次连贯须要从新输出数据信息。
  • 通信应用明文:HTTP 协定的通信内容都是明文,不加密,因而不平安。

http 的一次连贯过程如下:

  • 客户端发送申请,连贯建设;
  • 服务端响应申请,返回数据;
  • 连贯断开

3.2 报文格式

  1. 申请报文
    简略来说,申请报文分为头部 (header) 和实体(body),两者之间由一行空格相连,其中头部蕴含申请行和头部字段。报文格式如下图所示:

其中,申请行局部能够细分为如下三个局部:

  • 办法字段(Method)包含常见的GETPOST,如下是对常见办法的介绍:
  • URL 字段指出了申请的指标地址。
  • 版本字段(Version)指出了 HTTP 协定的版本,常见的有1.01.12.0,如下是对 http 各个版本的解释:

如下是一个申请行的实例:

GET /index.html HTTP/1.1

  1. 响应报文
    和申请报文相似,响应报文也分为头部和实体,两者之间由一行空格相连,其中头部蕴含状态行和头部字段。报文格式如下图所示:

其中,状态行局部能够细分为如下三个局部:

  • 版本号(Version)在申请报文的介绍中提到过;
  • 状态码(Status Code)指出了申请的处理结果,常见的有200404500,如下是常见状态码和其含意:

    更具体的信息可参考此篇博客

  • 起因字段(Reason Phrase)是对状态码的简略解释。

如下是一个状态行的实例:

HTTP/1.1 200 OK

3.2 https 和 http

HTTP: 超文本传输协定,是一种通信协议,用于从 WWW 服务器传输超文本到本地浏览器的传送协定。
HTTPS: 是一种通过计算机网络进行平安通信的传输协定。HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包。HTTPS 开发的次要目标,是提供对网站服务器的身份认证,爱护替换数据的隐衷与完整性。

4. HTTP vs TCP

两种的区别见下表所示:

5. 面试模仿

Q:HTTP 和 TCP 理解吗?有什么关系?
A:http 是应用层的超文本数据传输协定,tcp 是传输层的传输控制协议。
http 是基于 tcp 实现的,在申请的时候会建设 tcp 连贯,然而 http 的连贯不同于 tcp 的长时连贯,是一种短连贯。

Q:看过 TCP 构造吗?用什么看的?
A:看过,tcp 首部包含 20~60 字节,蕴含源端口、指标端口、数据序号、确认序号、首部长度、批示位、滑动窗口大小、校验和、选项字段。
可通过 wireshark 抓包查看。

Q:HTTPS 是什么?ssl 属于哪一层协定?
A:https 是基于 http 的超文本传输平安协定,在 http 的根底上减少了加密通信、身份认证等性能,从而加强传输的安全性。
SSL 是传输层和应用层之间的协定。次要负责对数据通信进行加密等平安撑持。

参考资料

  1. HTTP 协定 与 TCP 协定 的区别,作为 web 程序员必须要懂
  2. 一文走进 HTTP 与 TCP 协定
  3. 面试:HTTP 协定与 TCP 协定的区别和分割
  4. TCP 报文格式
  5. HTTP 报文格式简介
  6. HTTP 办法
  7. HTTP 状态码
  8. HTTP 与 HTTPS 的区别
退出移动版