web基础和http协议

dns于域名:

网络上的通信都是基于IP,通信模式:TCP/IP
tcp建立连接和断开连接,都是要双方进行确认的
建立连接:三次握手断开连接:四次挥手
通信时端到端端口进行通信(进程或者服务都是有指定的端口号。)
http 80  nginx 80  ssh 22  mysql 3306
ip地址:端口号  ip地址是主机在互联网上的唯一标识。

ip是确定身份  端口:确定访问对象。
公网ip地址已经没了,现在这个唯一标识(ip地址)需要nat地址转换。
ip地址是一个点分十进制组成的192.168.233.10
192.168.233:网络位10:主机位

dns解析:
网站都是域名,dns解析的作用是把域名解析成ip地址
迭代:从根域名到二级域
返回用户的过程:递归----运营商-----本地hosts----用户
三种方式:
1./etc/hosts本地解析,速度最快,缺点:如果需要配置的解析地址多,工作量比较大
格式
192.168.233.10 www.kgc.com
访问域名就是在访问ip地址

2.DNS服务器来进行解析
运营商:运营商提供一个DNS解析的ip地址。
/etc/resolv.conf
格式:
nameserver 218.2.135.1

3.网卡配置:ifcfg-ens33

生效的顺序:
hosts文件的优先级最高…- ----网卡配置--------dns服务器(resolv.conf)

分布式和集群

分布式:把计算机系统或者应用程序分布在多台独立的计算机或者服务器上。通过网络通信以及协作,共同完成特定的任务或者服务。工作负载分散到多个节点上,提高性能和可靠性。
分布式前端的nginx分布式数据库。分布式分件系统

集群:多台计算机或者服务器连接在一块,形成一个单一的计算资源池。计算机通过网络互相连接,共享任务,集群都是由相同类型的计算机组成。运行的程序也是相同的。
作用:通过增加计算机节点,扩展系统,然后提高整体的处理能力和容量。

LNMP架构:
部署L linux
n:nginx提供网页访问 nginx1 nginx2
M:MYSQL数据库,保存用户名和密码
p:PHP,处理动态页面。

html:超文本标记语言,也是我们最常见的网页格式。是一种规范,也是一种标准。也是一个文本文件。
xxx.html
xxx.htm

网页:纯文本格式的文件  语言HTML。浏览器来翻译html语言形成网页
网站:是由多个网页组成,网页的结合体。打开网站之后出现的第一个页面就是我们说的网站首页或者主页。
域名:域名需要注册,访问网站时输入的网址就是我们说的域名
传输方式:http/https
http:超文本传输协议,https:加密的超文本传输协议。靠ssl证书进行认证。网页的传输通信协议URL:万维网的寻址系统(唯一标识。)

uRI:www.baidu.com/test/index.html
/test后面的内容URI 匹配网站不同分支的内容
超链接:超链接把网站当中的不同内容连接起来。

web:world wide web全球广域网 也就是万维网
一种分布式的图形信息系统。
web1.0:看网页。
web2.0看,交互作用。用户不仅仅是看,还可以是网页内容的制造者。网站和用户可以双向交流。

静态页面和动态页面:

静态页面只是文本文件,可以修改,一般以.html.htm保存的文本文件。网站的基础。静态页面和后台数据库没有任何交互,不包含请求程序。
更新起来比较复杂。一般适用于更新比较少的展示型的网站,一般都是网站的主页。
静态页面的URL是固定的

动态页面:
1、url不是固定的,能通过后台和用户交互
2、动态页面的URL当中一般有个?号
3、动态页面:PHP,jsp python node.js
4、动态页面可以自动更新
5、访问的时间,访问的内容会发生变化。

http协议:

http协议:0.9淘汰
http1.0:基本淘汰
http1.1:目前最常用的https http 
http1.1主要服务于https,端口443,
1.1的特点就是提供了加密和安全传输的端口的一种http.
http2.0:新一代的加密协议,传输速度比http1.1的速度更快。

