#001#突击服务器和网络通识

前言

日志,各位看官就当乐子看吧。

正经人谁写日记啊?!!

----鹅城县长

网络

http状态码

状态码的第一位决定了不同的响应状态,有

  • 1xx 表示消息

  • 2xx 表示成功

  • 3xx 表示重定向

  • 4xx 表示请求错误

  • 5xx 表示服务器错误

常见的有,

状态码含义
200请求成功
403禁止请求,服务器拒绝请求
404未找到,服务器没有找到请求的资源
500服务器遇到错误,无法完成请求
504网关超时,服务器作为网关或代理,没有及时从上游服务器收到请求

tcp连接的三次握手和四次挥手

建立tcp连接,需要经过三次握手:

  1. 客户端发送SYN报文给服务器;

  2. 服务器响应ack报文给客户端,确认客户端的发送能力;

  3. 客户端发送ack报文给服务器。客户端确认服务器的接收和发送能力,服务器确认了客户端的接收能力,然后就能进行数据传输了。

为什么做三次握手,而不是两次?,第三次握手能够让服务器知道客户端的接收能力是正常的。

断开tcp连接,需要经过四次挥手:

  1. 客户端发送FIN报文,并停止发送数据,向服务器请求断开连接;

  2. 服务器发送ack报文响应;

  3. 服务器在发送完所有数据后,发送FIN报文,告诉客户端可以断开了;

  4. 客户端发送ack报文响应,完成断开。

为什么是四次,不是三次?,服务器做接收到客户端的断开请求时,有时还有数据需要继续发送,所以不立即发送FIN报文,于是就有了四次挥手。

其他

这部分看了,但是不好记忆,也不好描述:

  1. udptcp的对比(udp不可靠);

  2. http1.0 1.1 2.0

  3. 地址栏输入url敲下回车后发生了什么(url解析 -> 域名解析,获得IP -> 建立请求,服务器响应 -> 网站渲染,首先解析dom树,然后css树,然后计算完成大小和位置的布局信息,然后是图像像素信息,最后交给GPU渲染)

  4. tcp/IP:指的是一系列互联网协议构成的协议族,模型可分为五层或者四层,五层是应用层、传输层、网络层、数据链路层、物理层。其中还有和OSI模型的对照内容需要了解。

操作系统

进程和线程

  1. 线程是进程的子集,每个进程包含多个线程;2. 每个进程有各自独立的内存空间,而所有线程共享一片相同的内存空间;3.每个线程有自己的栈内存存储本地数据。

死锁

一个进程请求其他进程拥有的资源,并且不释放自己获取的资源,不断请求,产生死锁。死锁产生条件:1. 互斥:一个资源在同一时间内只能由一个进程获得;2. 请求和保持,一个进程因请求资源而堵塞时,对已获得的资源不释放;3. 不剥夺,进程已获得的资源在未使用完成时,不能剥夺,只能在使用完时自己释放;4. 循环等待,存在循环等待链,每个进程都在等待链中等待下一个进程资源,造成这组进程永远处于等待状态。

服务器

docker

docker是软件平台,用于创建、管理、分发应用程序。类似于轻量级的虚拟机,

区别于虚拟机:不同于虚拟机,容器内只运行应用程序,不是一个完整操作系统。

完整的docker包含那些部分:client 客户端;daemon 守护进程;images 镜像;container 容器

容器生命周期:创建create、运行start(run,创建并运行)、停止(stop)启动(start)重启(restart)、杀死(kill,不删除容器,能再次启动)、销毁(destroy,删除,需要重新创建容器)

常用指令

指令含义
docker images列出本机所有镜像
docker pull 镜像名[:tag]下载镜像[对应版本],名字后加上:接数字,表示下载哪个版本
docker search搜索镜像
docker rmi -f 镜像id删除镜像

dockerfile:存放配置镜像的指令的文件,docker使用dockerfile自动构建镜像。

Nginx

用于构建web服务器,常用于反向代理。常用功能:1. 反向代理:客户端向服务器发送请求时,首先会经过nginx服务器,nginx将请求分发给相应的web服务器;2. 负载均衡:将大量的前端请求或数据流量分担到后端多个网络节点上分别处理,减少用户等待时间。

负载均衡

根据不同的实际情况,可采取不同的均衡算法,介绍如下。

普通轮询算法

upstream OrdinaryPolling {
    server 127.0.0.1:8080;
    server 127.0.0.1:8081;
}
    server {
        listen       80;
        server_name  localhost;

        location / {
            proxy_pass http://OrdinaryPolling;
            index  index.html index.htm index.jsp;

        }
    }

上面代码表明,upstream代码块声明了名为OrdinaryPolling的负载均衡配置,server代码块配置虚拟主机,监听localhost主机上的80端口(端口默认为80),当请求地址为/时,采用反向代理proxy_pass设置的方案,将请求分发给127.0.0.1:80808081两个服务器,默认响应index.html文件。

加权轮询算法

当服务器配置不同,希望高配置的服务器处理更多的请求,这时就可以采用加权轮询。配置如下,

upstream OrdinaryPolling {
    server 127.0.0.1:8080 weight=5;
    server 127.0.0.1:8081 weight=2;
}

此时,nginx会根据权重给不同服务器分担不同的请求量,8080和80801处理的量比例为5:2。不设置weight则默认都是1,就是普通轮询。

基于IP路由负载

当服务器需要保存信息完成验证时,如登录验证时,保存session,当请求在第一个服务器没处理完,通过nginx轮询到第二个服务器上,那么这个服务器是没有会话信息的。又需要重新登录。此时可以采用基于IP负载。配置如下,

upstream OrdinaryPolling {
    ip_hash;
    server 127.0.0.1:8080 weight=5;
    server 127.0.0.1:8081 weight=2;
}

upstream 指令块中增加了ip_hash 指令。该指令就是告诉 nginx 服务器,同一个 IP 地址客户端发送的请求都将分发到同一个服务器进行处理.

基于服务器响应时间负载分配

根据服务器响应时间分配,时间越短的优先分配。upstream 指令块中增加了fair 指令.

对不同域名实现负载均衡

结合location 指令块可以实现对不同域名实现负载均衡。配置如下,

upstream wordbackend {
    server 127.0.0.1:8080;
    server 127.0.0.1:8081;
    }

    upstream pptbackend {
    server 127.0.0.1:8082;
    server 127.0.0.1:8083;
    }

    server {
        listen       80;
        server_name  localhost;

        location /word/ {
            proxy_pass http://wordbackend;
            index  index.html index.htm index.jsp;

        }
    location /ppt/ {
            proxy_pass http://pptbackend;
            index  index.html index.htm index.jsp;

        }
    }

当路径为 word 时,会分配到 127.0.0.1:80808081上,当路径为 ppt 时,会分配到 80828083上。

彩蛋

为了一个软件实施的岗位做准备,网上关于实施的面试题大多都是计算机通识内容,再结合工作经验,实施中数据库和服务器的技术需要着重关注(还在等面试通知,逆天,…,.,)。网络相关的知识点还要没复习到的,也有理解或记不清的内容。还有数据库的知识点。当然服务器也需要再补补

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值