http的一些基础

1.如何发起一次http请求跟与socket建立连接区别不大

socket:

1. 服务端开启8888端口,并监听着,时刻等待着客户端的连接请求 
2. 客户端知道服务端的ip地址和监听端口号,发出请求到服务端 
客户端的端口地址是系统分配的,通常都会大于1024 
一旦建立了连接,服务端会得到一个新的Socket对象,该对象负责与客户端进行通信。 

以下代码演示客户端与服务端socket建立连接:

package socket;
  
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
   
public class Server {
   
    public static void main(String[] args)  {
        try {
            //服务端打开端口8888
            ServerSocket ss = new ServerSocket(8888);
               
            //在8888端口上监听,看是否有连接请求过来
            System.out.println("监听在端口号:8888");
            Socket s =  ss.accept();
               
            System.out.println("有连接过来" + s);
             
            s.close();
            ss.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
           
    }
}
package socket;
  
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
   
public class Client {
   
    public static void main(String[] args)  {
           
        try {
            //连接到本机的8888端口
            Socket s = new Socket("127.0.0.1",8888);
            System.out.println(s);
            s.close();
        } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

2.http请求头,响应头,状态码

3.查看http信息工具:Firebug

4.浏览器缓存机制:Ctrl+F5,再次向URL目标发起请求,会忽略浏览器的缓存:因为在http的request header会加上Cache-control:no cache

5.DNS域名解析:将URL的域名解析成IP地址。(世界上整个互联网有几个DNS根域名服务器,任何一个服务器坏掉都会造成不可预计的严重后果)

6.DNS域名解析过程:

                     

1.浏览器会检查缓存中有没有这个域名对应的解析过的IP地址,如果有,解析工作就结束了;
   1.1缓存机制:浏览器对域名的缓存是有限制的,一是浏览器缓存大小的限制,二是缓存的时间的限制。限制的时间不可太长也不可太短,太长的话如果域名对应的IP有所改变,那缓存的IP就是废弃的了,是请求不到的。太短的话,那就需要频繁解析域名。

2.如果用户的浏览器缓存中没有,浏览器会查找操作系统缓存中是否有这个域名对应的解析结果;
   2.1操作系统域名解析过程:
操作系统也会有一个域名解析的过程,在c:/windows/System32/driver/etc/hosts文件来设置,可以将任何域名解析成任何一个能够访问的IP地址,如果你在这里制定了一个IP地址,那么浏览器会首先使用这个地址。应用:测试时,可以将域名解析到一个测试服务器上面。当然,黑客也可以利用这一点来劫持域名。

---------------------------------混割线------------------------------------------

以上是在缓存上查找解析好的,下面讲真正的域名服务器来进行域名解析工作。

3.我们的网络配置中都会有“DNS服务器地址”,如果前面两项没能够完成解析那么操作系统就会把域名发送至LDNS,也即是本地域名服务器。比如你在小区接入互联网,那么这个LDNS就是网络提供商,就是电信,联通。ps:大部分(80%)的域名解析工作都可以在这里完成。

4.如果LDNS还是没有命中,就会把域名解析的工作交给root server

5.root server把gTLD(主域名服务器,世界上只有十几台,com,org,cn)返回给LDNS

6.LDNS再向gTLD发送请求

7.gTLD返回给LDNS,该域名对应的 name server域名服务器的地址,name server就是你注册的域名服务器,例如你在阿里云申请了一个域名,那么这个域名解析工作就由这个域名服务器来完成

8.Name Server域名服务器会查询存储的域名和IP的映射关系表,返回一个IP地址给LDNS

9.LDNS返回IP和tll值,然后LDNS会缓存这个域名和IP的对应关系

10.把解析的结果返回给用户,用户根据TTL值缓存在这个bendi系统缓存中,域名解析工作完成

注:在实际的DNS解析过程中会更加复杂,比如Nam eServer 就会有多级,或者有一个GTM来负载均衡控制

---------------------------------------------------------------------------------混割线--------------------------------------------------------------

CDN工作机制:内容分布网络,Content Delivery Network。

1.概念:cdn是构筑在现有Internet上先进的流量分配网络,其目的是在现有的Internet上增加一层新的网络架构,将网站的内容发布在最接近用户的网络“边缘”,使得用户可以就近取得所需的内容,提供用户访问网站的速度。cdn很强大,CDN=整体负载均衡+镜像+缓存。因而,cdn可以明显提升信息流动效率。

2.工作:目前CDN的主要工作就是缓存网站中的静态数据,用户从主站服务器请求到动态内容后再从CDN上下载这些静态数据,从而加快加速网页数据内容的下载速度,如淘宝就由90%以上的数据都放在CDN上。

3.基本/核心要求:

可扩展、安全性(减少因为ddos攻击或其他恶意行为造成商务业务中断)、可靠性(通过负载均衡及时提供网络的容错机制)

4.CDN架构

                       

如果一个用户访问某一个静态文件,这个静态文件的域名假设是cn.taobao.com,由LDNS发起请求,请过一系列的请求返回请求返回,请求会指向CDN全局中的DNS负载均衡服务器,再由这个GTM来分配是哪个地方的访问用户,返回给离这个访问用户最近的CDN节点。

-----------------------------------------小混割线----------------------------------

负载均衡:

1.概念:负载均衡就是对工作任务进行平衡,分摊到多个操作单元上执行,如图片服务器,应用服务器,共同完成工作任务。它可以提高服务器响应速度以及利用效率,避免软件或者硬件出现单点失效,解决网络拥堵,实现地理无关性,提供给用户一致的网络服务。

2.三种负载均衡架构:链路,集群,操作系统负载均衡

     2.1链路负载均衡:通过DNS解析成不同的IP,然后用户根据不同的IP来访问不同的目标服务器。

     2.2集群负载均衡

           2.2.1硬件负载均衡:性能好但是贼贵

           2.2.2软件负载均衡:使用成本低,利用廉价的PC就可以搭建,缺点就是一次访问请求需要多次代理服务器,会增加网络延时。

     2.3操作系统负载均衡:略

注:这几种负载均衡不仅在CDN的集群中能使用,而且在web服务或者分布式数据集群中同样可以使用。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值