http协议:超文本传输协议,基于tcp协议的应用层传输协议。简单来说就是客户端和服务端之间进行数据传输的一种规则。
http是应用层上的协议。建立连接:三次握手,断开:四次挥手.建立连接之后,客户端于服务端之间请求和接受,响应都是通过socket接口来调用tcp协议实现。
端口到端口的通信。

http:是一种无状态协议,http协议本身不会对发送的请求和响应进行任何处理。http协议能够处理大量的事务,提高效率。http本身无状态,存在会话保持和缓存的问题。

http1.0是没有会话保持这个功能,http1.1,长连接加入到了http协议当中。

缓存:cookie记录用户状态,跟踪统计用户访问该网站的习惯,识别用户身份,保存客户信息。可以驻留在我们的计算机上。是一个很小的文件。保存特定的客户端和网站之间的信息数据。
时效性:30天保存的信息就会失效。
客户端的ip地址验证:安全验证。

http的工作流程。

客户端-服务端通信过程
请求…-响应的模型。
建立连接:tcp/ip协议与服务器建立连接(三次握手),客户端向服务器的80端口发送连接请求。
发送请求:一旦连接建立之后,客户端向服务端发送http请求。http请求:由一个请求行和多个头部字段组成。请求方式:get post
服务端处理请求:根据请求的方式和内容进行处理。服务端会读取请求头的字段,解析参数,处理数据等等。

服务端返回响应:形成一个http响应,响应由一个响应行,包含多个字段。响应内容包含重要的内容状态码,用于表示服务端对于请求的处理结果。

http的状态码:

1xx 信息提示
    100-101无实际作用。
2xx 成功    请求处理结果成功
   200
3xx 重定向
    304表示请求的是缓存。
4xx 客户端错误
    403 404 请求的页面不存在或者没有权限访问。
    403:请求的页面禁止访问
     404:服务器无法请求的页面。
5xx:服务端错误
    500内部服务器错误。500检查防火墙,检查进程也就是服务状态,检查端口。检查配置 
    文件。
    502无效网关
    503请求的服务器不可用,可能下线了。
    504网关请求超时。

生产当中常见的状态码:

200  ok请求成功
301  永久重定向
302  临时重定向
304  访问的是本地缓存
403 Forbidden 禁止客户端访问该页面
404 NOTFOUND服务器无法找到被请求的页面
500 inetnal server error 内部服务器错误。
502 BAD geteway 网关失效。(服务端的网关失效)
503 server Unavailable 服务器不可用(网站维护。)
504 GATEWAY timeout网关请求超时(服务端处于维护或者路由器故障)

传输数据:一旦服务器生成了http响应,会通过之前建立的连接将响应返回给客户端。响应当中包含了请求的资源(网页内容)以及其他的需要传输的数据(一般是自定义)

关闭连接:响应发送完成,服务端就会进入连接关闭,http1.1 time_wait。双方还在建立连接,双方之间不再有数据传输。一旦有新的请求,连接可以继续使用。160秒会话保持或者长连接。
http1.1会一次性获取页面的全部资源,然后发起四次挥手。只是不再传输数据。连接并没有断开。

客户端解析和现实响应:客户端收到http响应之后,解析响应内容,包括页面解析,显示图片,播放视频。主要靠的就是浏览器。

客户端也可以继续发送请求,或者打开新的连接,请求其他资源。

http的请求方式:

get
get向服务器发起请求的数据,依照http协议来进行,get就是请求。

请求行:
请求体:
Accept:客户端可以接受的数据类型
Accept-Encoding:客户端可以接受的编码格式。以及数据是否需要压缩。
Accept-Language:客户端可以接受的语言类型
Cache-Control:数据在本地缓存的时间
Connection:连接的处理方式,一般都是会话保持。
Host:表示请求的ip和端口号,也可以请求的主机名。
User-Agent:客户端请求使用的浏览器信息。

