深入分析Java Web技术内幕 深入Web请求过程 学习笔记 1

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命令查看域名解析过程

深入分析Java Web技术内幕 深入Web请求过程 学习笔记 1_第1张图片
深入分析Java Web技术内幕 深入Web请求过程 学习笔记 1_第2张图片
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访问不同的服务器
	集群负载均衡
		硬件负载均衡
			使用一台专门硬件设备来转发请求
		软件负载均衡
	操作系统负载均衡
		使用操作系统级别的软中断和硬中断来达到负载均衡

你可能感兴趣的:(Java)