Http协议
一、HTTP协议
1.1 HTTP协议简介
超文本传输协议(英文:Hyper Text Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。HTTP是一个客户端终端(用户)和服务器端(网站)请求和应答的标准(TCP)。
通常,由HTTP客户端发起一个请求,创建一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个端口监听客户端的请求。一旦收到请求,服务器会向客户端返回一个状态,比如"HTTP/1.1
200 OK",以及返回的内容,如请求的文件、错误消息、或者其它信息。
1.2 HTTP协议的发展历史
- http/0.9:只有一个命令get,没有header等描述数据的信息,服务器发送完毕,就关闭tcp协议。
- http/1.0:增加了很多命令,增加了status code和header
- http/1.1:持久连接,同一个连接发送多次请求,增加host
- http/2:所有数据二进制传输,同一个链接里发送多个请求不再按照顺序来,头信息压缩以及推送(之前的版本html页面如果链接了css和js,先解析html,然后解析链接了url,现在是并行顺序)等提高效率的功能。
1.3 HTTP工作原理
1. 首先客户端和服务端先**建立连接(TCP三次握手)
2. 发送HTTP请求
3. 服务器接受请求并返回HTTP响应
4. 客户端收到响应后**断开连接(TCP四次挥手)
5. 客户端浏览器解析HTML内容
1.4 HTTP三次握手
- 第一次握手:客户端向服务端发出连接请求,将标志位SYN置为1,随机产生一个值seq=J;客户端进入SYN_SENT状态,等待服务器端确认
- 第二次握手:服务端响应客户端,并要求确认,将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K;服务器端进入SYN_RCVD状态
-
第三次握手:客户端校验(ackJ+1 &&
ACK1),校验通过将标志位ACK置为1,ack=K+1响应服务端;服务端收到后校验(ackK+1 &&
ACK1),校验通过连接建立成功;客户端、服务端进入ESTABLISHED状态,完成三次握手
为什么要三次握手:
客户端:C,服务端:S
第一次:C向S请求,此时C什么都不知道,S知道C发送正常,自己接收正常
第二次:S向C响应,此时C知道自己和S收/发正常,S知道C发送正常,自己接收正常
第三次:C向S响应,此时C知道自己和S收/发正常,S知道自己和C收/发正常
1.5 HTTP四次挥手
- 第一次挥手:客户端向服务端发出断开请求,将标志位FIN置为M;客户端进入FIN_WAIT_1状态
- 第二次挥手:服务端响应客户端,发送ack=M+1;客户端进入FIN_WAIT_2状态
- 第三次挥手:服务端向客户端发送请求,将标志位FIN置为N;服务端进入LAST_ACK状态
- 第四次挥手:客户端响应服务端,发送ack=N+1; 客户端进入TIME_WAIT状态,等待2MSL后没后收到回复证明服务端已关闭连接,此时客户端就关闭连接完成四次挥手
为什么四次挥手
客户端:C,服务端:S
第一次:C向S请求,C不再发送数据了,但是还能接收
第二次:S向C响应,S确认收到请求,但是还有数据要发送
第三次:S向C请求,S数据发完了,可以关闭了
第四次:C向S响应,C确认收到请求,等待超时关闭;S收到响应后立即关闭
1.6 HTTP请求方法
HTTP/1.1协议中共定义了八种方法(也叫“动作”)来以不同方式操作指定的资源:GET、POST、PUT、DELETE、TRACE、OPTIONS、CONNECT、HEAD;

浙公网安备 33010602011771号