UDP通信でNat越えしたいんですが、
パケット、セッションについて教えてください。

ネットでサンプルプログラムを見ると、クライアント側では
while( true ) {

送信処理(サーバへ)
受信処理(送信処理で使ったsockaddrを使用)
}

こんな感じになっているんですが、このときの送信処理というのは何回も
必要なのでしょうか?

また、発信元ポートというのは、宛先が同じ間でも変わることがあるのでしょうか?

ちなみにNat越えはNat内のクライアントと外部のサーバ間を想定しています。