post
post向服务端发送数据,按照http协议进行,服务器添加数据,post的请求方式会修改服务器上的数据。

get和post的区别:
get的请求可以缓存
get的请求还可以保存在浏览器的cookie中
get的请求长度有限制
get 就是获取数据

postpost的请求不能被缓存,
也不会保存在浏览器的cookie中
post请求没有长度限制。
请求的字符串不会显示,比较安全。

telnet可以测试服务器的指定端口是否正常。telnet 192.168.233.20 80

nginx网站服务:

高性能,轻量级的web服务软件
高性能:对http并发连接的处理能很高,单台物理服务器可支持30000-50000个并发请求。(在实际操作中,为了维持服务器的稳定,一般设置在20000个左右)
轻量级:nginx软件很小,安装所需的空间也很小工
稳定性:强对系统资源消耗低

nginx的主要功能:
1、处理静态网页:html htm图像
2、支持反向代理(负载均衡)。负载均衡靠算法实现。
3、处理动态内容
4、虚拟主机:nginx配置多个虚拟主机,每一个虚拟主机都可以作为一个域名和站点。每个虚拟主机都可以拥有独立的配置和资源。
5、URL重定向:可以对URL的请求进行修改和重定向。
6、缓存机制,可以缓存静态文件和动态内容。
7 日志记录:服务日志,访问日志和报错日志。控制日志还是在/var/log/messages中。
8、代理服务器,通过代理可以访问其他的后端服务器。

安装:
./configure -prefix=/usr/local/nginx\#指定安装目录
--user=nginx\指定运行用户
--group=nginx\指定运行组
-with-http_ssl_module\#开启对http的ssl加密支持
---with-http_v2_module\#支持http2.0协议
--with-http_realip_module\允许nginx获取客户端的真实ip
--with-http_stub_status_module\启动了stud_status模块,获取nginx的访问和状态信息的方法
--with-http_gzip_static_module\支持压缩文件内容图片
-with-pcre\ 动态库
--with-stream \开启tcp/udp代理模块支持 支持四层转发
--with-stream_ssl_module\支持四层转发的ssl加密
--with-stream_realip_module nginx可以从四层转发的头部信息中获取客户端的真实ip.

conf:保存nginx的所有配置文件,其中nginx.conf是nginx的主配置文件。
html:保存nginx的web文件,.html结尾的文件,图片。
50x是nginx默认的报错提示页面
logs:保存日志的目录,路径可以改。
access.log记录的是访问日志记录
error.log 记录报错日志,403.400 500 
sbin:nginx的二进制的启动脚本
nginx-t:检测nginx配置文件以及配置文件语法是否正确。
nginx-v:只查看版本
nginx-V:查看版本和nginx支持的配置模块
nginx -s stop restart reload给nginx主程序发送信号,不能开启nginx服务。

nginx的配置文件内容:

http块:配置代理缓存日志虚拟主机和第三方模块
server:配置虚拟主机的设备。在http的模块中可以有多个server。
location块:location模块只能配置在server模块当中,匹配uri.一个server模块当中可以有多个location.
www.baidu.com/test4


nginx的功能模块:

proxy:代理功能,核心功能模块之一,配置反向的功能
proxy_pass 指定
定义在location当中。
headers功能模块:处理请求和头部的响应信息。获取客户端的真实ip

upstream模块:
七层反向代理模块,只能配置在http模块中,或者stream模块中。
stream:
四层反向代理模块,只能写在配置当中。
root 指定访问页面的根目录是拼接
/var/www/html/test

统计nginx的访问状态。

Active connections: 2
server accepts handled requests
2 2 1
Reading: 0 Writing: 1 Waiting: 1
Active connections: 2表示当前活动连接数
server accepts 已经处理的连接处
handled 成功的tcp握手次数
requests 已经处理的请求数
Reading: 0服务端正在从客户端读取数据,正在读取客户端请求的连接数
Writing: 1服务器正在将响应数据发送给客户端
Waiting: 1表示有连接处于空闲状态,当前等待客户端请求的连接数。time_wait.

