http 与https

常见状态吗
  • 100 表示确认
  • 200 ok
  • 201 创建新资源
  • 301 重定向
  • 400 请求格式错误
  • 403 禁止访问
  • 404 not found 找不到如何与URI匹配的资源
  • 500 服务器端错误
一个页面从输入URL到页面加载完成,这个过程都发生了什么?
  • 浏览器会开启一个线程来处理这个请求,对URL分析判断如果是http协议就按照web的方式处理,
  • 调用浏览器内核中的对应方法,比如webview中的loadurl方法,
  • 通过DNS解析获取网址的IP地址,设置UA等信息发出第二个GET
  • 进行HTTP协议绘画,客户端发送报头
  • 进入到web服务器上的WebServer,如Apache,Tomcat,Node.JS等服务器
  • 进入部署好的后端应用,如PHP\Java\JavaScript\Python,找到对应的请求处理。
Http 2.0 和 http/1.x区别
  • 使用二进制协议代替文本协议,更加简洁高效
  • 针对每个域只使用一个多路复用的连接
  • 压缩头部信息减小开销(header compression)
  • 允许服务器主动推送应答到客户端的缓存中(server push)
  • 提供了更多加密支持

url、uri和urn的理解

uri: uniform resource identifier,统一资源标志符
url:uniform resource locator,统一资源定位符
urn:uniform resource name,统一资源名称
url 肯定是一个uri,但是一个uri不一定是一个url。url仅仅是uri的一种表现形式,

http 的Header内容:
  • Accept 能够接受的回应内容类型,
  • Accept-Charset 能够接受的字符集(utf-8)
  • Accept-Encoding 能够接受的编码方式列表
  • Accetpt-Language 能够接受的回应内容的自然语言列表
  • Authorization 用于超文本传输协议的认证的认证信息
  • Content-MD5请求体内容的二进制MD5散列值,以Base64编码的结果。

Tcp链接

当网络通信采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个链接,读写操作完成之后,不再需要这个链接时,它们可以释放这个链接,连接的建立需要三次握手,而释放需要四次握手,所以每个链接的建立都是需要资源消耗和时间消耗的。

TCP短连接

模拟一下短连接的情况,client向server发起连接请求,server接到请求,然后双方建立连接。client向server发送消息,server回应client,然后依次读写就完成了,这时候双方任何一个都可以发起close操作,不过一般都是client先发起close操作,因为一般server不会回复完就立即关闭连接的,当然不排除有特殊的情况。所以,短连接一般只会在client/server间传递依次读写操作。
短连接的优点是:管理起来比较简单,存在的连接都是有用的连接,不需要额外的控制手段。

TCP长连接

长连接的情况,client向server发起连接,server接受client连接,双方建立连接。Client与server完成依次读写之后,它们之间的连接并不会主动关闭,后续的读写操作会继续使用这个连接。
TCP/IP上讲到TCP保活功能,保活功能主要为服务器应用提供,服务器应用希望知道客户主机是否崩溃,从而可以代表客户使用资源,如果客户已经消失,使得服务器上保留一个半开放的连接,而服务器又在等待来自客户端的数据,则服务器将则服务器将一直等待哭护短的数据,保活功能就是试图在服务器检测到这种半开放的连接。
如果一个给定的连接在两小时内没有任何的动作,则服务器就向客户发一个探测报文段,客户主机必须处于以下4中状态之一:

  1. 客户主机依然正常运行,并从服务器可达。客户的TCP响应正常,而服务器也知道对方是正常的,服务器在两小时后将保活定时器复位。
  2. 客户主机已经崩溃,并且关闭或者正在重新启动。在任何一种情况下,客户的TCP都没有响应。服务端将不能收到对探测的响应,并在75秒后超时。服务器总共发送10个这样的探测,每个间隔75秒。如果服务器没有收到一个响应,他就认为苦主机已经关闭并终止连接。
  3. 客户主机崩溃并已经重新启动。服务器将收到一个对其保活探测的响应,这个响应是一个复位,使得服务器终止这个连接。
  4. 客户机正常运行,但是服务器不可达,这种情况与2类似,TCP能发现的就是没有收到探查的响应。

二者的产生在于client和server采取的关闭策略。## Tcp链接
当网络通信采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个链接,读写操作完成之后,不再需要这个链接时,它们可以释放这个链接,连接的建立需要三次握手,而释放需要四次握手,所以每个链接的建立都是需要资源消耗和时间消耗的。

TCP短连接

模拟一下短连接的情况,client向server发起连接请求,server接到请求,然后双方建立连接。client向server发送消息,server回应client,然后依次读写就完成了,这时候双方任何一个都可以发起close操作,不过一般都是client先发起close操作,因为一般server不会回复完就立即关闭连接的,当然不排除有特殊的情况。所以,短连接一般只会在client/server间传递依次读写操作。
短连接的优点是:管理起来比较简单,存在的连接都是有用的连接,不需要额外的控制手段。

TCP长连接

长连接的情况,client向server发起连接,server接受client连接,双方建立连接。Client与server完成依次读写之后,它们之间的连接并不会主动关闭,后续的读写操作会继续使用这个连接。
TCP/IP上讲到TCP保活功能,保活功能主要为服务器应用提供,服务器应用希望知道客户主机是否崩溃,从而可以代表客户使用资源,如果客户已经消失,使得服务器上保留一个半开放的连接,而服务器又在等待来自客户端的数据,则服务器将则服务器将一直等待哭护短的数据,保活功能就是试图在服务器检测到这种半开放的连接。
如果一个给定的连接在两小时内没有任何的动作,则服务器就向客户发一个探测报文段,客户主机必须处于以下4中状态之一:

  1. 客户主机依然正常运行,并从服务器可达。客户的TCP响应正常,而服务器也知道对方是正常的,服务器在两小时后将保活定时器复位。
  2. 客户主机已经崩溃,并且关闭或者正在重新启动。在任何一种情况下,客户的TCP都没有响应。服务端将不能收到对探测的响应,并在75秒后超时。服务器总共发送10个这样的探测,每个间隔75秒。如果服务器没有收到一个响应,他就认为苦主机已经关闭并终止连接。
  3. 客户主机崩溃并已经重新启动。服务器将收到一个对其保活探测的响应,这个响应是一个复位,使得服务器终止这个连接。
  4. 客户机正常运行,但是服务器不可达,这种情况与2类似,TCP能发现的就是没有收到探查的响应。

二者的产生在于client和server采取的关闭策略。