SYN Spoofing
Along with the basic flooding attack, the other common classic DoS attack is the SYN spoofing attack. This attacks the ability of a network server to respond to TCP connection requests by overflowing the tables used to manage such connections. This means future connection requests from legitimate users fail, denying them access to the server. It is thus an attack on system resources, specifically the network handling code in the operating system. To understand the operation of these attacks, we need to review the three-way handshake that TCP uses to establish a connection. This is illustrated in the following figure. The client system initiates the request for a TCP connection by sending a SYN packet to the server. This identifies the client’s address and port number and supplies an initial sequence number. It may also include a request for other TCP options.
![](http://2.bp.blogspot.com/-CFYNQvCOJCA/VJarmfNAPbI/AAAAAAAAAD8/qEBXib2zhgs/s1600/synFlood%2BAttack.png)
The server records all the details about this request in a table of known TCP connections. It then responds to the client with a SYN-ACK packet. This includes a sequence number for the server and increments the client’s sequence number to confirm receipt of the SYN packet. Once the client receives this, it sends an ACK packet to the server with an incremented server sequence number and marks the connection as established. Likewise, when the server receives this ACK packet, it also marks the connection as established. Either party may then proceed with data transfer. In practice, this ideal exchange sometimes fails. These packets are transported using IP, which is an unreliable, though best-effort, network protocol. Any of the packets might be lost in transit, as a result of congestion, for example. Hence both the client and server keep track of which packets they have sent and, if no response is received in a reasonable time, will resend those packets. As a result, TCP is a reliable transport protocol, and any applications using it need not concern themselves with problems of lost or reordered packets. This does, however, impose an overhead on the systems in managing this reliable transfer of packets