TCP协议简介
前言
TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。
TCP的特性
- TCP提供一种面向连接的, 可靠的字节流服务;
- 在一个TCP连接中,仅有两方进行彼此通信。广播和多播不能用于TCP;
- TCP使用校验和, 确认和重传机制来保证可靠传输;
- TCP使用累积确认
- TCP使用滑动窗口机制来实现流量控制,通过动态改变窗口的大小进行拥塞控制
TCP三次握手与四次挥手
三次握手
-
所谓三次握手(Three-way Handshake),是指建立一个 TCP 连接时,需要客户端和服务器总共发送3个包。
三次握手的目的是连接服务器指定端口,建立 TCP 连接,并同步连接双方的序列号和确认号,交换 TCP 窗口大小信息。在Socket 编程中,客户端执行
connect()时。将触发三次握手。
1
|
1. 第一次握手(SYN=1, seq=x);
|
三次握手的过程的示意图如下:
四次挥手
TCP的连接的拆除需要发送四个包,因此称为四次挥手(Four-way handshake),也叫做改进的三次握手。客户端或服务器均可主动发起挥手动作,在 socket 编程中,任何一方执行 close() 操作即可产生挥手操作。
1
|
1. 第一次挥手(FIN=1, seq=x);
|
四次挥手的示意图如下:
SYN攻击
- 什么是 SYN 攻击(SYN Flood)?
1
|
在三次握手过程中,服务器发送 SYN-ACK 之后,收到客户端的 ACK 之前的 TCP 连接称为半连接(half-open connect)。此时服务器处于 SYN_RCVD 状态。当收到 ACK 后,服务器才能转入 ESTABLISHED 状态.
|
- 如何检测 SYN 攻击?
1
|
检测 SYN 攻击非常的方便,当你在服务器上看到大量的半连接状态时,特别是源IP地址是随机的,基本上可以断定这是一次SYN攻击。在 Linux/Unix 上可以使用系统自带的 netstats 命令来检测 SYN 攻击。
|
- 如何防御 SYN 攻击?
1
|
SYN攻击不能完全被阻止,除非将TCP协议重新设计。我们所做的是尽可能的减轻SYN攻击的危害,常见的防御 SYN 攻击的方法有如下几种:
|
欢迎关注技术公众号: 零壹技术栈
零壹技术栈
本帐号将持续分享后端技术干货,包括虚拟机基础,多线程编程,高性能框架,异步、缓存和消息中间件,分布式和微服务,架构学习和进阶等学习资料和文章。
本博文账号将持续分享后端技术干货,包括虚拟机基础,多线程编程,高性能框架,异步、缓存和消息中间件,分布式和微服务,架构学习和进阶等学习资料和文章。



浙公网安备 33010602011771号