Advertise with Googlier.com 233 https://blog.ka94.com/ zh-CN Tue, 28 Jun 2022 16:28:00 +0000 Tue, 28 Jun 2022 16:28:00 +0000 计算机网络-概述 https://blog.ka94.com/110.html https://blog.ka94.com/110.html Tue, 28 Jun 2022 16:28:00 +0000 DotDotDot 要学好计算机网络的内容,首先是得对计算机网络有个全貌的概况了解,七层模型, 四层协议,都是需要先理解的概念,本章带你入门计算机网络 # 1.什么是计算机网络 计算机网络主要由一些通用的、可编...]]> 要学好计算机网络的内容,首先是得对计算机网络有个全貌的概况了解,七层模型, 四层协议,都是需要先理解的概念,本章带你入门计算机网络

1.什么是计算机网络

计算机网络主要由一些通用的、可编程的硬件互连而成,通过这些硬件,可以传送不同类型的数据,并且可以支持广泛和日益增长的应用。

  • 计算机网络不仅是软件概念,还包含硬件设备。
  • 计算机网络不仅是信息通信,还可以支持广泛应用。

2.计算机网络的分类

2.1 网络作用范围

  • 广域网(WAN)
  • 城域网(MAN)
  • 局域网(LAN)
分类英文范围区域
广域网WAN(Wide Area Network)几十到几千公里跨省、跨国
城域网MAN(Metro Area Network)5KM-50KM城市间
局域网LAN(Local Area Network)1KM以内地区间

2.2 网络的使用者

  • 公用网络
  • 专用网络

3. 计算机网络的发展简史

3.1 互联网的发展历史

第一阶段:ARPANET -> 第三阶段:三级结构互联网 -> 第三阶段:多层次ISP互联网

3.2 中国互联网的发展历史

1980年开始互联网实验 -> 1989年第一个公共网络建立运行 -> 1994年接入国际互联网

4. 计算机网络的层次结构

4.1 层次结构设计的基本原则

分层实现不同的功能:如,保证数据通路顺畅,目的计算机状态,识别目的计算机,数据是否错误。
网络应用数据:视频、文件、游戏,数据可靠通信:数据错误、重复,物理网络接入:光电等物理特性
  • 各层之间是相互独立的
  • 第一层要有足够的灵活性
  • 各层之间完全解藕

4.2 OSI七层模型

  1. 应用层:为计算机用户提供接口和服务
  2. 表示层:数据处理(编码解码、加密解密等)
  3. 会话层:管理(建立、维护、重连)通信会话
  4. 传输层:管理端到端的通信连接
  5. 网络层:数据路由(决定数据在网络中的路径)
  6. 数据链路层:管理相邻节点之间的数据通信
  7. 物理层:数据通信的光电物理特性
OSI欲成为全球计算机都遵循的标准
OSI在市场化过程中困难重重,TCP/IP在全球成功运行
OSI最终并没有成为广为使用的标准模型
OSI的专家缺乏实际经验
OSI标准定制周期过长,按OSI标准生产的设备无法及时进入市场
OSI模型设计得并不合理,一些功能在多层中重复出现

4.3 TCP/IP四层模型

  1. 应用层:HTTP/FTP/… =>对应OSI:应用层,表示层,会话层
  2. 传输层:TCP/UDP =>对应OSI:传输层
  3. 网络层:IP/ICMP =>对应OSI:网络层
  4. 网络接口层:Ethernet/ARP/RARP =>对应OSI:数据链路层,物理层

5. 现代互联网的网络拓扑

5.1 边缘部分

computer-network-01-05-01.png

computer-network-01-05-02.png

5.2 核心部分

computer-network-01-05-03.png

computer-network-01-05-04.png

computer-network-01-05-05.png

computer-network-01-05-06.png

computer-network-01-05-07.png

6. 计算机网络的性能指标

6.1 速率

速率单位:bps=bit/s

为什么电信拉的100M光纤,测试峰值速度只有12M每秒?
100M/s = 100Mbps = 100Mbit/s
100Mbit/s = (100/8)MB/s = 12.5MB/s。注:1byte = 8bits。

