web基础
- 网络通信的要素:IP、端口、协议
- 协议:一般使用TCP协议,tcp是可靠,安全的传输协议
- IP:主机在网络中的唯一标识
- 端口:tcp协议通信要求使用IP+端口的格式,以区分不同主机的不同服务
- IP地址并不好记,所以有了域名的概念
- baidu.com是百度的域名,14.215.177.39是百度的IP,两者一一对应,访问baidu.com实际上就是在访问14.215.177.39,只是域名会比较好记
- dns:将域名解析成IP地址的服务
- dns解析的三种方式以及优先级(面试题)
- 1./etc/hosts本地文件,手动添加对应的域名和IP。本地解析速度最快。
可以看到在ping www.daizhendong.com时实际上ping 了192.168.188.12 - 2./etc/resolv.conf添加dns域名服务器地址,在这里添加的nameserver地址是提供dns服务的地址,当本地无法找到目标域名对应的IP地址时,就会去这些服务器接着找。格式是:nameserver 218.1.1.10
- 3./etc/sysconfig/network-scripts/ens33 网卡配置文件,在配置网卡时写的dns1,dns2等等,当配置生效时其实会按顺序写入/etc/resolv.conf,从而达到指定域名服务器地址的作用
- 优先级顺序是1>3>2
- 1./etc/hosts本地文件,手动添加对应的域名和IP。本地解析速度最快。
分布式和集群
- 概念
- 分布式:把计算机系统或者应用程序分别部署在多台独立的计算机或者服务器上,这些计算机或者服务器通过网络互相通信和协作,共同完成特定的任务或者提供服务。
如果把一台计算机比作一个人,那么分布式相当于一条流水线,每一个工位上的人只需要做自己对应的事就行,不需要一个人全干完。 - 集群:在分布式的基础上,在每个工作节点上,将多台服务器或者计算机连接在一起,形成一个单一的计算机资源池。这些计算机通过网络连接,共享任务和资源负载,实现高性能和高可用。集群当中的服务器一般都是由相同规格的计算机组成,而且运行相同的应用程序或者服务。
如果把一台计算机比作一个人,集群就相当于流水线上每一个岗位由多个人一起负责,而不是像以前那样一个岗位一个人。
- 分布式:把计算机系统或者应用程序分别部署在多台独立的计算机或者服务器上,这些计算机或者服务器通过网络互相通信和协作,共同完成特定的任务或者提供服务。
- 域名就是分布式结构
- html:超文本标记语言。是一种规范和标准,通过标记符号来标记要显示的网页中的各个部分。本身就是一个文本文件,通过添加标记符,告诉浏览器如何显示其中的内容。
在网页中按F12可以打开开发者工具,看到该网页的html代码 - 网页
- 概念:纯文本格式的文件
- 编写的语言:html
- 翻译语言:一般由浏览器提供翻译
- 网站:由多个网页组成的整体
- 首页:打开网站看到的第一个页面
- 域名:网站的访问地址
- 传输协议:http/https
- URL:比如说https//www.bilibili.com,这个完整的链接就是URL
- URI:下面图片中的/v/dance/,就是URI,是网站的分支页面
- 超链接:将网站中不同页面连接起来的链接
- web
- 概念:全球广域网、万维网,一种分布式图形信息系统,建立在internet上的一种网络服务
- 版本
- web1.0已经淘汰,因为他只能提供静态页面访问
- web2.0是主流,核心是“交互”,用户既是网站内容的消费者,同时也是网站内容的制造者。加强了网站和用户之间的互动。用户和网站之间可以双向交流。这就是所谓的动态页面
- 静态页面和动态页面
- 静态页面:标准的html文件,一般以.html或者.htm为后缀的文件,主要内容就是文本、图像、声音、动画等。没有后台的数据库,也不包含交互的功能,所以访问速度很快,但是更新比较麻烦。现在一般都用来做展示型的网站。另外静态页面都有固定的地址(URL),内容稳定,所以更容易被搜索引擎检索到。
- 动态页面:页面URL可能不固定,有后台(一般都是数据库)。动态页面的url中会有一个标志性的“?”,编写语言有PHP、JSP、python、ruby等等。优点是交互性强、自动更新等。实时弹幕就是这些有点的体现。
http协议
- http
- 超文本传输协议,互联网中应用最广的网络协议。基于tcp协议的应用层传输协议,是客户端和服务端之间的传输规则。客户端和服务端在三次握手之后建立tcp连接,建立连接之后发送http请求与http响应都是通过socket(套接字、端口)调用来实现数据传输
- http是一种无状态协议:即连接状态不是由http自己控制的,而且http协议本身不会对请求和响应的通信状态进行持久化处理,持久化处理主要有两方面:
- 连接保持(http1.1后实现):基于tcp协议的连接状态的控制
- 会话保持(cookie):在访问网站时,用户的所有行为和状态是统一的
- cookie:一种缓存数据。记录用户的登录状态,跟踪统计用户访问网站的习惯,识别用户的身份(保存账号密码),保存在本地计算机上的一个小文件。但是有时效性(30天-半年,可以人工控制,也就是可以删除)
- 重点解析:连接保持和会话保持的概念,好比两个人打电话,从拨打电话到挂断的整个过程就是连接保持,两个人就算不说话,但是只要电话没断开,那就是连接保持。会话保持就是说电话接通后,两个人互报姓名,一个是A,一个是B,那么就认定是这两个人在通话,A给B分配任务也好,B有事求A也好,都是这两个人之间的事,跟其他人没关系,也不需要打到一半再确认谁是谁。具体的表现就是客户端发起的请求都会被同一台服务器处理,用户访问一个网站的不同网页时就不需要多次进行登录等操作。
- http的工作方式
- 建立连接,http协议的默认端口:80,也就是客户端向服务端的80端口发送连接请求。
- 请求的方式有:get、post
- 服务端收到请求后进行处理,根据请求的方式,请求的内容做出相应的处理
- 服务端返回响应:处理请求完成之后,服务端会生成一个http响应,响应行会包含一个状态码:代表对客户端请求的处理结果
- 状态码的类型以及含义
1xx 100-101 信息提示
2xx 200 请求成功
3xx 300-305 重定向(页面跳转) 304表示请求的是本地缓存
4xx 400-415 客户端错误
5xx 500-505 服务端错误 - 常用状态码
200 OK 请求成功
301 永久重定向
302 临时重定向
403 禁止访问该页面,客户端无权限访问
404 not found 服务端无法找到客户端请求的页面
500 内部服务器错误
502 网关失效
503 当前服务不可用
504 网关请求超时 - 如果访问nginx提供的网站服务,但是报错,状态码是500,如何找到问题
1.看服务日志:配置文件是否出错、端口号是否被占用;
2.看系统日志:防火墙策略是否正确、服务状态是否正常;
3.看硬件:网卡设备是否正常、网线是否老化松动、路由器是否配置了对应的转发策略以及是否对域名或者IP地址做了访问控制(ACL)。
- 状态码的类型以及含义
- 响应之后,传输数据:通过之前和客户端建立的连接将响应发送到客户端。通过tcp连接传输数据
- 数据传输完成,四次挥手,进入time_wait状态,60-120秒后,无数据传输,断开连接
- 建立连接,http协议的默认端口:80,也就是客户端向服务端的80端口发送连接请求。
- http的版本
- http0.9 已淘汰
- http1.1 连接保持,一次性获取页面的所有内容
- https 默认端口443,http1.1主要是为https提供服务
- http2.0 ,1.1的升级版,提供性能和加载速度(少用)
- http1.1的特点
- 缓存机制(第三方提供,比如cookie),http1.1的缓存功能主要是控制缓存策略
- 带宽优化,http1.1可以控制请求的资源只能访问特定的部分,相关返回码:206,访问被限制,因此资源是可控的
- 长连接(keep-alive,连接保持),即使四次挥手,连接也没有断开,进入time_wait状态,这个状态虽然占用的资源很少。
- http请求的方法(get和post):
- get:主要作用就是查看和获取数据
- 只是向服务端发送请求数据,只是请求,没有其他内容
- get的请求方式可以被缓存
- 只有get的请求会被记录在cookie中
- get的请求长度受限
- get请求url会显示完整的路径
- get方式的特点:
- 有一个请求头部,包含请求行、请求的资源路径以及请求的协议和版本Accept:客户端可以解析的文件类型。
Accept-Encoding:客户端可以接受的编码格式
Accept-Language:客户端可以接受的语言类型
Cache-Control:客户端可以支持的缓存的最大时间。
Connection: 告诉服务端请求要如何处理(连接保持)
Host:请求的客户端ip和端口号
User-Agent:客户端访问服务端的操作系统和浏览器版本。 - 响应头部:由服务端发起,客户端请求什么,服务端就响应指定的内容
- 有一个请求头部,包含请求行、请求的资源路径以及请求的协议和版本Accept:客户端可以解析的文件类型。
- post:可以向服务端发送数据,而且可以修改后台服务器上的数据
- post的请求没有缓存
- post的请求不会被记录在cookie中
- post请求没有长度限制
- post请求没有url的路径显示
- get:主要作用就是查看和获取数据
https
- 加密的http协议。在传输数据的过程中,对通信内容进行加密,可以防止在通信过程中被窃听、篡改和伪造。
- 客户端和服务端之间交换密钥,进行身份认证,确保只有合法的接收方能够解密数据
- 认证方式:证书认证。https用数字证书来验证服务端的身份,客户端在与服务端建立连接时,会收到服务端的数字证书,确认服务端的真实性和合法性。确保客户端连接到正确的服务器。
- URL的信息也是经过加密的
- https可以在搜索引擎中被优先检索
- 性能:数据传输加密、解密会导致性能降低,不过对于现在的算法和硬件来说,几乎可以忽略不计。