目录
传输层协议
什么是协议
协议在计算中扮演着重要的角色,规定数据通信和交互的规则和约定。
协议的作用:
1.通信规范:数据格式,传输方式,消息结构(报文),编码规则等,确保通信的一致性,互操作性
2.数据交换:数据在二昂落中的交换方式,数据包的组织方式,传输顺序,错误检测,纠正机制,保证数据传输的正确性和完整性
3.安全性:协议可以规定数据的加密和身份的认证机制,保障通信安全,可以防止数据被未经授权的人访问,篡改,泄漏
4.设备互联:不同设备和不同系统之间能够互相连接和通信,不同厂商之间的不同设备实现互操作性。
5.网络管理:定义网络管理和监控的规范。通过指定的协议,管理员可以追踪管理网络中的设备、配置、故障。确保网络的正常运行。
TCP
TCP (Transmission Control Protocol )传输控制协议:
面对连接的,可靠的进程到进程的通信协议。TCP提供的全双工服务 ,数据可以在同一时间双向传输。每个TCP都有发送的缓存和接收缓存,用来临时存储数据。通信双方必须要建立连接,而且这个连接是有规范的,是有步骤的。
TCP特点
1.TCP是基于连接控制的,双方都需要进行相应
2.数据传输是加密的,数据通信的安全性较高
3.传输速度比较慢,不论是建立连接还是断开连接都有一定的过程
UDP
UDP (User Datagram Protocol )用户数据报协议也称为流媒体协议(直播都是流媒体)
UDP特点
1.是无连接的
2.不保证可靠性的数据层协议
3.发送端不关心发送的数据是否到达了接收方,数据出错也不关心,接受方也不会对发送方做出回应
4.可靠性由其他上层协议来保证
5.传输数据的速度更快,效率更高.
TCP报文段
TCP将若干个字节构成一个分组,叫报文段(Segment),TCP报文段封装在IP数据报中。
序号:发送端为每个字节进行编号,便于接收端正确重组
确认号:用于确认发送端的信息
窗口大小:用于说明本地可接收数据段的数目,窗口大小是可变的
控制位
URG:紧急位,紧急指针有效位
ACK:确认位,只有当ACK=1,确认的序列号字段才有效lI;ACK=0,确认号字段无效。
Ack:表示接收方期望收到发送方下—个报文段的第一个字节数据的编号,确认传输是否有问题
SEQ:TCP报文的序号
SYN:同步位,连接位,同步序号位,TCP需要建立连接时,SYN=1建立连接
FIN:断开位,TCP完成数据传输之后,需要断开连接,提出断开连接的一方,要把FIN,设为1
PSH:急迫位,设为1时,要求接收方尽快的把数据放送应用层
RST:重置位,RST=1时,要求重新建立TCP连接
win:接收缓存区的空闲空间
三次握手
TCP建立连接的过程称之为三次握手
第一次握手
PC1向PC2发送SYN报文请求连接,报文内包含了序列号Seq=x,同步位SYN=1
第二次握手
PC2接受PC1所发的SYN报文后,向PC1发送ACK报文(回复确认信息),并发送SYN报文(请求建立连接)
注:Ack=x+1含义为要求PC2下次发送报文的序列号为X+1以确认身份
第三次握手
PC1接收PC2的回复,按要求回复PC2
为什么是三次握手?不能是二次或四次吗?
三次握手的主要目的是确认通信双方的接收与传输功能正常,确认双方身份,保证数据传输完整,如果减少次数,数据可能会传输不完整。不是四次的原因是在第三次握手时,双方就已经完成了确认通信双方的接收与传输功能正常,确认双方身份,所以不需要第四次握手,以此提高效率。
四次挥手
TCP断开连接的四步成为四次握手
第一次挥手
PC1发送FIN/ACK报文,请求断开连接
第二次挥手
PC2向PC1回复确认信息
第三次挥手
PC2发送FIN/ACK报文,请求断开连接
第四次挥手
PC1向PC2回复确认信息
为什么是四次挥手?不能是三次吗
当PC1发送FIN/ACK报文时,就会停止传输数据,然而这时数据传输可能还没有结束,如果PC2直接回复FIN/ACK报文就会导致数据传输中断,数据损坏。加入回复确认信息是为了等待PC2的数据传输完毕。
注:PC1虽然不可以传输数据却可以接收数据
TCP半关闭状态
一方已经停止发送数据,但是另一方还需要继续发送数据,一方先发送FIN=1,这时候表示不再发送数据,但是接收数据不受影响。另一方回应ACK=1,确认发送不发数据了,但是接收方还要继续传输数据。接收方传完了数据,就进入最后的挥手阶段。
常见的TCP协议
http 超文本传输协议 端口为80
nginx 高性能的HTTP和反向代理web服务器 端口为80
https 以安全为目标的http通道,简单讲是http的安全版 端口为443
mysql 端口为3306
ftp 端口为21、20
ssh 端口为22