6.2 时延

  • 发送时延 = 数据长度(bit) / 发送速率(bit/s)
  • 排队时延 = 传播路径距离 / 传播速率(bit/s)
  • 传播时延:数据包在网络设备中等待被处理的时间
  • 处理时延:数据包到达设备或者目的机器被处理所需要的时间
  • 总时延 = 发送时延 + 排队时延 + 传播时延 + 处理时延

6.3 往返时间RTT

  • RTT(Route-Trip Time)是评估网络质量的一项重要指标
  • RTT表示的是数据报文在端到端通信中的来回一次的时间
  • 通常使用ping命令查看RTT

7. 物理层概述

7.1. 物理层的作用

  • 连接不同的物理设备:双绞线、同轴电缆、光纤、红外线、无线、激光
  • 传播比特流:0/1,低/高电位(物理特性:机械特性、电气特性、功能特性、过程特性)

7.2. 信道的基本概念

信道是往一个方向传送信息的媒体
一条通信电路包含一个接收信道和一个发送信道
  • 单工通信信道:只能一个方向通信,没有反方向反馈的信道(有线电视、无线电收音机等等)
  • 半双工通信信道:双方都可以发送和接收信道,不能同时发送,也不能同时接收
  • 全双工通信信道:双方都可以同时发送和接收信息

7.3. 分用-复用技术

提升信道的利用效率
  • 频分复用
  • 时分复用
  • 波分复用
  • 码分复用

8. 数据链路层概述

8.1. 封装成帧

“帧”是数据链路层数据的基本单位
发送端在网络层的一段数据前后添加特写标记形成”帧”
接收端根据前后特定标记识别出”帧”
另,物理层不关心是否封装成”帧”

computer-network-01-09-01.png

8.2. 透明传输

编程语言中”\“一般为转义字符
“\n”、”\t”等控制字符
“\“、”\“
  • “透明”在计算机领域是非常重要的一个术语
  • “一种实际存在的事物却又看起来不存在一样”
  • “即是控制字符在帧数据中,但是要当做不存在的去处理”

8.3. 差错监测

物理层只管传输比特流,无法控制是否出错
数据链路层负责起”差错监测”的工作

8.4. 数据链路层的差错监测

  • 奇偶校验码
00110010 1 0 + 0 + 1 + 1 + 0 + 0 + 1 + 0 = 3
00111010 0 0 + 0 + 1 + 1 + 1 + 0 + 1 + 0 = 4
  • 循环冗余校验码CRC
一种根据传输或保存的数据而产生固定位数校验码的方法
检测数据传输或者保存后可能出现的错误
生成的数字计算出来并且附加到数据后面
  • 模”2”除法
模”2”除法是二进制下的除法
与算术除法类似,但除法不借位,实际是”异或”操作
  • 循环冗余校验码CRC-实例
1.选定一个用于校验的多项式G(x),并在数据尾部添加r个0
2.将添加r个0后的数据,使用模”2”除法除以多项式的位串
3.得到的余数填充在原数据r个0的位置得到可校验的位串
例子:使用CRC计算101001的可校验位串
发送端:
G(x) = x3 + x2 +1 => 二进制位串:1101,最高阶为3
G(x) = 1 x3 + 1 x2 + 0 x1 + 1 x0
101001 => 101001000
101001 => 101001000经过模”2”除法得到的余数为:001
最终得到可校验位串为:101001000 => 101001001
接收端:
接收端接收的数据除以G(x)的位串,根据余数判断出错:101001001 / 1101
余数为0表示校验通过

CRC的错误检测能力与位串的阶数r有关,r为1校验能力最差
数据链路层只进行数据的检测,不进行纠正
computer-network-01-10-01.png

8.5. 最大传输单元MTU

  • MTU

    最大传输单元(Maximum Transmission Unit)
    数据链路层的数据帧也不是无限大的
    数据帧过大或过小都会影响传输的效率
    总时延 = 发送时延 + 排队时延 + 传播时延 + 处理时延
    以太网MTU一般为1500字节
  • 路径MTU
