HTTP 基本概念
1. 什么是 HTTP?HTTP 的作用是什么?
HTTP 全称:HyperText Transfer Protocol ,超文本传输协议。
HTTP 从客户端到服务器端等一系列运作流程提供规范,是目前互联网上使用的最广泛的一种规范。
HTTP 协议用于客户端和服务器端之间的通信
通过请求和相应的交换达成通信
HTTP 是一种不保存状态的协议
HTTP 通过使用 URI 来定位互联网的资源
2. 什么是 TCP/IP?
计算机与网络设备通信,须基于一定的方法规范来进行。确定通信对象、通信语言选择、开始结束通信方式、不同操作系统或者硬件之间如何通信,这些都是需要制定的规则协议。
TCP/IP 协议就是由这些多种互联网通信相关协议组合而成,HTTP 为期子集。大部分常用的互联网网络,均通过 TCP/IP 协议族来进行。
TCP/IP 协议族常见的协议还包括:TCP、IP、HTTP、FDDI、FTP、DNS、UDP、SNMP 等。
TCP/IP 也是指 TCP 和 IP 这两种协议,是在 IP 协议的通行过程中,使用到的协议族的统称。
3. TCP/IP 协议族分几层?
TCP/IP 协议族可以分为 4 层,分别是应用层、传输层、网络层和链路层。
1. 应用层:应用服务之间的通信协议规范,如 FTP、DNS 和 HTTP 都在这层。
2. 传输层:传输层对应用层传输两台计算机之间的数据。传输层主要使用以下两种协议:
传输控制协议 TCP(数据传输的单位是报文段)
用户数据报协议 UDP(数据传输的单位是用户数据报),不保证提供交付的可靠性。
3. 网络层:网络层对传输层提供的数据包进行传送。用来处理网络上流动的数据包,使用无连接的网际协议 IP 和许多种路由选择协议。网络层还有另一个任务就是选择合适的路由。
4. 链路层(数据链路层):硬件上的处理均在链路层的范围内。如:操作系统、硬件设备的驱动、网卡等。
4. TCP/IP 协议族分层有什么优点?
TCP/IP 协议族分层的优点是:
改动方便:如果仅使用一个协议,那么当其中的某一部分发生改变的时候,就需要把整体全部替换掉。
设计简单:使用分层时候,仅需要替换改变的层的内容,只需要把每层之间的接口部分定义规划好,那么各层内部就可以随意改变,更加灵活自由,在设计上也简单很多。
5. TCP/IP 分层与 OSI 分层对比
TCP/IP 协议族按层次分为以下 4 层:应用层、传输层、网络层和数据链路层。
OSI 则分为 7 层:应用层、表示层、会话层、运输层、网络层、数据链路层和物理层。
对应关系如下:
6. 什么是 TCP/IP 通信传输流?
通过 TCP/IP 协议通信方式,会遵循分层的顺序与对方进行通信
发送端的顺序是:应用层 -> 传输层 -> 网络层 -> 链路层;
接受端的顺序是:链路层 -> 网络层 -> 传输层 -> 应用层。
7. TCP/IP 协议族中的 IP 协议
IP 网际协议处于网络层,用于传送数据包。它通过 IP 地址和 MAC 地址将数据包传送到指定的位置。
其中 IP 地址指明了分配给节点的地址,可变化;MAC 地址指明了所属网卡的固定地址,不可变化。
IP 之间的通信是依赖于 MAC 地址的,在网络通信的过程中,根据 ARP (一种地址解析协议)协议,通过 IP 反查出对应 MAC 地址,再通过 MAC 地址来搜索中转目标。
8. TCP/IP 协议族中的 TCP 协议是什么?
TCP 协议提供可靠的字节流服务,主要是通过采用三次握手的策略来确保传输数据的准确性的。
用 TCP 协议将数据包发送之后,它会向对方确认是否成功送达。握手过程中使用了 TCP 的标志(flag)——SYN(synchronize)和 ACK(acknowledgement)。
发送端 A 发送 SYN 标志的数据包给信息接收方 B。
B 收到后数据包之后,回传 SYN/ACK 标志的数据包,表示确认信息。
发送端 A 再回传一个 ACK 标志的数据包,代表“握手”结束。
若在握手过程中某个阶段莫名中断,TCP 协议会再次按照相同顺序发送相同的数据包。
9. 请介绍一下 TCP/IP 协议中的 DNS
DNS 全称为 Domain Name System。
DNS 协议与 HTTP 一样位于应用层,主要负责将域名和 IP 之间的相互解析。
10. IP、TCP、DNS 和 HTTP 的关系
由于篇幅有限,感兴趣的同学可以扫描下方二维码继续阅读:
HTTP 协议是所有开发同学必须掌握的基本技术知识点。
编写后台应用开发程序,需要关注 HTTP 协议;
参与前端页面的开发,也需要了解 HTTP 协议;
从事爬虫相关服务的建设,更需要对 HTTP 有深入的认知;
服务测试抓包,分析网络数据,对 HTTP 的掌握是基本要求;
.......
但目前能够简单并清晰的总结 HTTP 重点知识的书籍少之又少。比较经典的《HTTP 权威指南》、《TCP/IP 详解》等,都是需要投入很多精力研究的厚重书籍。当然书中内容并不一定需要全部掌握或者学习。
基于这种情况,我根据之前研究的内容以及实际工作中的积累,将常见的 HTTP 重点知识整理出来,分享给大家。
为了更好更清晰的让大家掌握这些知识点,本 Chat 通过问答的形式来向大家展示所有内容。通过问题突出强调知识点方向,通过答案来巩固和学习知识点详细内容。
本 Chat 会分为五个方向, 总共 40 个问答来向大家介绍。同时尽量用图文并茂的形式向大家展示答案,方便大家快速地学习与掌握。
五个方向包括:
HTTP 基本概念
HTTP 状态码详解
HTTP 报文解析
HTTPS 的使命
安全漏洞全解析
相信大家通过本 Chat 的学习将会对 HTTP 有更全面更清晰的认知。对今后的工作以及后续的面试准备都会有很大的帮助。
成为大会员,在会员有效期内,GitChat 专栏所有内容与全场 Chat 均可免费阅读,赶快来加入吧。