域名查找的过程
- 某一个应用进程需要把主机名解析为IP地址时,该应用进程就调用解析程序(resolver),并成为DNS的一个客户,把待解析的域名放在DNS请求报文中,以UDP用户数据报方式发给本地域名服务器。本地域名服务器在查找域名后,把对应的IP地址放在回答报文中返回。应用进程获得目的主机的IP地址后即可进行通信。
- 若本地域名服务器不能回答该请求,则此域名服务器就暂时成为DNS中的另一个客户,并向其他域名服务器发出查询请求。这种过程直至找到能够回答该请求的域名服务器为止。
HTTP
- HTTP是面向事务的(transaction-oriented)[插图]应用层协议。
- 所谓事务(transaction)就是指一些列的信息交换,而这一系列的信息是一个整体,要么所有信息都交换,要么不交换。
- 每个万维网网点都有一个服务器进程,它不断地监听TCP的端口80。
- HTTP协议是无状态的(stateless)。也就是说,同一个客户第二次访问同一个服务器上的页面时,服务器的响应与第一次被访问时的相同。
- 客户端向服务器请求数据,通过TCP三次握手的第三次握手把请求信息发给服务器,服务器收到后返回。一共经历两倍的RTT时间。
HTTP1.0 和 HTTP1.1的区别
- HTTP1.0 每次发起请求需要三次握手,请求后立即释放TCP链接。
- HTTP1.1 支持持久链接,通过header中的Keep-Alive控制。请求后不会释放TCP链接。后续请求直接请求数据不用三次握手了。
- HTTP1.1 许客户端不用等待上一次请求结果返回,就可以发出下一次请求。
- http管道 不使用管道的http请求,在使用持久链接时,必须严格满足先进先出的队列顺序(FIFO),即发送请求,等待响应完成,再发送客户端队列中的下一个请求。管道可以让我们把 FIFO 队列从客户端(请求队列)迁移到服务器(响应队列),即客户端可以并行,服务端串行。客户端可以不用等待前一个请求返回,发送请求,但服务器端必须顺序的返回客户端的请求响应结果。
- HTTP1.1 可以打开多个TCP链接,用于并行接收数据。
- HTTP1.1 Connection: 请求头的值为Connection时,客户端通知服务器返回本次请求结果后保持连接;Connection请求头的值为close 时,客户端通知服务器返回本次请求结果后关闭连接.
- HTTP/2是HTTP协议自1999年HTTP1.1发布后的首个更新,主要基于SPDY协议。 SPDY是Speedy的昵音,意为“更快”。它是Google开发的基于TCP协议的应用层协议。SPDY协议的核心思想是尽量减少TCP连接数。