HTTP相关

HTTP协议与DNS服务、TCP协议及IP协议之间的关系

HTTP相关

HTTP与HTTPS的区别

  • HTTP的 URL 以http://开头,而HTTPS的 URL 以https://开头
  • HTTP是不安全的,而HTTPS是安全的
  • HTTP的标准端口是80,而HTTPS的标准端口是443
  • 在OSI网络模型中,HTTP工作于应用层,而HTTPS的安全传输机制工作于传输层
  • HTTP无法加密,而HTTPS对传输的数据进行加密
  • HTTP无需证书,而HTTPS需要CA机构颁发的SSL证书

什么是HTTP无状态协议?如何解决HTTP无状态协议?

HTTP协议自身不对请求和响应之间的通信状态进行保存。也就是说在HTTP这个级别,协议对于发送过的请求或响应都不做持久化处理。这是为了更快地处理大量事务,确保协议的可伸缩性。

通过引入Cookie技术,实现对请求和响应之间的通信状态的持久化处理。

URI和URL的区别

  • URI(Uniform Resource Identifier)是统一资源标识符;URL(Uniform Resource Location)是统一资源定位符
  • URI是由某个协议方案表示的资源的定位标识符,用字符串表示某一互联网资源,而URL表示资源的地点(互联网上所处的位置),可见URL是URI的子集
  • 在Java的URI中,一个URI实例可以代表绝对的,也可以代表相对的,只要它符合URI的语法规则。而URL类不仅符合语义,还包含了定位该资源的信息,因此它不能是相对的。
  • 在Java类库中,URI类不包含任何访问资源的方法,它唯一的作用就是解析;而URL类可以打开一个到达资源的流。
  • URI一般由以下几部分组成
    • 登录信息(认证):指定用户名和密码作为从服务器端获取资源时必要的登录信息(身份认证)。此项是可选项。
    • 服务器地址:使用绝对URI必须指定待访问的服务器地址。地址可以是DNS可解析的域名、IPV4地址名、IPV6地址名。
    • 服务器端口号:指定服务器连接的网络端口号。此项也是可选项,若用户省略则自动采用默认端口号。
    • 带层次的文件路径:指定服务器上的文件路径来定位特指的资源。
    • 查询字符串:针对已指定的文件路径内的资源,可以使用查询字符串传入任意参数。此项也是可选项。
    • 片段标识符:可标记出已获取资源中的子资源(文档内的某个位置)。此项也是可选项。

常用的HTTP方法

HTTP方法 用途
GET 用来请求访问已被URI识别的资源
POST 用来传输实体的主体
PUT 传输文件
HEAD 获得报文首部,不返回报文主体部分。用于确认URI的有效性及资源更新的日期时间等
DELETE 按请求URI删除指定的资源,如文件等
OPTIONS 用来查询针对请求URI指定的资源支持的方法

常见的HTTP状态码

状态码 状态码英文名称 中文描述
200 OK 请求被正常处理
204 No Content 请求已成功处理,但在返回的响应报文中不包含实体的主体部分
204 Partial Content 客户端进行了范围请求,而服务器成功执行了这部分的GET请求。响应报文中包含由Content-Range指定范围的实体内容
301 Moved Permanently 永久性重定向
302 Found 临时性重定向
303 See Other 由于请求对应的资源存在着另一个URI,明确表示客户端应当采用GET方法定向获取请求的资源
304 Not Modified 服务器端资源未改变,可直接使用客户端未过期的缓存
307 Temporary Redirect 临时重定向,与302类似,但强制要求使用POST方法
400 Bad Request 请求报文中存在语法错误,导致服务器无法识别
401 Unauthorized 请求需要认证
403 Forbidden 对请求资源的访问被服务器拒绝
404 Not Found 服务器上无法找到请求的资源
500 Internal Server Error 服务器内部错误
503 Service Unavailable 服务器正忙

HTTP/1.1版本新特性

  • 持久连接:所以连接默认都是持久连接,节省通信量。即只要任意一端没有明确提出断开连接,则保持TCP连接状态
  • 管线化:支持同时并行发送多个请求,而不用一个接一个地等待响应了