HTTP协议

应用层:

一般我们写的⼀个个解决我们实际问题,满⾜足我们⽇日常需求的网络程序,都是在应用层。

HTTP协议:
认识URL:
平时我们俗称的“网址”,其实就是说的URL。
HTTP协议_第1张图片
urlencode和urlecode
 像 / ? :等这样的字符, 已经被url当做特殊意义理解了. 因此这些字符不能随意出现. 比如, 某个参数中需要带有这些特殊字符, 就必须先对特殊字符进行转义。
 转义的规则如下: 将需要转码的字符转为16进制,然后从右到左,取4位(不足4位直接处理),每2位做⼀位,前⾯面加上%,编码 成%XY格式。
HTTP协议格式:

  • 首行:[方法] + [url] + [版本]
  • Header:请求的属性,冒号分割的键值对;每组属性之间使用\n分割遇到空行表示Header部分结束。
  • Body:空行后面的内容都是Body,Body允许为空字符串。如果Body存在,则在Header中会有一个Content-length属性来标识Body的长度。
    HTTP响应:
  • 首行:[版本号] + [状态码] + [状态码解释]
  • Header:请求的属性, 冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示Header部分结束 。
  • Body:空行后面的内容都是Body。Body允许为空字符串,如果Body存在, 则在Header中会有一个 Content-Length属性来标识Body的长度; 如果服务器返回了一个html页面, 那么html页面内容就是在 Body中。
    HTTP的方法:
    HTTP协议_第2张图片
    其中最常用的就是GET和POST方法。
    HTTP的状态码:
    HTTP协议_第3张图片
    最常见的状态码:比如200(OK),404(NOT Found),403(Forbidden),302(Redirect,重定向),504(Bad Gateway).
    HTTP常见Header:
  • Content-Type: 数据类型(text/html等);
  • Content-Length: Body的长度;
  • Host: 客户端告知服务器, 所请求的资源是在哪个主机的哪个端口上;
  • User-Agent: 声明用户的操作系统和浏览器版本信息;
  • referer: 当前页面是从哪个页⾯面跳转过来的;
  • location: 搭配3xx状态码使用, 告诉客户端接下来要去哪里访问;
  • Cookie: 用于在客户端存储少量信息. 通常用于实现会话(session)的功能;

你可能感兴趣的:(HTTP协议)