【coder-pig教程学习笔记3】Http协议

来源:互联网 发布:sql 修改字段默认值 编辑:程序博客网 时间:2024/05/22 17:26

1.Http 协议的底层工作流程

a.两个名词

SYN(Synchronous):TCP/IP建立连接时使用的握手信号
ACK(Acknowledgement):确认字符,确认发来的数据已经接受无误

b.TCP/IP 三次握手的概念

学术版理解

  1. 客户端发送 syn 包(syn = j)到服务器,进入 SYN_SEND 状态,然后等待服务器确认
  2. 服务器收到 syn 包,确认客户的 syn(ack = j + 1),同时在自己也发送一个 syn 包(syn=k), 即 syn + ack 包,服务器进入 SYN_RECV 状态
  3. 客户端收到 syn + ack 包,向服务器发送确认包 ack(ack = k +1),发送完毕后,客户端与服务端进入 ESTABLISHED 状态,完成三次握手,然后两者开始传送数据

通俗版理解

  1. 考场上,客户端偷偷扔了个纸条给服务器,上面写着:“第五道计算题你写好了没?”
  2. 服务器收到纸条后,也是够义气,在纸条上写上:“正在做,这道题做完我就写完全卷了,你还有哪些题需要答案的一起写在纸条上给我。”然后扔了回去。
  3. 客户端拿到纸条感动得泪流满面,把所有不懂的题号都写到纸条上又扔给服务器。

c.Http操作的流程

  1. 用户点击浏览器上的url(超链接),Web浏览器与Web服务器建立连接
  2. 建立连接后,客户端发送请求给服务器,请求的格式为:
    统一资源标识符(URL)+协议版本号(一般是1.1)+MIME信息(多个消息头)+一个空行
  3. 服务端收到请求后,给予相应的返回信息,返回格式为: 协议版本号 + 状态行(处理结果) + 多个信息头 + 空行 + 实体内容(比如返回的HTML)
  4. 客户端接收服务端返回信息,通过浏览器显示出来,然后与服务端断开连接;当然如果中途某步发生错误的话,错误信息会返回到客户端,并显示,比如:经典的404错误!

2.Http的请求方式(常用的为GET和POST)

  • GET:请求获取Request-URI所标识的资源
  • POST:在Request-URI所标识的资源后附加新的数据
  • HEAD 请求获取由Request-URI所标识的资源的响应信息报头
  • PUT:请求服务器存储一个资源,并用Request-URI作为其标识
  • DELETE:请求服务器删除Request-URI所标识的资源
  • TRACE:请求服务器回送收到的请求信息,主要用于测试或诊断
  • CONNECT:保留将来使用
  • OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项

3.GET和POST的区别

  • GET:在请求的URL地址后以?的形式带上交给服务器的数据,多个数据之间以&进行分隔,
    但数据容量通常不能超过2K,比如:http://xxx?username=…&pawd=…
  • POST: 在请求的实体内容中向服务器发送数据,传输没有数量限制
  • GET安全性低效率高,用于一般查询;POST安全性高效率低,用于数据增删改
  • 两者的区别并不像网上某些人说的“GET获得服务器数据,POST向服务器发送数据”,其实两者都是向服务器提交数据

4.Http状态码

  • 100~199 : 成功接受请求,客户端需提交下一次请求才能完成整个处理过程
  • 200: OK,客户端请求成功
  • 300~399:请求资源已移到新的地址(302,307,304)
  • 401:请求未授权,改状态代码需与WWW-Authenticate报头域一起使用
  • 403:Forbidden,服务器收到请求,但是拒绝提供服务
  • 404:Not Found,请求资源不存在
  • 500:Internal Server Error,服务器发生不可预期的错误
  • 503:Server Unavailable,服务器当前不能处理客户端请求,一段时间后可能恢复正常
0 0
原创粉丝点击