一、协议
协议:规定数据通信和交互的规则和约定
协议的作用:
1.通信规范:数据格式、传输方式、消息结构(报文)、编码规则,确保通信的可靠性、一致性、互操作性。
2.数据交换:数据在网络中的交换方式,数据包的组织方式、传输顺序、错误检测、纠正机制,确保数据传输的正确性和完整性。
3.安全性:协议可以规定数据的加密和身份的认证,保证通信安全,可以防止数据被未经授权的认访问、篡改、泄露。
4.设备互联:不同设备和不同系统之间能够互相连接和通信,不同厂商之间的不同设备实现互操作性。
5.网络管理:定义网络管理和监控的规范,通过指定协议,管理员可以追踪管理网络中的设备、配置、故障。确保网络的正常运行。
TCP协议
传输控制协议
面对连接的、可靠的进程到进程的通信协议。tcp提供的全双工服务,数据可以在同一时间双向传输;每个tcp都有发送缓存和接收缓存,用来临时储存数据;
通信双方必须要建立连接,而且这个连接是有规范的,是有步骤的;
控制位:
URG:紧急位,紧急指针有效位
ACK:确认位,只有当ACK=1,确认的序列号字段才有效;当ACK=0,确认号字段无效
Ack:表示接收方期望收到下一个报文段的第一个字节数据的编号,确认传输是否有问题
SEQ:tcp报文序号
SYN:同步位,连接位,同步序号位,tcp需要建立连接时SYN=1,建立连接
FIN:断开位,tcp完成数据传输之后,需要断开连接,提出断开连接的一方,要把FIN设为1
PSH:急迫位,设为1时,要求接收方尽快把数据发送应用层
RST:重置位,RST=1时,要求重新建立tcp连接
win:接收缓存区的空闲空间
TCP建立连接的过程:三次握手
第一次握手:PC1使用一个随机的端口号x向PC2的端口发送建立连接的请求,此过程的典型标志就是TCP的控制位SYN连接位为1,其他五个控制位全为0。
第二次握手:这一次握手实际上是分两部分来完成的。
第一部分:PC2收到了PC1的请求,向PC1回复一个确认信息,这个过程的标志就是TCP的控制位ACK确认位为1,其他五个控制位全为0,而且确认序列号是PC1的初始序列号加1。
第二部分:PC2也向主机1发送建立连接请求,此过程的标志和第一次握手一样,即TCP的控制位SYN连接位为1,其余五个控制位全为0。
第三次握手:PC1收到了PC2的回复(包含请求和确认),同时也要向PC2回复一个确认信息,此过程的标志为TCP的控制位ACK确认位为1,其余五个控制位全为0,而且确认序列号是PC2的初始序列号加1。
这样就完成了三次握手,在PC1和PC2之间建立了连接。
TCP断开连接的过程:四次挥手
参加数据交换的双方任意一方都可以关闭连接,TCP断开连接分四步,被称为“四次挥手”
1、PC1向PC2发送FIN断开位和ACK确认位为1的TCP报文段;表示断开连接,没有数据在进行传输。
2、PC2向PC1返回ACK确认位为1的TCP报文段;表示确认pc1断开连接的请求已经接受到了。
3、PC2向PC1发送FIN断开位和ACK确认位为1的TCP报文段;表示此时PC2也无数据发送,请求断开连接。
4、PC1向PC2返回ACK确认位为1的TCP报文段;表示已经收到关闭请求消息,这样双方都关闭了。
tcp半关闭状态:四次挥手的第2、3次挥手
一方已经停止发送数据,但是另一方还需要继续发送数据;
一方先发送FIN=1,这时候表示不再发送数据,但是接收数据不受影响;
另一方先回应ACK=1,确认对方不发送数据了,但是接收方还要继续传输未传完的数据;
接收方传输完了数据,就进入挥手的最后阶段
tcp总结
tcp:
1.tcp是基于连接控制的,双方都需要进行响应;
2.数据传输是加密的,数据通信的安全性较高;
3.传输速率比较慢,不论是建立连接还是断开连接,都有一定的过程。
一些tcp协议及端口号:
协议名 | 端口号 | 服务 |
http | 80 | tcp |
nginx | 80 | tcp |
mysql | 3306 | tcp |
ftp | 20,21 | tcp |
ssh | 22 | tcp |
UDP协议
用户数据报协议
是无连接的,不保证可靠性的传输层协议,发送端并不关心发送的数据是否到达接收方,数据出错也没关系,接收方也不会对发送方发出回应。其可靠性有其他上层协议来保证;
传输数据的速度更快,效率更高;
流媒体协议(直播都是流媒体)