近期分享的网络知识包括HTTP协议、DNS协议、HTTPS协议、TCP协议、IP协议、TCP/IP、Web攻击及其他协议。今天内容是TCP协议。
TCP协议
1. 传输层
2. 作用
- 提供可靠的字节流服务
3. 大块数据分割成报文段(segment)
4. 三次握手
1) 发送端发带SYN标志的数据包给对方。
2) 接收端收到后,回传一个带有SYN/ACK标志的数据包以示传达确认信息。
3) 最后,发送端再回传一个带ACK标志的数据包,代表“握手”结束
握手某个阶段中断,TCP会以相同的顺序发送相同的数据包。
5. 四次挥手
- 客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送。
- 服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。
- 服务器B关闭与客户端A的连接,发送一个FIN给客户端A。
- 客户端A发回ACK报文确认,并将确认序号设置为收到序号加1。
6. 流量控制
- TCP接收端对发送端发送多少字节的数据进行控制,防止接收端处理不及而丢失数据
- 发送窗口的大小是受到接收窗口的控制的。
- 发送窗口必须根据接收端的大小及时调整发送窗口的大小,这个机制保证了每次TCP传输的数据量都是接收端可以及时处理的。
7. 差错控制
- 保证接收端接收的数据是完整未受损伤的,是可靠性的重要保证。
- 主要使用校验和、确认、超时重传这三个工具进行差错控制。
8. 拥塞控制
拥塞窗口:
- 发送方的窗口大小是接收窗口与拥塞窗口中的较小值。
- 拥塞窗口的大小又取决于网络的拥塞状况。
拥塞策略:
- 慢开始
- 拥塞避免
- 拥塞检测
拥塞控制流程:
1) 由于刚开始不清楚网络的拥塞情况,所以会首先采用慢开始算法,开始阶段,窗口大小由1指数增大,直到窗口大小到达门限值。
2) 窗口大小到达门限值后,就开始执行拥塞避免算法,之后窗口值按照线性规律增大,直到出现超时或者到达最大的窗口大小值。
3) 这个时候,会开始执行拥塞检测算法,也就是把门限值变为窗口大小的一半,之后继续执行拥塞避免算法,窗口大小按照线性规律增大。