HTTP协议 超文本传输协议 基于TCP/IP通讯协议来传递数据

主要特点:

  1. 简单快速

  2. 灵活

  3. 无连接

  4. 无状态

  5. 支持B/S及C/S模式

URL 统一资源定位符

http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name

  1. http: 协议名称

  2. www.aspxfans.com 域名部分

  3. 8080 端口部分

  4. /news/ 虚拟目录部分

  5. index.asp 文件名部分

  6. #到最后 锚部分

  7. ?到#中间的部分 参数部分

HTTP 请求消息Request,格式包括

  1. 请求行 请求类型,访问的资源及HTTP版本(不同请求区别在与请求行的 GET/POST请求头)

  2. 请求头部 说明服务器要使用的附加信息,浏览器相关的内容,由浏览器来自己定义

  3. 空行 请求头部后面的空行是必须的

  4. 请求数据 请求数据如name=多少 id等于多少等等

GET /562f25980001b1b106000338.jpg HTTP/1.1
Host    img.mukewang.com
User-Agent    Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36
Accept    image/webp,image/*,*/*;q=0.8
Referer    http://www.imooc.com/
Accept-Encoding    gzip, deflate, sdch
Accept-Language    zh-CN,zh;q=0.8、

HTTP响应消息Response,格式包括

  1. 状态行,由HTTP协议版本号、状态码、状态消息组成

  2. 消息报头,用来说明客户端要使用的一些附加信息

  3. 空行

  4. 响应正文,服务器返回给客户端的文本信息

HTTP/1.1 200 OK
Date: Fri, 22 May 2009 06:07:21 GMT
Content-Type: text/html; charset=UTF-8

<html>
      <head></head>
      <body>
            <!--body goes here-->
      </body>
</html>

HTTP之状态码:三位数字组成,第一个数字定义响应的类别

1xx:指示信息--表示请求已经接受,继续处理

2xx:成功,表示请求已被成功接收、理解、接受

3xx: 重定向,要完成请求必须进行更进一步的操作

4xx: 客户端错误,请求有语法错误或请求无法实现

5xx: 服务器端错误,服务器未能实现合法的请求

常见状态码

200 OK 客户端请求成功

400 Bad Request 客户端请求有语法错误,不能被服务器所理解

403 Forbidden 服务器收到请求,但是拒绝提供服务

404 Not Found 请求资源不存在,输入了错误的URL

500 Internal Server Error 服务器发生了不可预期的错误

503 Server Unavailable 服务器当前不能处理客服端的请求,一段时间后可能恢复正常

HTTP请求方法:

1.0定义了三种请求方法:

GET:请求指定的页面信息,并返回实体主体

POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)

HEAD:类似get请求,只不过返回的响应中没有具体的内容,用于获取报头

HTTP工作原理:

工作步骤:

  1. 一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口,建立一个TCP套接字连接

  2. 发送HTTP请求,即上面的上面的request等

  3. 服务器接受请求并返回HTTP响应,Web服务器解析请求,定位请求资源,即response

  4. 释放连接TCP

  5. 客户端解析服务器返回的HTML内容

浏览器输入URL,按下回车之后会经历以下流程:

  1. 浏览器像DNS服务器请求解析该URL中的域名所对应的IP地址

  2. 解析IP地址后,根据ip地址和端口,和服务器建立TCP连接

  3. 浏览器发出读取文件的HTTP请求,改请求报文作为TCP三次握手的第三个报文的数据发给服务器;

  4. 服务器对浏览器请求做出响应,并把对应的html文本发送给浏览器;

  5. 释放TCP连接

  6. 浏览器将该html文本并显示内容

GET、POST的区别

  1. GET会将参数附加到地址上,而POST请求不会

  2. 浏览器和服务器对URL长度一般来说会有限制,所以采用GET方法提交的时候,传输数据就会受到URL长度的限制。

  3. POST的安全性要比GET的安全性高,通过GET提交数据,数据会明文显示在URL上