http协议的构成
超文本传输协议(HTTP,HyperText Transfer Protocol)
- URL定义:Uniform Resource Locator,统一资源定位符
- URI定义:Uniform Resource Identifier,统一资源标识符,用来唯一的标识一个资源
URL是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源,URI是一种语义上的抽象概念,可以是绝对的,也可以是相对的.
http://www.baidu.com:80/china/index.htm?search=lzy&keywords=github
这么一个网址表示什么意思?
- http:// :代表超文本传输协议,通知baidu.com服务器显示Web页,通常不用输入,浏览器会自动加上;
- :80:端口,http协议默认80端口,可省略
- www:代表一个Web(万维网)服务器;
- baidu.com/:这是装有网页的服务器的域名,或站点服务器的名称;
- China/:为该服务器上的子目录,就好像我们的文件夹;
- Index.htm:index.htm是文件夹中的一个HTML文件(网页)。
URL编码是什么?
对于web设计者来说,难题之一便是怎样处理不同操作系统间的差异性。这些差异性能引起URL方面的问题:例如,一些操作系统允许文件名中含有空格符,有些又不允许。大多数操作系统不会认为文件名中含有符号“#”会有什么特殊含义,但是在一个URL中,符号“#”表示该文件名已经结束,后面会紧跟一个标识符。此外,对于其他的特殊字符,非字母数字字符集,它们在URL或另一个操作系统上都有其特殊的含义,表述着相似的问题。为了解决这些问题,我们在URL中使用的字符就必须是一个ASCII字符集的固定字集中的元素。
字符:/ & ? @ # ; $ + = %
也可以被使用,但是它们各有其特殊的用途,如果一个文件名包括了这些字符,这些字符和所有其他字符就应该被编码。
http://tool.chinaz.com/Tools/Unicode.aspx
编码过程非常简单,任何字符只要不是ASCII码数字,字母,或者前面提到的标点符,它们都将被转换成字节形式,每个字节都写成这种形式:一个“%”后面跟着两位16进制的数值。空格是一个特殊情况,因为它们太平常了。它除了被编码成“%20”以外,还能编码为一个“+”。加号(+)本身被编码为%2B。
Http协议组成部分
结合抓包理解http协议
抓包软件:
windows --> fiddler
mac --> charles
- 请求状态行
- 请求头
- 请求空行
- 请求体
请求方法
- GET -- 查
- POST -- 增
- PUT -- 改
- DELETE -- 删
- HEAD
- OPTIONS
- TRACE
- CONNECT
状态码
- 1xx 消息 -- 请求已被服务器接收,继续处理
- 2xx 成功 -- 请求已成功被服务器接收、理解、并接受
- 200 OK 请求成功
- 206 Partial Content 客户发送了一个带有Range头的请求,服务器完成了它。
- 3xx 重定向 -- 需要后续操作才能完成这一请求
- 301 Moved Permanently 重定向,所请求的页面已经转移至新的url。
- 304 Not Modified 服务器告诉客户,原来缓存的文档还可以继续使用。
- 4xx 请求错误 -- 请求含有词法错误或者无法被执行
- 400 Bad Request 服务器未能理解请求。
- 401 Unauthorized 被请求的页面需要用户名和密码。
- 403 Forbidden 对被请求页面的访问被禁止。
- 404 Not Found 服务器无法找到被请求的页面。
- 405 Method Not Allowed 请求中指定的方法不被允许。
- 415 Unsupported Media Type 由于媒介类型不被支持,服务器不会接受请求。
- 5xx 服务器错误 -- 服务器在处理某个正确请求时发生错误
- 500 Internal Server Error 请求未完成,服务器遇到不可预知的情况。
- 502 Bad Gateway 请求未完成,服务器从上游服务器收到一个无效的响应。