学习总结
协议的实现是通过网卡和网络系统操作来实现的,实现在通信协议中与通信有关的功能,协议的基本功能让协议能分割和组装报文,规定报文的格式,传输数据时受到控制,正常服务。协议的语法规定报文格式,语义规定命令和反馈的意思,定时规定时间要求。
TCP/IP协议中的五层模型,分为物理层(光纤,双绞线),数据链路层(以太网),网络层(IP),传输层(TCP,UDP),应用层(HTTP,FTP,SMTP)。每一层都有自己的数据包首。
以太网是应用最广的局域网,10M,100M,1G,10G四种。
IP协议,处于网络层,使网络中的所有用户都能接收数据,使负责发送,不关注对象是否接受,也没有面向对象。
TCP协议,在IP协议之上,处于传输层,受路由控制控制,面向对像,点对点发送信息,保证目标接受,及其可靠。发送数据时,会通过三次握手请求连接,数据传输完毕会接受确认回复,没有就重新发送,直到收到回复,同时会控制数据的流量大小,避免传输堵塞。随时可以接受和发送数据。报文就9部分组成。
UDP协议,与TCP同级,无面向对象,与IP功能类似,只负责发送数据,因为基于一个不可靠子网,所以没有可靠性,需要自己解决可靠性问题。
FTP协议,文件传输协议,在TCP和UDP之上,有两个端口,控制端口21端口,数据端口20端口,有三种传输方式,默认流方式(分成多个数据流,快),还有压缩和块方式。工作方法是主进程和从进程一起工作,主进程接收请求,开端口,从进程传数据。协议涵盖了6个命令。
HTTP协议,超文本传输协议,与FTP同级,协议以B/S为基础,给所有协议提供一个通用接口,方便连接使用。协议简单,速度快,支持所有的数据格式,每次只处理一个请求,因为是建立在TCP协议之上,所以同样可靠。默认端口80。
还有SMTP发送邮件用到的协议,SMTP网络管理用到的协议。
IP地址是有路由器设置的,由网络标记和主机标记组成。分ABCD四类
A类是0开头,1~8位为网络标记,0.0.0.0~127.0.0.0
B类是10开头,1~16为位为网络标记,128.0.0.1~191.255.0.0
C类是110开头,1~24位为网络标记,192.168.0.0~239.255.255.0
D类是1110开头,没有网络标记,224.0.0.0~239.255.255.255
网络标记全为0是不可知的地址,全为1是广播地址,在本地网络是本地广播,不同网络是直播广播。
子网掩码是用来分割识别IP地址的网络标记和主机标记的。
DNS,一个数据库,保护域名和IP地址的对应。
域名,用特定的字母组合表示不同的用途,简化IP的记忆和应用。
ICMP协议,和TCP协议部分功能相同,确认数据是否到达目标地址,没到发回原因,可以根据这个查询问题。掌握网络是否通顺,主机是否可达,路由是否可用等信息。
PING 是网络中最简单的ICMP应用程序,用来检测两服务器间是否网络通顺。
TRACEROUTE是检测两服务器之间各个路由的IP地址。TTL(生存时间)自己设定,每经过一个路由就会使TTL减1,为0时返回所到的最后IP地址,用于细致检测。
SLA服务等级协议。是关于网路服供应商和客户间的一份协议,其中定义了服务类型,服务质量和客户付款等术语。
PHP
用法大致与JAVASCRIPT相同,脚本区域用分割。
变量的命名无需定义类型,用$开头,大小写敏感,可用变量的值作为变量名,输出时变量值会自动寻找对应的变量名,并输出变量名的值。
输出结果:php ($a->$hello->$world =php)
字符串定义时“”会解析里面的内容,如果不需要解析,在变量前面加‘\’。 ‘’会直接输出内容。
$str = “11”; print “\$str = $str”; $str = 11
$str = ‘11’; print ‘$str = $str’; $str = $str
定义常量 define (“名”,值);
const 名 = 值;
常量需要赋值,不可修改,一般大写,用_分隔,开头不需要$。
变量的声明,分Local本地变量和Global全局变量,本地变量值使用在函数内部,全局变量只使用在函数外部,要使用全局变量与函数内部,①在变量前加global②$GLOBAL[‘变量名’]
数组定义有两种形式,
正常 $arr = array(‘值’, ‘值’, ‘值’…..);
$arr[0] = ‘值’;$arr[1] = ‘值’; $arr[2] = ‘值’;…….;
哈希表 $arr[‘名’]= ‘值’; $arr[‘名’]= ‘值’; $arr[‘名’]= ‘值’;….
$arr =array (‘名’=>‘值’, ‘名’=>‘值’, ‘名’=>‘值’,…….);
=> 关联
count($数组);显示数组长度
数组的遍历用COUNT()输出长度,FOR()循环完成遍历。或者使用FOREACH()函数
Foreach(数组名 as 新变量名) 输出时,数组的值会通过新变量名输出,每次赋值一个。
foreach($age(数组名) as $x=>$x_value) {
echo "Key=" . $x . ", Value=" . $x_value;}
跳出循环:break 跳出循环结构
Swith break 跳出分支结构
Continue 结束本次循环,继续下次的循环
GOTO 标签名;(跳出循环到标签名处)
标签名:
语句;
函数定义,function 函数名(){函数体;[return ;]}
函数文件的调用,①require(‘要引入的文件名’);
②$filePath = “文件名”;
Require $filePath;
③require‘要引入的文件名(路径)’;
把一个页面包含到另一个页面,①include(‘被包含的文件’);
②include‘被包含的文件’;
③include $filePath;
个别函数,strlen() 返回字符串长度;strpos()检索字符串内指定的字符或文本位置,strpos(“hello world”,”world”)è6;
Empty() 检查是否为空;isset() 检查是否定义过
表单的安全性:function x($y){
$y = trim($y); 出去不必要的字符(多余空格,换行,制表符)
$y = stripslashes($y); 删除用户输入的反斜杠\
$y = htmlspecialchars($y); 把特殊字符转换为HTML实体
Return $y;
}
打开文件 fopen(‘文件名’,‘模式‘);
R 只读;w 只写 (删除内容或重新创建);a 只写 (保留内容);x穿件新文件只写;r+,w+,a+,x+ 读写
读取文件fread(文件名(或被文件赋值的变量名),filesize(“文件”))
关闭文件fclose(“文件”);
Feof() 检查是否到了‘end of file‘
Fget() 读取单个字符
Fwrite( 要写入的文件名,要写如的内容) 写入文件
Die(错误信息)输出错误信息
自定义错误
过滤器
@ 是PHP提供的错误信息屏蔽的专用符号。
比如在一个函数前使用@
@mysql_query 不会出现Warning,
而原来mysql_query 在遇到错误时会在页面上访提示Warning。
array_key_exists() 函数 :array_key_exists() 函数判断某个数组中是否存在指定的 key,如果该 key 存在,则返回 true,否则返回 false。
$a=array("a"=>"Dog","b"=>"Cat");
if (array_key_exists("a",$a)){
echo "Key exists!";}
else{
echo "Key does not exist!";}
?>
Key exists!
explode() 函数把字符串分割为数组。本函数返回由字符串组成的数组,其中的每个元素都是由 separator 作为边界点分割出来的子字符串。
substr() 函数返回字符串的一部分
trlen() 函数返回字符串的长度。
xpath() 函数运行对 XML 文档的 XPath 查询。
str_replace() 函数使用一个字符串替换字符串中的另一些字符。
str_replace(find,replace,string,count)