Inmp:

linux平台,操作系统是另外三个组件的运行平台
nnginx提供前端页面
mysql数据库开源关系型的数据库主要用来保存用户的账号信息。
php:开发动态页面的编程语言,解析动态页面,起到中间件的作用,即在nginx和数据库的中间沟通nginx和数据库,以请求数据库上的信息。

cmake\
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql\-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock\
设置它的进程的监听套接字文件,提供端口3306
-DSYSCONFDIR=/etc \
mysql配置文件的路径
-DSYSTEMD_PID_DIR=/usr/local/mysql \
#进程文件
-DDEFAULT_CHARSET=utf8 \#
默认编码

-DDEFAULT_COLLATION=utf8_general_ci \
字符集的校验规则
-DWITH_EXTRA_CHARSETS=all\-DWITH_INNOBASE_STORAGE_ENGINE=1\
安装INNOBASE存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1\
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1\
-DMYSQL_DATADIR=/usr/local/mysql/data \
#数据库文件的存储路径

-DWITH BOOST=boost\
-DWITH_SYSTEMD=1 
#可以直接生成用于systemctl的管理文件。

[client]
port = 3306
socket=/usr/local/mysql/mysql.sock
服务端配置:默认端口
指定套接字的文件
[mysqld]
服务配置
user=mysql #指定运行用户
basedir=/usr/local/mysql #mysql的安装目录
datadir=/usr/local/mysql/data #数据文件的保存路径
port=3306#服务端口
3306character-set-server=utf8 默认字符编码 utf-8
pid-file=/usr/local/mysql/mysqld.pid #PID文件
socket=/usr/local/mysql/mysql.sock #套接字文件
bind-address=0.0.0.0#监听端口
skip-name-resolve #禁用DNS反向解析。提高性能
max_connections=2048最大连接数,同时可以连接数据的主机数,默认151.
default-storage-engine=INNODB #默认的存储引擎
max_allowed_packet=16M #数据库服务器可以接受的最大数据包,默认4MB、
server-id=1#MYSQL服务器的唯一ld,主从复制会用到。

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
数据库的运行的模版。
STRICT_TRANS_TABLES:如果以个值不能插入到一个事物表中,会中断操作。NO_AUTO_CREATE_USER:静止GRANT创建密码为空的用户

./configure \
--prefix=/usr/local/php \#指定安全目录
-with-mysql-sock=/usr/local/mysql/mysql.sock \#为了和数据库建立联系
--with-mysqli \启用mysqli的扩展应用,支持mysql的数据库类型
--with-zlib \#压缩和解压数据
--with-curl \支持URL操作,下载文件等等
--with-gd \GD库,处理图片

--with-jpeg-dir \
jpeg的图片库--with-png-dir\
png的图片库
--with-freetype-dir \
--with-openssl \
支持ssl加密HTTPS协议
--enable-fpm \
打开fpm模块,提高PHPj进程管理和请求处理的响应速度
--enable-mbstring \
--enable-xml \
支持处理XML格式的文档和数据
--enable-session \
开启会话保持功能
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip

PHP的三个配置文件:
php-fpm.conf #PHP的主配置文件(进程服务)
php.ini#PHP的主配置文件(对全局生效)
www.conf#PHP的扩展配置文件
fastcgi_pass 127.0.0.1:9000
fastcgi:只一种用于连接web服务器(nginx httpd)与应用程序之间的通信协议提供一种高效,可靠,灵活的方式处理动态页面的内容请求
web服务程序和动态应用程序之间进行交互
fastcgi_pass 127.0.0.1:9000设置FASTCGI的服务器的地址和端口。
也就是PHP的监听地址和端口
fastcgi_index index.php:指定请求目录时默认访问的文件名
.php就是动态页面的结尾.jsp动态页面。.html

你可能感兴趣的:(http,网络协议,网络)