路径MTU由链路中MTU的最小值决定

8.6. 以太网协议

  • MAC地址
MAC地址(物理地址、硬件地址
第一个设备都拥有唯一的MAC地址
MAC地址共48位,使用十六进制表示
  • 以太网协议
以太网(Ethernet)是一种使用广泛的局域网技术
以太网是一种应用于数据链路层的协议
使用以太网可以完成相邻设备的数据帧传输

9. 网络层概述

]]>
0 https://blog.ka94.com/110.html#comments https://blog.ka94.com/feed/
搭建自己推流直播服务器 https://blog.ka94.com/99.html https://blog.ka94.com/99.html Tue, 25 Feb 2020 15:02:00 +0000 DotDotDot 开始

环境

一台Linux服务器用来做服务端
一台Windows电脑用来进行推流
可以使用拉流测试网站进行测试直播是否成功

1.下载推流软件这里使用OBS

在OBS官网下载即可

2.安装服务端流媒体直播(SRS)

SRS是一个流媒体直播集群,高效、稳定、易用,简单而快乐。

1.首先安装Git
(centos)

yum install -y git

(Ubuntu)

apt install git

2.使用Git拉取SRS

git clone https://github.com/ossrs/srs

3.下载完成后进入rs/trunk目录

cd srs/trunk

4.编译SRS

./configure && make

5.编译完成之后运行SRS

./objs/srs -c conf/srs.conf

接下来就可以进行推流了
推流URL地址(服务器地址):trmp://你的ip地址/live
串流秘钥(Stream):livestrema
观看地址:rtmp://你的ip地址/live/livestrema

]]>
0 https://blog.ka94.com/99.html#comments https://blog.ka94.com/feed/
windows环境下安装ffmpeg https://blog.ka94.com/92.html https://blog.ka94.com/92.html Thu, 09 Jan 2020 12:34:00 +0000 DotDotDot 1.官网下载最新ffmpeg包
地址:https://ffmpeg.zeranoe.com/builds/

2.解压到指定目录,将bin文件目录添加到path路径(电脑-属性-高级系统设置-环境变量-path-新建)

3.cmd输入:ffmpeg -version显示以下界面表示安装成功:
1578573251(1).jpg

]]>
0 https://blog.ka94.com/92.html#comments https://blog.ka94.com/feed/
ffmpeg视频转为M3U8格式 https://blog.ka94.com/90.html https://blog.ka94.com/90.html Thu, 09 Jan 2020 12:29:00 +0000 DotDotDot ffmpeg -i (要转换的视频文件路径) -profile:v baseline -level 3.0 -s 1920x1080 -start_number 0 -hls_time 10 -hls_list_size 0 -f hls (转出的m3u8文件路径)

如mp4转m3u8
ffmpeg -i G:\sp\1.mp4 -profile:v baseline -level 3.0 -s 1920x1080 -start_number 0 -hls_time 10 -hls_list_size 0 -f hls G:\sp\1\1.m3u8

]]>
0 https://blog.ka94.com/90.html#comments https://blog.ka94.com/feed/
Linux安装Mysql https://blog.ka94.com/81.html https://blog.ka94.com/81.html Tue, 19 Nov 2019 08:54:00 +0000 DotDotDot Linux 安装Mysql

1.检查是否安装Mysql

rpm -qa | grep mysql

2.新建一个临时文件,使用wget下载Mysql安装包

wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz

3.安装Mysql
解压安装包:

tar xzvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz

4.移动该文件到/usr/local/mysql
执行移动命令:

mv mysql-5.7.24-linux-glibc2.12-x86_64 /usr/local/mysql

5.在/usr/local/mysql目录下创建data目录

mkdir /usr/local/mysql/data

6.更改mysql目录下所有的目录及文件夹所属的用户组和用户,以及权限

useradd mysql
chown -R mysql:mysql /usr/local/mysql
chmod -R 755 /usr/local/mysql

