、HTTP主要特点
-
支持客户端和服务端模式: HTTP工作于客户端服务端的架构之上,浏览器作为客户端通过url向服务器及web服务器发送请求,web服务器根据接收到的请求向客户端发送响应信息
-
简单快速: 客户端向服务器请求时,只需传送请求方法和路径,请求方法有post、get等,每种方法规定了客户端与服务端,连接的类型不同。由于HTTP协议简单,使得HTTP服务程序规模小而且通信速度很快
-
灵活: HTTP允许传输任意类型的数据对象
-
无连接: 无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间
-
无状态: 无状态是指协议对事务处理没有记忆能力,意味着如果后续处理需要前面的信息,则必须被重传,这可能导致每次连接的数据量增大,另一方面不需要前面信息时,它的应答就较快
三、HTTP请求结构
HTTP请求报文由3部分组成(请求行+请求头部+请求正文)
HTTP请求结构:
2 请求头部
请求头部: HTTP客户程序(例如浏览器),向服务器发送请求的时候必须指明请求类型(一般是GET或者 POST),如有必要,客户程序还可以选择发送其他的请求头。大多数请求头并不是必需的,但Content-Length除外,对于POST请求来说 Content-Length必须出现
请求报头通知服务器关于客户端求求的信息,典型的请求头有HTTP的响应报文是由( 状态行、响应头部、响应正文) 三部分组成
4.1 响应行
响应行: 描述了响应的状态,一般由协议版本、状态码及其描述组成 比如 HTTP/1.1200OKrn,其中协议版本HTTP/1.1或者HTTP/1.0,200就是它的状态码,OK则为它的描述。
五种可能的取值:DNS解析:当我们浏览器会首先搜索浏览器自身的DNS缓存,也就是我们的hosts文件中去查找,如果浏览器自身缓存找不到则会查看系统的DNS缓存,如果找到且没有过期则停止搜索解析到此结束,而如果本机没有找到DNS缓存,则浏览器会发起一个DNS的系统调用,就会向本地配置的首选DNS服务器发起域名解析请求,最终会找到我们域名对应的IP地址。
2. TCP解析:拿到域名对应的IP地址之后,User-Agent(一般是指浏览器)会以一个随机端口(1024< 端口 < 65535)向服务器的WEB程序(常用的有httpd,nginx等)80端口发起TCP的连接请求。这个连接请求到达服务器端后,进入到网卡,然后是进入到内核的TCP/IP协议栈,最终到达WEB程序,最终建立了TCP/IP的连接
3. 发送HTTP请求: 建立了TCP连接之后,发起一个http请求
4. 服务器处理请求并返回HTTP报文: 服务器接受并处理完请求,返回 HTTP 响应,一个响应报文格式基本等同于请求报文,由响应行、响应头、空行、实体组成
