1.互联网架构遵守原则
URL,统一资源定位符。互联网上的资源都是使用一个URL表示。
必须基于HTTP与服务端进行交互。
数据展示必须在浏览器中。
2.HTTP请求
根据地址栏中的URL域名DNS解析出IP地址。
根据地址和端口号与远程服务器建立Socket连接。
浏览器将该URL组装成一个get类型的HTTP请求头,通过outputStream.write发送到目标服务器
服务器通过inputStream.read返回数据。
断开连接
总之:发起一个HTTP请求的过程,就是建立一个Socket通信的过程。
3.HTTP Header
控制着成千上万的用户的数据传输。
控制着浏览器渲染行为和服务器的执行逻辑。
4.常见的HTTP请求头
请求头 | 说明 |
---|---|
Accept-Charset | 用于指定客户端接受的字符集 |
Accept-Encoding | 用于指定可接受的内容编码,如Accept-Encoding:gzip.deflate |
Accept-Language | 用于指定一种自然语言,如Accept-Language:zh-cn |
Host | 用于指定被请求资源的Internet主机和端口号,如Host:www.tabao.com |
User-Agent | 客户端将它的操作系统、浏览器和其他属性告诉服务端 |
Connection | 当前连接是否保持,如Connection:Keep-Alive |
5.常见的HTTP响应头
响应头 | 说明 |
---|---|
Server | 使用的服务器名称,如:Server:Apache/1.3.6(Unix) |
Content-Type | 用于指明发送给接收者的实体正文的媒体类型,如Content-Type:text/html;charset=utf8 |
Content-Encoding | 与请求报头Accept-Encoding对应,告诉浏览器服务器端采用的是什么压缩编码 |
Content-Language | 与Accept-Language对应,描述了资源所用的自然语言 |
Content-Length | 指明实体正文的长度,用以字节形式存储的十进制数字表示 |
Keep-Alive | 保持连接的时间,如Keep-Alive:timeout=5,max=20 |
6.常见的HTTP状态码
状态码 | 说明 |
---|---|
200 | 客户端请求成功 |
302 | 临时跳转,跳转的地址通过Location指定 |
400 | 客户端请求有语法错误,不能被服务器识别 |
403 | 服务器接收到请求,但拒绝提供服务 |
404 | 请求的资源不存在 |
500 | 服务器发生不可预期的错误 |
7.域名解析过程
第一步:去浏览器中查看是否有缓存
第二步:查看操作系统是否有缓存
linux和windows可以通过nslookup查看域名的解析过程
linux系统中还可以通过dig命令查看域名解析过程
8.域名缓存清除
windows:ipconfig /flushdns
linux: /etc/init.d/nscd restart
9.Java域名缓存
JVM通过InetAddress进行域名解析缓存
正确解析结果缓存和失败解析结果缓存
缓存时间:$JAVA_HOME/jre/lib/security/java.security
networkaddress.cache.ttl=-1
networkaddress.cache.negative.ttl=10
10.CDN工作机制
Content Delivery NetWork 内容分布网络。
在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络“边缘”,使用户可以就近获取到指定内容。
目前CDN以静态内容为主,如CSS、JS、图片和静态页面等数据。
11.负载均衡
架构:
链路负载均衡
将域名解析成不同的IP,用户通过IP访问不同的服务器
集群负载均衡
硬件负载均衡
使用一台专门硬件设备来转发请求
软件负载均衡
操作系统负载均衡
使用操作系统级别的软中断和硬中断来达到负载均衡