一 . TCP/UDP介绍
TCP 、UDP都属于传输层协议
TCP协议:面向连接网络协议,是指两方建立通信之前要先建立连接。(类似于打电话)
传输更加安全可靠
UDP协议:无连接网络协议,指双方通信时不需要建立连接,直接进行通讯。(比如QQ聊天等)传输速度更快,效率更高
。
二 . TCP报文协议
源端口号
:
发送方进程的端口号
目标端口号
: 接收端进程的端口号
- 序号 : 发送端为每个字节进行编号,便于接收端正确重组
- 确认号 : 对发送端确认消息 (如确认号为x,就是表示前X-1个数据段都已经收到)
- 首部长度 : 用它可以确定首部数据结构的字节长度。(一般情况下TCP首部是20字节,但首部长度最大可以扩展为60字节。)
- 窗口大小 : 说明本地可接收数据段的数目,这个值根据网络的速度来增减下载速度)
- 控制位:
URG:紧急位。紧急指针有效位。
ACK:确认位。只有当 ACK=1 时,确认序列号字段才有效;当 ACK=0 时,确认号字段无效
PSH:急迫位。标志位为 1 时,要求接收方尽快将数据段送达应用层。
RST:重置位。当 RST 值为 1 时,通知重新建立 TCP连接。
SYN:同步/连接位。同步序号位,TCP需要建立连接时将这个值设为 1
FIN:断开位。当 TCP 完成数据传输需要断开连接时,提出断开连接的一方将这个值设为 1
校验和 : 进行校验传输的数据是否一致
紧急指针:和 URG配合使用,当 URG=1 时有效。
选项:在 TCP首部可以有多达 40 字节的可选信息。
三 . 三次握手 (重点
)
解释 :
- pc1发送一个
SYN报文(请求连接)
给pc2,- pc2接收到pc1的SYN报文后,发送一个
SYN报文+ACK报文(确认请求连接)
给pc1- pc1接收到pc2所发的报文后,发送一个
ACK报文
来进行确认
注:
图中 :ACK报文属于确认位,Acp属于确认号,不要搞混哦!
四 . 四次挥手 (重点
)
解释 :
- pc1发送一个
FIN / ACK 报文
给pc2 (此时pc1客户端进入等待断开连接状态)- pc2接收到pc1发送的请求断开报文之后回复一个
ACK报文
进行确认- pc2紧接着发送一个
FIN / ACK 报文
给pc1(此时pc2客户端进入等待断开连接状态)- pc1收到后发送
ACK报文
进行确认 (此时pc1进入时间等待状态 60秒后默认结束)
注:第一个pc1主机的ACK是指确认上层收到的状态回复
五 . UDP协议
无论是TCP还是UDP协议最重要的就是它们的端口号 切记
六 . 总结
- TCP是一个可靠的面向连接的协议
- TCP建立连接要经历三次握手
- TCP断开连接要经历四次挥手
- UDP是一个不可靠无连接协议