应用层协议--->HTTP协议

应用层>>>>>>>>>>>>>>>>>>>>>>>>>>>>.

HTTP(超文本传输协议)

HTTP协议流程

1、输入URL(网址)。不管是链接还是地址栏的输入,情况都是一样的。http协议已经规定了URL的格式,通过http协议中的域名或IP找到服务器。

2、找到服务器的同时,会有http的请求发送过来,告诉服务器我求你做什么?http协议规定了发送请求的格式,这个格式有三部分组成请求行(首行,url)、请求头(Header)、请求体(Body)。
3、请求信息发送至服务器以后,服务器会获取传递过来的相关信息进行后端程序的处理。一般通过request.querystring获取URL传递过来的指,通过request.form获取POST传递过来的值,当然,也是可以获取到所有的其他请求过来的信息,如浏览器信息、cookie信息、操作系统信息等。获取相关的数据以后,服务器就会根据程序进行处理。
4、处理完成以后,服务器会做出响应,向浏览器输出相关信息。
完成以上四部操作以后,浏览器就断开了与服务器的数据连接,不能在进行数据传输,如果需要再次进行数据传输,那么一切就要从输入URL开始。如此,便是一个完整的网页流程,http从中的作用就是对整个流程进行规定,包括执行步骤,每一步的数据格式


HTTP协议格式

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响应常见的[状态码]的有:

1xx 的表示消息状态码,
2xx 表示成功,
3xx 表示重定向,
4xx 表示客户端异常,
5xx 表示服务器异常。

HTTP常见Header

Content-Type: 数据类型(text/html等)
Content-Length: Body的长度
Host: 客户端告知服务器, 所请求的资源是在哪个主机的哪个端口上;
User-Agent: 声明用户的操作系统和浏览器版本信息;
referer: 当前页面是从哪个页面跳转过来的;
location: 搭配3xx状态码使用, 告诉客户端接下来要去哪里访问;
Cookie: 用于在客户端存储少量信息. 通常用于实现会话(session)的功能;

http方法
应用层协议--->HTTP协议_第1张图片


get与post的区别

  • GET:浏览器会把HTTP header与data同时发送出去,服务器返回200;
  • POST:浏览器先发送header,服务器返回100 continue,浏览器再发送data,服务器收到返回200(并返回数据)
  1. get只产生一次TCP数据包,post产生两次
  2. GET在浏览器回退时是无害的,而POST会再次提交请求。
  3. GET请求只能进行url编码,而POST支持多种编码方式。
  4. GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
  5. GET请求在URL中传送的参数是有长度限制的,而POST没有。
  6. GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
  7. GET参数通过URL传递,POST放在Request body中。

HTTP与HTTPS

  1. HTTP协议是以明文的方式在网络中传输数据的,而HTTPS传输数据进过TLS加密后进行传输,具有更高的安全性
  2. HTTPS在三次握手后还要写上加密使用的对称加密密匙;
  3. HTTPS需要服务端申请证书,浏览器端安装对应的根证书;
  4. HTTP端口号80,HTTPS端口号443;

你可能感兴趣的:(#,网络)