### 计算机通信三要素
1. IP地址:用来标识网络上一台独立计算机(127.0.0.1 本地回环地址,保留地址).
2. 端口号:要将数据发送到对方指定的应用程序上,为了标识这些应用程序,所以给这些网络应用程序都用数字进行标识,这些数据我们称为,端口号,如 apache/nginx(80)、mysql(3306) 等 .
3. 传输协议:两者之间的通讯规则。如,TCP、UDP等 .
### TCP
TCP:Transmission Control Protocol传输控制协议
* 面向连接,传输数据之前需要建立连接
* 通过“三次握手”的方式完成连接,是安全可靠协议
* 传输速度慢,效率低
实例:apache、nginx、mysql、php-fpm这样的服务都是基于tcp
### UDP
UDP:User Datagram Protocol用户数据报协议
* 面向无连接,传输数据之前源端和目的端不需要建立连接
* 发送数据不进行检测,所以发送不一定可靠
* 传输速度快,效率高
实例:快递、视频会议、聊天(QQ)
### TCP三次握手
* SYN_SENT 表示请求连接
* SYN_RECV 表示正在等待处理的请求数
* ESTABLISHED 表示正常数据传输状态
* TIME_WAIT 表示处理完毕,等待超时结束的请求数
![](https://box.kancloud.cn/485182c1793c32c0bc547d370f012a37_919x510.png)
第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT
状态,等待Server确认。
第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack
(number )=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。
第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该
数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入
ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了
- PHP加密技术
- md5加密
- Crypt加密
- 函数
- 概述
- 强类型参数
- 可变参数列表
- 值传递&引用传递
- 变量作用域
- 可变函数
- 嵌套函数
- 递归函数
- 匿名函数(闭包)
- 面向对象
- 概念
- 类
- 对象的传值
- 对象的克隆
- 构造方法
- 析构方法
- 克隆方法
- $this
- 类常量
- 静态属性
- 静态方法
- 继承
- 重写
- 重载
- 概述
- 属性重载
- 概述
- __set()
- __get()
- __unset()
- __isset()
- 方法重载
- 概述
- __call()
- __callstatic()
- 封装
- 最终类
- 抽象类
- 接口
- 对象的序列化与反序列化
- __sleep()
- __wakeup()
- 其他魔术方法
- 对象的遍历
- 类和对象相关函数
- 错误
- 概述
- 设置错误级别
- trigger_error()触发错误
- 处理PHP中的错误
- 异常
- 概述
- 自定义异常类
- 自定义文件写入异常类
- 记录和发送异常信息
- 使用观察者模式处理异常信息
- 自定义异常处理器
- 设计模式
- 创建型
- 单例模式
- 工厂模式
- 原型模式
- 结构型
- 注册树模式
- 适配器模式
- 数据映射模式
- 装饰器模式
- 代理模式
- 行为型
- 策略模式
- 观察者模式
- 迭代器模式
- 网络
- cURL
- Oauth2.0
- QQ第三方登录
- TCP/IP协议
- 概述
- HTTP协议
- 概述
- HTTP请求协议
- HTTP响应协议
- WebSocket
- 安装扩展
- Redis
- Socket
- 计算机通信
- socket简介
- PHP操作socket
- TCP
- HTTP服务端
- WebSocket
- PHP7
- 生成器yield
- 异常finally
- CGI和FPM
- php有用命令
- 内存