网络

  • HTTP状态码总结

    众所周知,每一个HTTP响应都会带有一个HTTP状态码(HTTP Status Code),是用来表示HTTP服务器响应状态的代码。它由RFC 2616规范定义的,并得到RFC 2518、RFC 2817、RFC 2295、RFC 2774、RFC 4918等规范扩展。作为web开发者,平时经常200、301、302、404、500、503等。最近正在开发一些对外的接口(公司内部各系统间互相调用的接口,也算是内部Open API吧),接口调用失败时需要返回一些状态码,考虑借用HTTP状态码的含义,可以让调用方通过状态码就能够大体知道出了什么问题,不用彼此重新约定不熟悉的编码规则,方便沟通及错误定位。自认为想法不错,但是在实际编写中遇到了问题,这个多的状态码该怎么用?就用这个机会好好学习下什么场景用什么状态码,也通过本文记录一下HTTP状态码的内容。在本文中借Michael Kropat的《Choosing an HTTP Status Code — Stop Making It Hard》中提供的状态码使用决策树,区分常用状态码的使用场景。

    注:本文只是提供HTTP状态码的状态信息及含义,以及Michael Kropat总结的常用状态码决策树。

  • HTTP长连接和短连接

    一直听别人说HTTP长连接,只知道长连接比短连接更节省资源、更快捷,但是并不真的知道原因。知其然不知其所以然,对于技术来说,这种状态是比较危险的。所以,还是要挖一下原理,即使挖的比较浅,也要迈出这一步。

    HTTP是应用层协议,传输层使用的是TCP协议,网络层使用的是IP协议。

    IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠的传递数据包,使在网络上的另一端收到发送端发出的所有包,并且顺序与发出顺序一致,HTTP协议主要基于TCP协议完成数据传递。

  • HTTP服务介绍

    HTTP(Hyper Text Transfer Protocol)即超文本传输协议,采用请求/响应模型,是目前互联网使用最为广泛的一种网络协议。主要的过程:客户端向服务器发送一个请求,请求的请求头包含请求的方法、URI、协议版本、请求修饰符、客户信息、以及请求的内容等信息;服务器以一个状态行作为响应,包括消息协议的版本、成功或者错误编码、服务器信息、实体元信息以及实体内容。http服务默认端口是80,https默认端口是443。下图为HTTP服务简单的处理图。

    http服务处理图

    本着实用主义,本文不对http协议的原理做过多解释,只是分享一下日常使用Chrome调试http服务的经验,希望能得到同行们的指点。