neue Ethernet Shields mit eigenartigen Verhalten

Das Ping funktioniert, aber das Webserverbeispiel nicht, kann z.B. durch einen Fehler im Sketch kommen.
Der Wiznet 5100 Chip bildet intern den kompletten TCP-Stack, ICMP und was weiss ich nicht alles ab. Darum muss sich der Arduino nicht kümmern. Wenn die Initialisierung des Chips soweit klappt, das er seine IP bekommt, dann reagiert der auch auf ein Ping, selbst wenn der Webserversketch oder was auch immer nicht richtig läuft.
Hast Du mal ein wenig "debug"-Code in den Sketch eingebaut und auf der seriellen Konsole Meldungen ausgegeben, wo im Sketch sich Dein Programm gerade befindet? Das hilft in der Regel auch, Fehler einzugrenzen.
Ich würde bei Deinem Sketch auf jeden Fall noch die Netzmaske ergänzen und an das Ethernet.begin() mit übergeben. Dabei aufpassen, das dann auch die anderen Parameter wenigstens mit übergeben werden müssen (Gateway und DNS).
Hast Du evtl. noch irgendein Gerät laufen das die gleiche MAC-Adresse die Du im Sketch eingestellt hast verwendet (z.B. ein anderer Arduino mit Ethernet-Shield), das kann auch die seltsamsten Effekte verursachen. Ebenso, wenn die gleiche IP schon verwendet wird. Wenn Du von Deinem iMac erfolgreich einen PING absetzen konntest, dann ruf im "Terminal" mal den Befehl "arp -a" auf. Dann bekommst Du eine Liste aller MAC-Adressen mit den dazugehörigen IPs die Dein Mac "gelernt" hat. Schau, das die MAC-Adresse der 192.168.178.177 auch die vom Arduino ist.

Im "Terminal" kannst Du auch folgendes mal probieren:
"nc -v -z 192.168.178.177 80"
Damit wird ein TCP-Verbindungsaufbau auf Port 80 gemacht. Das ist "nur" der TCP-Handshake und sollte auch klappen, wenn Dein Arduino auf Port 80 lauscht, aber die Verarbeitung einer ankommenden HTTP-Anfrage aus irgendeinem Grund nicht klappt.
So kannst Du dich ggf. an das eigentliche Problem herantasten.
Mario.