多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
### 计算机通信三要素 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之间可以开始传输数据了