Send a raw packet with W5100

History:
So, I have a linux server on my house and I use it as Server with multiple uses. I have port forwarded most of the services I run in the server so am able to use them out of my house (Samba Server, Open VPN...). Although, because the PC I use is an old one with a very high power consumption, I dont want to have the server always running and I want to be able to wake it from outside of the house. I tried many different ways in order to accomplish that and finally what I did (and I am using it for almost a year), I used a raspberry pi with a python program that runs socket, and when I ping the raspberry pi from outside of the house with an other python scri[t (on a specific port), It sends the packet to wake the server so I will be able to use the other services. Sadly, I need to use the raspberry for an other reason so I must replace it with something else to do the same job.

Problem:
I have an arduino uno with a W5100 ethernet shield and I have already made a web page on it so I get in the webpage and press a button to wake the pc. I have managed it do it all until the send package thing.
I have searched on the internet MANY hours to find a WOL solution on my problem but most of them has an error in compiling or are big or other resons. I read about the structure of the WOL package and its pretty easy (1 * broadcast MAC + 16 * target MAC) and I deiced that it will be easier to make my own WOL program by creating the packet from the start.

So, I also searched how to send RAW packages with Bytes on the network and I couldn't find a solution. My question is: How can I send RAW packages in the network with Arduino and W5100?

Thanks in advance!!!

[EDIT] I just read how big the topic is and I am sorry for all the useless details

This thread shows you how to send raw packets.