初心者なので間違っているかもしれませんが、
おそらくデータリンク層に関する質問です。

例えばプログラムでIPプロトコルを使って、
LAN内のサーバにデータを送るということをしようとする場合、
プログラムではIPヘッダに対応するstruct sockaddr構造体のメンバに
情報を与えるということしか行っていないと思うのですが、
Ethernetヘッダはプログラムを書いてコンパイラを通すと、
送信処理を行う時は NICを通してEEPROMからMACアドレスを読み込んで
それを送信バッファに 書き込むという処理がアセンブラコードに
書かれていると考えていいのでしょうか?