传输层协议
TCP协议 UPD协议
协议的定义:计算机中比较重要的角色,规定数据通信和交互的规则约定。
协议的作用:
- 通信规范:数据格式,传输方式,消息结构(报文)、编码规则等。确保通信的可靠性,一致性,互操作性。
- 数据交换:数据在网络的中交换方式,数据包的组织方式,传输顺序,错误检测,纠正机制,保证数据传输的正确性和完整性。
- 安全性:协议可以规定数据的加密和身份认证机制,保障通信的安全,可以防止数据被未经授权的人访问,篡改,泄露。
- 设备互联:不同设备和不同系统之间能够互相连接和通信,不同厂商之间的不同设备实现互操作性。
- 网络管理:定义网络管理和监控的规范。通过指定的协议,管理员可以追踪个管理网络中的设备、配置、故障,确保网络的正常运行。
TCP协议:传输控制协议
面对连接可靠的进程,到进程的通信协议。TCP提供的是全双工服务。每个TCP都有发送缓存和接受缓存,用来临时存储数据的。前提是通信双方必须建立连接,连接必须要有规范,有步骤。
UDP协议:用户数据报协议
是无需连接,不保证可靠可行的传输协议。发送端不关心发送的数据是否到达接收方,是否有误;接收方也不回应 (可靠性有其他的上次协议保证)。其特点是传输速率快,效率更高 (也称之为:流媒体协议)。
TCP报文段
TCP将若干个字节构成一个分组,叫做报文段(Segment)
TCP报文段封装在IP数据报中
序号:发送端为每个字节进行编号,便于接收端正确重组
确认号:(ack)用于确认发送端的信息。表示接收方期望收到发送方下一个报文段的第一个字节数据的编号。也就是告诉发送方,我希望你下次发送的数据的第一个字节数据的编号为此确认号:传输是否有问题?
窗口大小:用于说明本地可接受数据段的数目,窗口大小是可变的
首部长度:表示TCP报文段的首部长度,共4位,由于TCP首部包含一个长度可变的选项部分,需要指定这个TCP报文段到底有多长。它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。该字段的单位是32位(即4个字节为计算单位),4位二进制最大表示15,所以数据便宜也就是TCP首部最大60字节。
控制位
- URG::紧急位,紧急指针有效位
- ACK: 确认位,只有当ACK=1,确认的序列号字段才有效I;ACK=0,确认号字段无效
- Ack:表示接收方期望收到发送方下一个报文段的第一个字节数据编号,确认传输是否有问题
- SEQ:tcp报文的序号
- SYN::同步位,连接位,同步序号位,tcp需要建立连接时,SYN=1建立连接
- FIN:断开位,tcp完成数据传输之后,需要断开连接,提出断开连接的一方,要把FIN,设为1
- PSH::急迫位,设为1时,要求接收方尽快的把数据放送应用层
- RST:重置位,RST=1时,要求重新建立tcp连接
- WIN:接受缓存区的空闲空间
三次握手&四次挥手
三次握手
当PC1想与PC2建立起链接,将连接信息写入报文
第一步:PC1会发送一个建立连接的请求报文(SYN),这个报文里有
报文的序号(Seq=x) 同步位(SYN=1)
请求建立连接......
第二步:当PC2收到消息以后,要回复一个报文,此报文里有
报文的序号(Seq=y) Ack确认号(我希望你下一次发送x+1序号的报文给你)
控制位 SYN=1 却认为 ACK=1
请求建立连接, PC2 同意建立连接
第三步:收到PC2同意建立连接的报文后
会发送一个x+1报文
会告诉对方 我希望你下次发送y+1的序号给我
最后将ACK=1封装进去
四次挥手
第1次:客户端发送一个FIN(断开位),通知服务器端 客户端要关闭连接了,客户端进入FIN_WAIT_1状态;
第2次:服务端收到FIN后,发送一个ACK=1(确认位)给客户端,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),服务端进入CLOSE_WAIT状态(半关闭状态);
服务端将剩下没有发送给客户端的数据传送给客户端;
第3次:服务端发送一个FIN,用来关闭服务端到客户端的数据传送,服务端进入LAST_ACK状态;
第4次:客户端收到FIN后,客户端进入TIME_WAIT状态,接着发送一个ACK给服务端,确认序号为收到序号+1(下图:w+1),服务端进入CLOSED状态,客户端等待2MSL,若没有回复也进入CLOSED状态。
PS:FIN标志位数置1,表示断开TCP连接。
TCP:基于连接控制,数据传输(加密),传输速度慢;不论是否建立还是断开连接都有一定的过程,所以数据通信安全度高。
TCP半关闭:一方已经停止发送数据,另一方还需要继续发送数据;一方先发FIN=1表示不再发数据,但接受不受影响。另一方回应ACK=1,确认不发送数据,但接受方还要继续传。接收方发送完数据则进入“挥手阶段”。
常用TCP端口号协议功能
http 80 tcp 超文本传输协议
https 443 tcp 数据加密、保护保存在客户端系统上的数据、验证、数据验证、可靠性
nginx 80 tcp
mysql 80 tcp
ftp 80 tcp 文件传输协议
ssh 22 tcp 远程访问控制协议