@Sakura-W
2015-08-23T11:58:07.000000Z
字数 2078
阅读 1634
前端
1.首先接入网络的计算机/路由器都要有一个ip地址,例如Alice的ip地址是120.0.0.2,Bob的ip地址是150.0.0.2。
2.Alice发送HTTP数据给Bob,实际上是Alice机器上的的进程a发送数据,Bob机器上的的进程b在接收数据,因为真正想要数据的进程才是最终应用层。
3.进程a发送数据是通过socket发出去,socket需要绑定一个端口,用于区分计算机内的不同进程。进程a使用的socket绑定了2048端口,进程b使用的socket绑定了4096端口。
4.所以Alice跟Bob通信实际上等价于:120.0.0.2的2048端口发送数据到150.0.0.2的4096端口
1.进程a先把数据打包好,贴上HTTP协议头部信息:来自Chrome浏览器,需要Bob的Index.html
2.再打包贴上TCP协议头部:发送端口是2014,接受端口是4096
3.继续包装贴上IP协议头部:发送地址是120.0.0.2,接受地址是150.0.0.2
4.然后由网络将数据进行发送
路由器负责将数据包传递到下一个路由器,知道传到目的计算机
1.计算机接收到来自150.0.0.2的包,解开后发现是送到端口4096的,于是几把数据包丢给了进程b(进程b使用的socket绑定了4096端口)
1.协议的目的就是让通信的双方知道当前这个数据包是怎么样一个组成格式,一般:包头就是双方约定好的一些信息,包体就是这次通信传输的数据。协议==包头+包体,包头就是相关协议,包体就是数据本身。
2.HTTP:当浏览器输入一个URL,相当于浏览器发起一个HTTP请求包出去,浏览器会把一些自身信息以及用户操作的信息写在包头上带到服务器,这样服务器才知道你在用什么浏览器想请求它的什么资源。紧接着服务器收到HTTP请求,经过CGI处理之后回复一个HTTP响应包,服务器需要告诉你包里边是什么(Content-Type),包里边有多少东西(Content-Length),服务器版本是什么等等。
3.HTTPS的加密:非对称
1.DNS:域名系统,它是域名和IP地址相互映射形成的一个分布式数据库。
2.一般来说,浏览器会先询问本地DNS缓存,如果没有记录过这个域名映射的IP,那就向本地的DNS网关询问,如果网关也不知道,就继续往上一层的DNS服务器询问,直到拿到这个IP地址。
1.一般来说,浏览器跟真正提供Web服务的机器是没有直接连接的,他们中间都会有代理跟反向代理。
2.大部分的公司都会内部的计算机都配置了代理服务器,其作用是所有内部的网络请求都是通过代理去连接对方服务器,可以在代理服务器这里做恶意请求/响应的拦截,还可以缓存内部网络所需的公共资源。
3.反向代理就是以代理服务器来接收网络连接请求,我们上下文称Proxy机器指的就是反向代理机器,Proxy机器收到请求后会经过一定的分析最后把请求内容转发给内网对应的Web服务器,Web服务器的HTTP响应包会先到Proxy机器,然后再到用户机器。
4.Proxy机器负责负载均衡、拦截恶意请求、维持长连接,还可以屏蔽不工作的Web服务器;而Web服务器就只要关心自己处理的Web业务逻辑即可。
1.Web server的职责就是根据用户的请求,返回其所需要的响应内容。往往Web server只涉及业务测逻辑的判断以及数据的组装,而真正的数据位于后端的存储Server
1.对于动态的内容,请求总是到Web server去动态计算获取内容,但是对于不随用户状态变化的内容我们把内容推送到CDN节点上。
2.一般Web应用把静态内容推到CDN有两种模式,一种是在上线前主动将内容推送到CDN节点,一种是CDN发现本地没有该文件时,回源到Web server机器取内容,然后缓存在他本地。
1.资源:就是相关文件——描述页面结构的HTML文件;网页的样式CSS文件;网页的脚本JS文件;网页的音频/视频/Flash……
2.上线:上线 == 把资源放上Web服务器
3.资源分类:像JS文件、CSS文件这些资源对于所有用户来说都是一样的,我们把它们归类到静态资源。对于不同用户,它们看到的网页其实是不一致的(例如页面里边有他们各自的昵称,id等信息),这是通过CGI程序实时计算,为不同用户生成不同的HTML产生,我们把这样的HTML资源归类为动态资源。
4.灰度上线:倘若我们有一个非常重要的更新,或者做了一个可能对后台服务器有压力的功能,我们可以通过控制这个上传的过程先让小部分用户体验,确认新功能在各方面都正常(包括:用户体验、服务器压力等等)之后,我们才把这次更新慢慢部署到所有服务器上。在灰度上线过程中,新/旧两套资源是同时存在现网服务的。
SVN:代码版本控制系统