【学习】TCP/IP协议原理
TCP协议是端到端的传输控制协议,之所以是“端到端”的协议,是因为”路由“是由IP协议负责的,TCP协议负责为两个通信端点提供可靠性保证,这个可靠性不是指一个端点发送的数据,另一个端点肯定能收到(这显然是不可能的),而是指,数据的可靠投递或者故障的可靠通知。
TCP的可靠性通过以下方式来保证:
1.超时重传:TCP每发送出一个报文段后,都会启动一个定时器,对目的端传回的确认信息进行确认计时,超时后便重传。
2.确认信号:当TCP收到一个来自TCP的报文段后,便会发送回一个确认信号。
3.检验和:TCP将始终保持首部和数据的检验和,如果收到的报文段的检验和有差错,便将其丢弃,希望发送端超时重传。
4.重新排序:由于IP数据报的达到可能失序,因此TCP将会数据进行重新排序,以正确的顺序交给应用层。
5.丢弃重复:由于IP数据报有可能重复,因此TCP将会丢弃重复的数据。
6.流量控制:TCP连接的两端都有固定大小的缓冲区空间,TCP接受端只允许对端发送本端缓冲区能容纳的数据。
TCP提供流量控制。在双方进行交互时,会彼此通知自己目前接收缓冲区最多可以接收的数据量(通告窗口),以此确保发送方发送的数据不会溢出接收缓冲区。 TCP数据包主要包括:
1. SYN包:请求建立连接的数据包
2. ACK包:回应数据包,表示接收到了对方的某个数据包
3. PSH包:正常数据包
4. FIN包:通讯结束包
5. RST包: 重置连接
导致TCP协议发送RST包的原因:
1)SYN 数据段指定的目的端口处没有接收进程在等待。
2)TCP协议想放弃一个已经存在的连接。
3)TCP接收到一个数据段,但是这个数据段所标识的连接不存在。
接收到RST数据段的TCP协议立即将这条连接非正常地断开,并向应用程序报告错误。
6. URG包: 紧急指针
1. SYN包:请求建立连接的数据包
2. ACK包:回应数据包,表示接收到了对方的某个数据包
3. PSH包:正常数据包
4. FIN包:通讯结束包
5. RST包: 重置连接
导致TCP协议发送RST包的原因:
1)SYN 数据段指定的目的端口处没有接收进程在等待。
2)TCP协议想放弃一个已经存在的连接。
3)TCP接收到一个数据段,但是这个数据段所标识的连接不存在。
接收到RST数据段的TCP协议立即将这条连接非正常地断开,并向应用程序报告错误。
6. URG包: 紧急指针