TCP
1、概述
1.1 TCP(Transmission Control Protocol 传输控制协议)简介:
a,面向连接、可靠的、基于字节流的 传输层 通信协议;
b,数据传输时,应用层向TCP发送数据流,然后TCP将数据流分割成相应长度的报文段,TCP将结果包传输给IP层,由IP层通过网络将结果传输给目标的TCP层;
c,TCP为了保证不丢失包,给每个包一个序号(sequence number),同时序号也保证了数据的按序处理,接收端对已收到的包做出相应处理(ACK确认),如果在合理的时间段内未确认,对应的数据包被认为已丢失,发送端会进行重新传送;
d,TCP使用一个 校验和函数 来检验数据在传输过程中是否有误;
1.2 TCP flags:
URG:紧急指针标志 ACK:确认序号标志 PSH:push标志
RST:重置连接标志 SYN:同步序号,用于建立连接过程 FIN:finish标志,用于释放连接
1.3 TCP的三次握手:
TCP的三次握手是为了建立连接
第一次发送: 服务器处于Listen状态--->客户端发送SYN信号(建立连接)给服务器--->此时客户端处于SYN-SEND状态
第二次发送:服务器收到后回复SYN信号+ACK信号(确认)--->此时服务器处于SYN-RCVD状态
第三次发送:客户端收到信号后,发送ACK信号给服务器--->此时客户端、服务器端均处于ESTABLISHED状态,
双方进入全双工状态(通信双方可同时发送数据:计算机A可以给计算机B发送信息,发送的同时,计算机B也可以给计算机A发送信息);
容易出现的问题:
aa,
bb,建立连接后,客户端出现故障:
TCP提供 保活机制 ,在一段时间(保活时间)内,由配置好的发送端发送 保活探测报文,如果未收到则继续发送;
如果尝试次数达到约定的 次数,则视为 中断连接;
1.4 TCP的四次挥手:
TCP的四次挥手是为了关闭连接
第一次发送:服务器、客户端均处于ESTABLISH状态,客户端发送FIN信号给服务器,客户端状态变为FIN-WAIT-1
第二次发送:服务器接收到FIN信号后,发送ACK信号给客户端,服务器状态变为CLOSE-WAIT--->客户端收到服务的ACK信号后,状态变为FIN-WAIT-2
第三次发送:服务器再发送FIN+ACK信号给客户端,服务器端状态变为LAST-ACK
第四次发送:客户端收到服务器FIN+ACK信号后,发送ACK信号给服务器,状态变为TIME-WAIT,服务器收到客户端ACK信号后,状态变为CLOSED