初识HTTP
前置知识
1.网络分层模型
OSI七层模型与TCP/IP四层模型及其对应
2.TCP/IP协议
要学习HTTP协议,我们首先要先了解一下TCP/IP协议,因为HTTP协议是以TCP/IP协议为基础的,TCP/IP是一个协议族,是一个四层协议组成的系统(参考以上分层模型)
(1)应用层:这一层有许多的协议,基于这些协议,为用户提供网络应用服务是与用户最近的一层,是与用户关系最为密切的一层
(2)传输层:端到端的通信服务,有两种不同性质的协议:TCP(有连接,可靠)、UDP(无连接、不可靠)
(3)网络层:主要解决数据在网络中的路由问题(即传输路径),基于IP协议划分的IP地址,通过路由算法来确定最优的传输路径
(4)链路层:涉及到的网络硬件如NIC网络适配器(网卡)及一些光电物理特性
3.TCP的三次握手
(1)TCP是有连接的通信,在通信之前,首先要在通信的两端之间建立一个全双工的通信(即信道中既可以发送也可以接收数据)——可以通俗得理解为两个人之间打电话,必须得在电话通了之后再开始对话 建立一个TCP连接,会采用三次握手策略: 第一次握手:首先,服务端一直处于监听状态,监听客户端的连接请求,客户端主动发起连接请求,会发送一个带有SYN标志的连接请求报文,然后进入SYN-SEND状态,开始监听服务端返回确认报文
第二次握手:服务端被动打开连接,并要返回一个ACK确认报文,同时附带上自己的SYN连接请求,然后进入SYN-RECV状态
第三次握手:客户端收到确认消息后,也需要返回一个ACK确认报文,告知服务端你的确认报文及连接请求信息我也确认收到了,此时双方进入Established状态,TCP连接建立,可以开始进行数据传输
为什么要三次握手?意义何在?
因为TCP协议的特点,传输数据前要确保双方的连接已经建立,双方都能明确各自的收发能力都是正常的: 第一次握手,客户端发出消息,对于接收到消息的服务端,就能得出结论:客户端的发送能力是正常的,并且我服务端的接收能力也是正常的 第二次握手,服务端返回确认消息,对于接收到返回消息的客户端,就能得出结论:服务端的发送能力是正常的,并且我客户端的接收能力也是正常的,同时因为接收方返回了确认消息,也就证明了我客户端第一次发出的连接请求服务端收到了,我客户端的发送能力也是正常的 第三次握手,客户端也返回一个确认消息,来告知服务端你的确认消息我收到了,对于接收到确认消息的服务端,也就明确了我服务端的发送能力也是正常的 ————即三次握手后,通信双方都确信了自己的收发能力是正常的
可以通俗地理解为: A、B两人打电话, A说:“喂,你能听到我说话吗?” B说:“我能,你能听到我说话吗?” A说:“能”
(2)TCP基于传输确认机制(ACK),即发送方发送一个消息,接收方需要返回一个确认消息——ACK(回执)。如果发送方没接收到正确的ACK,就会重新发送数据直到接收到ACK为止。 比如:发送方发送的数据序号是seq,那么接收方会发送seq + 1作为ACK,这样发送方就知道接下来要发送序号为seq + 1的数据给接收方了。
(3)超时重传机制——发送方发出消息后,会启动一个坚持定时器,在一定的时间内没有收到接受方返回的确认消息,也会认为没有发送成功并重新发送一次消息
——所以说TCP是可靠传输的协议
4.数据在网络中的传输
发送方数据从顶层(应用层)开始,逐层往下,遵守各层的网络协议的数据格式进行封装,应用层将数据封装为HTTP格式报文,传递给传输层,传输层再在数据的头部添加TCP首部封装为TCP数据报,传输层建立一个TCP连接,再交给网络层,网络层根据IP协议在数据头部添加IP首部标记,封装为IP数据报,网络层根据本地路由表确定下一跳的IP地址,并根据IP地址查询目的MAC地址表,告知链路层,链路层在数据头部添加帧首部标记,并根据目的MAC地址表查询出发出数据的接口,并将数据从该接口传出
接收方链路层接收到数据,逐层往上地将数据拆包,最终在应用层将数据展现给客户
一、什么是HTTP协议?
超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP) 是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端浏览器
协议即为规则,即从A传送超文本(有图文内容的文件,文本内容中有超链接,最常见的格式为HTML)到B需要遵守这个规则
HTTP协议是作用于应用层的协议,HTTP1.1是现在最常用的版本
二、Web与HTTP
Web是一种基于超文本和HTTP的、全球性的、动态交互的、跨平台的分布式图形信息系统
未完待续…
|