Conclusion
Raw sockets are a powerful mechanism to manipulate the underlying protocol. This chapter illustrated how you can use raw sockets to create ICMP and ICMPv6 applications through Winsock, but raw sockets can be used in a multitude of other applications—too many to discuss in a single chapter. To take full advantage of the capabilities of raw sockets and the header include option (IP_HDRINCL and IPV6_HDRINCL), you must thoroughly understand the IP protocol as well as any protocols encapsulated in it.