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中状态之一:
- 客户主机依然正常运行,并从服务器可达。客户的TCP响应正常,而服务器也知道对方是正常的,服务器在两小时后将保活定时器复位。
- 客户主机已经崩溃,并且关闭或者正在重新启动。在任何一种情况下,客户的TCP都没有响应。服务端将不能收到对探测的响应,并在75秒后超时。服务器总共发送10个这样的探测,每个间隔75秒。如果服务器没有收到一个响应,他就认为苦主机已经关闭并终止连接。
- 客户主机崩溃并已经重新启动。服务器将收到一个对其保活探测的响应,这个响应是一个复位,使得服务器终止这个连接。
- 客户机正常运行,但是服务器不可达,这种情况与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中状态之一:
- 客户主机依然正常运行,并从服务器可达。客户的TCP响应正常,而服务器也知道对方是正常的,服务器在两小时后将保活定时器复位。
- 客户主机已经崩溃,并且关闭或者正在重新启动。在任何一种情况下,客户的TCP都没有响应。服务端将不能收到对探测的响应,并在75秒后超时。服务器总共发送10个这样的探测,每个间隔75秒。如果服务器没有收到一个响应,他就认为苦主机已经关闭并终止连接。
- 客户主机崩溃并已经重新启动。服务器将收到一个对其保活探测的响应,这个响应是一个复位,使得服务器终止这个连接。
- 客户机正常运行,但是服务器不可达,这种情况与2类似,TCP能发现的就是没有收到探查的响应。
二者的产生在于client和server采取的关闭策略。