7.编译安装并初始化mysql,务必记住初始化输出日志末尾的密码(数据库管理员临时密码)

cd /usr/local/mysql/bin
./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql

补充说明:
此时可能会出现错误:

4773465-f61d450c92002962.png

出现该问题首先检查该链接库文件有没有安装使用 命令进行核查

rpm -qa|grep libaio

运行命令后发现系统中无该链接库文件

yum install  libaio-devel.x86_64

安装成功后,继续运行数据库的初始化命令,此时可能会出现如下错误:

4773465-1285a491ff73632f.png

执行如下命令后,再次运行数据库的初始化命令:

yum -y install numactl

8.运行初始化命令成功后,输出日志如下:

4773465-b193851d538e83c7.png

记录日志最末尾位置root@localhost:后的字符串,此字符串为mysql管理员临时登录密码。

9.编辑配置文件my.cnf,添加配置如下

vi /etc/my.cnf
修改内容如下:
[mysqld]
datadir=/usr/local/mysql/data
port = 3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
symbolic-links=0
max_connections=400
innodb_file_per_table=1
#表名大小写不明感,敏感为
lower_case_table_names=1

启动mysql服务器

/usr/local/mysql/support-files/mysql.server start

显示如下结果,说明数据库安装成功
4773465-f25f02b9deefad0d.png

如果出现如下提示信息

Starting MySQL... ERROR! The server quit without updating PID file

查看是否存在mysql和mysqld的服务,如果存在,则结束进程,再重新执行启动命令

#查询服务
ps -ef|grep mysql
ps -ef|grep mysqld

#结束进程
kill -9 PID

#启动服务
 /usr/local/mysql/support-files/mysql.server start

4773465-a241c31f84a0c85b.png

10.添加软连接,并重启mysql服务

ln -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql 
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
service mysql restart

11.登录mysql,修改密码(密码为步骤5生成的临时密码)

mysql -u root -p
Enter password:
mysql>set password for root@localhost = password('yourpass');

4773465-a4ab730d2b461d58.png

12.开放远程连接

mysql>use mysql;
msyql>update user set user.Host='%' where user.User='root';
mysql>flush privileges;

4773465-dca9c59c28b04fc7.png

13.设置开机自动启动

1、将服务文件拷贝到init.d下,并重命名为mysql
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
2、赋予可执行权限
chmod +x /etc/init.d/mysqld
3、添加服务
chkconfig --add mysqld
4、显示服务列表
chkconfig --list
]]>
0 https://blog.ka94.com/81.html#comments https://blog.ka94.com/feed/
Linux Apache优化 https://blog.ka94.com/80.html https://blog.ka94.com/80.html Tue, 19 Nov 2019 06:31:00 +0000 DotDotDot 1.禁止显示 index of目录
编辑http.conf文件

找到:
       Options indexes FollowSymLinks
改为:
       Options FollowSymLinks

2.Apache添加多端口
编辑http.conf文件

在Listen 80处另起一行输入

Listen 8080 (监听8080端口)

在httpd.conf文件最后一行添加:注:默认的80路径为/var/www/html/,我这是在这个下面的文件夹下添加test文件夹为测试

NameVirtualHost *:8080
<VirtualHost *:8080>
ServerName localhost:8080
DocumentRoot "/var/www/html/test/″
<Directory "/var/www/html/test/">
    Options FollowSymLinks IncludesNOEXEC
    AllowOverride All
    Order Deny,Allow
    Allow from all
</Directory>
</VirtualHost>

3、重启Apache
4、把8080(监听的端口)开放防火墙

]]>
0 https://blog.ka94.com/80.html#comments https://blog.ka94.com/feed/
Linux 下Apache开启伪静态 https://blog.ka94.com/79.html https://blog.ka94.com/79.html Mon, 18 Nov 2019 16:35:00 +0000 DotDotDot 1.进入Apache编辑httpd.conf文件

2.找到#LoadModule rewrite_module modules/mod_rewrite.so
改为

LoadModule rewrite_module modules/mod_rewrite.so

3.找到

    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    #
    AllowOverride None

