计算机网络·基础知识·面经·HTTP

  • HTTP请求是指从客户端到服务器端的请求消息。
  • Http的状态码
    • 1XX 信息类,客户端应当继续发送请求
    • 2XX 成功状态码,表示请求被正确接收,理解,接受
    • 3XX 表示重定向
    • 4XX 表示客户端错误
    • 5XX 表示服务器错误
  • HTTP请求报文结构由4部分组成
    • (1)请求方法 资源名称(URI) 协议/版本, 只占一行
    • (2)请求头(Request Header),多行
    • (3)空行
    • (4)请求正文,一般是查询字符串信息, 有多种格式
    • 例子:
      • GET /hello.txt HTTP/1.1
      • Accept:image/gif.image/jpeg.*/* Accept-Language:zh-cn, en, mi Connection:Keep-Alive Host:localhost
      • Host: www.example.com User-Agent:Mozila/4.0(compatible:MSIE5.01:Windows NT5.0)
      • User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3 Accept-Encoding:gzip,deflate.
      • //请求头和请求正文之间是一个空行,这个行非常重要,它表示请求头已经结束,下面是请求正文
      • username=jinqiao&password=1234
  • HTTP响应报文结构由4部分组成
    • <status-line>//状态行 包括:服务器HTTP协议版本 响应状态码 状态码的文本描述 <headers>//消息报头 <blank line>//空行 <response-body>//响应体
    • 例子:
      • HTTP/1.1 200 OK //服务器HTTP协议版本 响应状态码 状态码的文本描述
      • Date:Sat,15Oct201115:39:29
      • <blank line>//空行
      • (空响应体)
  • HTTP持久连接分为流水线和非流水线两种方式
  • https在平时的项目中有用到过吗?
    • 涉及传递用户隐私时
    • 做javaweb项目时要把http改为https
  • HTTP协议建立在TCP之上
  • HTTP两种连接形式:无连接与Keep-Alive
    • 无连接是指客户端与服务器之间不保持TCP连接,每个HTTP请求都要求打开一个TCP连接,并且使用一次之后就断开这个TCP连接。
    • Keep-Alive的作用就是在第一次创建TCP连接时,服务器会把这个TCP连接保持一段时间。这样就可以在一次TCP连接中可以持续发送多份数据而不会断开连接。通过使用Keep-Alive机制,可以减少TCP连接建立次数。
  • HTTP无状态:
    • 无状态是指HTTP协议对于事务处理没有记忆能力。每次的请求都是独立的,它不会受前面的请求应答情况直接影响,也不会直接影响后面的请求应答情况。
    • 但基于HTTP协议的Web应用需要有状态(例如,购物车程序需要知道用户到底在之前选择了什么商品)。于是,用于保持Web应用状态的技术:Cookie与Session诞生了。

9. Http request的几种类型。

HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。 需要一些实战

Get获取由Request-URI所标识的资源的信息。

POST方法用于想服务器发送请求,传输实体主体。

HEAD方法与GET方法几乎是一样的, 它们的区别在于HEAD方法只是请求消息报头,而不是完整的内容。

HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法

put用于传输文件

10. Http1.1和Http1.0的区别

在 HTTP/1.0 中,大多实现为每个请求/响应交换使用新的连接。

HTTP/1.1 很快出来了,提出了持久连接(persistent connection)的概念,也就是说同一条 HTTP 连接,可以同时处理多个请求,同时用一定的机制保证各个请求之间的分离性。

. Http请求的过程与原理

http://www.cnblogs.com/GumpYan/p/5821193.html

HTTP请求的过程&HTTP/1.0和HTTP/1.1的区别&HTTP怎么处理长连接

. Http怎么处理长连接。

在HTTP1.0和HTTP1.1协议中都有对长连接的支持。其中HTTP1.0需要在request中增加”Connection: keep-alive“ header才能够支持,而HTTP1.1默认支持.

http://www.cnblogs.com/GumpYan/p/5821193.html

HTTP请求的过程&HTTP/1.0和HTTP/1.1的区别&HTTP怎么处理长连接

HTTP2

http2的新特性:多路复用 二进制分帧 首部压缩(Header Compression) 服务端推送(Server Push)

目前 HTTP2 协议已经逐渐普及到日常服务器中,以下对于 HTTP2 协议描述正确的是:ABCD

  • 所有http请求都建立在一个TCP请求上,实现多路复用
  • 可以给请求添加优先级
  • 服务器主动推送 server push
  • HTTP2的头部会减小,从而减少流量传输

http://www.runoob.com/http/http-messages.html

  • (超纲)http和socket的区别,两个协议哪个更高效一点

HTTP:超文本传输协议,首先它是一个协议,并且是基于TCP/IP协议基础之上的应用层协议。TCP/IP协议是传输层协议,主要解决数据如何在网络中传输,HTTP是应用层协议,主要解决如何包装数据。HTTP协议详细规定了浏览器与服务器之间相互通信的规则,是万维网交换信息的基础。HTTP是基于请求-响应形式并且是短连接,并且是无状态的协议。针对其无状态特性,在实际应用中又需要有状态的形式,因此一般会通过session/cookie技术来解决此问题。

Socket:Socket不属于协议范畴,而是一个调用接口(API),Socket是对TCP/IP协议的封装,通过调用Socket,才能使用TCP/IP协议。Socket连接是长连接,理论上客户端和服务器端一旦建立连接将不会主动断开此连接。Socket连接属于请求-响应形式,服务端可主动将消息推送给客户端。