HTTP协议

WEB访问的过程

1.客户端用户在浏览器输入url,形如 http://www.baidu.com
2.客户端操作系统做dns解析,获得目标服务器的ip地址
3.客户端操作系统打开一个自由端口,向服务器发起连接请求
4.经过3次握手,服务端确认与该客户端的连接,也开发一个自由端口
5.客户端开始发送请求数据,以4KB为一个请求数据包,发送http request请求
6.服务器开始接受请求数据包,接收完成后处理数据,request handling
7.服务器开始向客户端发送响应数据,4KB,发送http response
8.响应结束后,服务器会经过4次握手断开连接,关闭各自的自由端口
服务器向客户端发送响应数据会,连接还在吗?
HTTP1.0 版,连接不在,已经断开,下次发送数据时,需要再次进行握手连接
HTTP1.1 Connection:Keep-Alive 请求响应后,不会立即断开,会有一小段时间的保活状态,如果这段时间内没有请求了,即断开连接。
1.1相较与1.0有哪些好处?
  • 持久连接
  • 虚拟主机
  • 代理连接

HTTP协议是什么?

Hyper Text Transfer Protocol:超文本传输协议
是TCP/IP协议族(栈)中“应用层”的一个协议,用于在服务端和客户端传递超文本内容。
MIME:multipurpose Internet Mail Extension(多用途的互联网邮件扩展)

URL的组成

HTTP协议

  • URI:Unified Resource Identifier 统一资源识别,包含URL和URN
  • URL:Unified Resource Locator 统一资源定位,即常见的浏览器地址
  • URN:Unified Resource Naming 统一资源命名,mailto:[email protected]

URL的完整格式

<scheme>://<user>:<pwd>@<host>:<port>;<params>?<query>#<frag>
  • scheme:方案,指定以哪种协议从服务器获取指定资源,方案名不区分大小写,常见HTTP HTTPS FTP MAILTO RTSP FILE NEWS TELNET等
  • user:用户名,某些方案访问资源时需要指定用户名,默认值是 anonymouse
  • pwd:密码,默认值为 e-mail 地址,例:ftp://admin:[email protected]/adm/secret.xls
  • host:资源所在服务器的ip地址或域名,如是域名需要dns解析成ip
  • params:参数,某些方案会使用参数来指定输入参数,每个参数都用名值对的形式,一个url可以有多个参数,用;分开,例:https://www.ccb.com/login.jsp;jsessionid=gy65edfgt6
  • query:查询参数,以?开始&分隔,可以多个
  • frag:网页中的位置,对应元素的id
  • 注:js中的encodeURI不会对“; / ? : @ & = + $ , # '”进行编码,而encodeURIComponent会

HTTP通信

请求响应原理

1.message:消息/报文,在http客户端与服务器之间传递的数据块
2.http协议规定,消息必须符合特定的格式才能被彼此理解,分两种:

  • request message:客户端向服务器发送的请求消息
  • response message:服务器返回给客户端的消息

3.message消息的结构

  • StartLine:起始行,必须,基本的描述信息
  • Header:消息头部/报文。可选
  • Body:消息正文/主体。可选
  • 起始行和消息头是纯ASCII字符,每行以CRLF(回车换行)结束
  • 消息主体是一个可选的数据块,可以为空或者是字符数据或者二进制数据

4.详细描述

  • 起始行
    格式:请求方法空格请求URL空格所用协议/版本 CRLF

    请求方法含义是否有请求体
    GET从服务器获取资源
    POST向服务器发送资源
    PUT让服务器保存资源
    DELETE让服务器删除资源
    HEAD获取资源的响应头信息
    OPTIONS询问服务器可以提交哪些请求方法
    TRACE追踪传输路径
  • 消息头部:描述请求本身、客户端、请求主体的特征,可分4种

    • 通用头部:请求消息响应消息都可用。
      Connection Date Cache-Control Pragma
    • 请求专用头部:只在请求消息中
      Host Referer User-Agent Client-IP Accept If-Modified-Since Cookie
    • 实体头部:描述消息主体特征
      Location Content-Length Expires Last-Modified Content-Type
    • 扩展头部:自定义
  • 请求主体:文件传输 multipart/form-data

相关推荐