改为

 AllowOverride All

重启Apache

cd /usr/local/apache/bin/
./apachectl restart
]]>
0 https://blog.ka94.com/79.html#comments https://blog.ka94.com/feed/
Linux配置Apache支持PHP https://blog.ka94.com/78.html https://blog.ka94.com/78.html Mon, 18 Nov 2019 16:30:00 +0000 DotDotDot 1.进入Apache编辑httpd.conf文件

1、增加下面内容

AddType application/x-httpd-php .php .phtml       #以php结尾的,交给php处理
AddType application/x-httpd-php-source .phps

找到DirectoryIndex index.html #添加index.php

DirectoryIndex index.html index.php

重启Apache

cd /usr/local/apache/bin/
./apachectl restart
]]>
0 https://blog.ka94.com/78.html#comments https://blog.ka94.com/feed/
Linux环境命令 https://blog.ka94.com/75.html https://blog.ka94.com/75.html Mon, 18 Nov 2019 14:32:00 +0000 DotDotDot 查询Apache是否安装

rpm -qa |grep httpd

查询PHP是否安装(三种命令)

whereis php
php -v
rpm -qa | grep php

查询MYsql是否安装

ps -ef | grep mysql

卸载Apache命令

rpm -e --nodeps httpd

查询Apache安装目录

find / -name apache;
]]>
0 https://blog.ka94.com/75.html#comments https://blog.ka94.com/feed/
Linux安装PHP7.X https://blog.ka94.com/74.html https://blog.ka94.com/74.html Mon, 18 Nov 2019 12:48:00 +0000 DotDotDot Linux安装PHP7.X

下载PHP安装包并上传到服务器(新建一个文件夹用来存放)

1.安装PHP依赖

yum install gcc libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel

2.开始安装PHP
解压安装包

tar -zxf php-7.0.30.tar

进入目录

cd  php-7.0.30

复制编译代码

Apache使用非源码编译需要在安装httpd-devel包,否则会缺失aoxs文件夹

./configure \
--prefix=/usr/local/php/php7.0.3 \
--with-apxs2=/usr/local/apache/bin/apxs \
--enable-fpm \
--enable-inline-optimization \
--disable-debug \
--disable-rpath \
--enable-shared  \
--enable-soap \
--with-libxml-dir \
--with-xmlrpc \
--with-openssl \
--with-mcrypt \
--with-mhash \
--with-pcre-regex \
--with-sqlite3 \
--with-zlib \
--enable-bcmath \
--with-iconv \
--with-bz2 \
--enable-calendar \
--with-curl \
--with-cdb \
--enable-dom \
--enable-exif \
--enable-fileinfo \
--enable-filter \
--with-pcre-dir \
--enable-ftp \
--with-gd \
--with-openssl-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib-dir  \
--with-freetype-dir \
--enable-gd-native-ttf \
--enable-gd-jis-conv \
--with-gettext \
--with-gmp \
--with-mhash \
--enable-json \
--enable-mbstring \
--enable-mbregex \
--enable-mbregex-backtrack \
--with-libmbfl \
--with-onig \
--enable-pdo \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-zlib-dir \
--with-pdo-sqlite \
--with-readline \
--enable-session \
--enable-shmop \
--enable-simplexml \
--enable-sockets  \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-wddx \
--with-libxml-dir \
--with-xsl \
--enable-zip \
--enable-mysqlnd-compression-support \
--with-pear \
--enable-opcache

编译并安装:

make && make install

编译完成之后,需要添加PHP命令到环境变量里

vi  /etc/profile

在文件末尾加入并保存:

PATH=$PATH:/usr/local/php/php/7.0.30/bin
export PATH

要使改动立即生效执行

source /etc/profile

查看PHP 版本

php -v
[root@iZj6c42f8w148ft2yuv3aeZ apache]# php -v
PHP 7.0.30 (cli) (built: Nov 18 2019 23:54:17) ( ZTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
]]>
0 https://blog.ka94.com/74.html#comments https://blog.ka94.com/feed/