title: Send Raw IP packet in C#, everything above the ethernet layer
body: <p>I don't want to modify the ethernet portions of the frame, but I need to modify the IP packet and the data portion of the frame. </p>
  
  <p>I try sending a raw frame and it still puts in the IP information. I basically need to send a frame without defining the endpoint except in the bits I'm sending.</p>
  
  <p><strong>Here's what I got:</strong></p>
  
  <pre><code>Socket s = new Socket(AddressFamily.Unspecified, SocketType.Raw, ProtocolType.Raw);
  EndPoint ep = new IPEndPoint(IPAddress.Parse("205.188.100.58"),80);
  s.SendTo(GetBytes(""),ep); //im sending nothing, so i expect the frame to just have ethernet stuff
  s.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.HeaderIncluded, false);
  </code></pre>
  
  <p><strong>My question:</strong> 
  Using SendTo adds the IP portion of the frame, I don't want that as I want to spoof the source IP. Using "Send" will crash because it says I need to specify an endpoint. Any suggestions on what to do? I just want to send a packet and define the IP section and data section myself.</p>
  
  <p>Note: No I'm not making a DOS attack, I need this for a legitimate use!</p>
  
  <p>I know how to define the IP portion, its just a matter of actually sending the data without a generated IP portion.</p>