音声信号の圧縮符号化方式には、通常0.3 - 3.4kHz帯域のものが用いられるが、0.05 - 7kHz帯域のものも使用される。狭い帯域で多数チャネルが必要な場合に、音声が一定のレベル以下のときにパケットを送出しない無音圧縮の手法が使われ、頭切れや演算負荷の増加の原因になることもある。リアルタイム性を重視し再送信を行わないRTPを使用して音声パケットを送り、パケット通信網の遅延時間のばらつきによるパケットの間隔や順序の乱れを吸収するため、受信側にバッファメモリが使用される。バッファメモリによる遅延時間は、回線の状況が良いときは小さく、悪いときは大きく調整される。途中で破棄されたパケットは、直前のパケットのデータから演算した音声やホワイトノイズなどの挿入で補正される。バッファ補正の遅延時間の影響で、みなし音声方式の場合ファクシミリなどのモデムやDTMFを使用した通信がうまくいかない場合がある。そのため、デジタルデータのパケットとしてファクシミリを送るための専用プロトコルであるT.38対応のゲートウェイを使用することもある。→InternetFAXを参照。
呼制御を行う通信プロトコルとしてSession Initiation Protocol（SIP）が良く使われる。他にもH.323と言う通信プロトコルもある。開発コスト・検討期間等の問題があるため、IP電話網間は、発着信二者間のSIPサーバ連携となった。
VoPNは、データ通信網と伝送路や交換設備を共用することを目的としてはじめられた。VoFRは、X.25よりも遅延が少ないフレームリレーを使用するものである。IP加入者網が無かった時代に内線電話として普及したが、IP網の価格の低下と速度の向上、提供地域の拡大により撤去が進んだ。VoAは、従来の電話網で必要となる電話交換機をパケット通信とリアルタイム通信とを多重化するために開発されたATM交換機に置き換えるものである。高価で有資格者による保守を必要とするものであり、電気通信事業者の携帯電話・固定電話などの公衆交換電話網で使用されているものがほとんどである。VoIPは、1990年代後半より、インターネット電話と呼ばれる、スピーカー・マイクロフォンまたは、ヘッドセットを接続したパソコンにソフトウェアをインストールする方式で利用されていたが、使い勝手が悪く、遅延・エコー・欠落などにより音質も従来の電話より劣るものであった。2000年代より、ADSL・FTTH・広域イーサネットといった常時接続・高速・定額制のIP加入者回線が普及し、Resource Reservation Protocol (RSVP) などのQoS機能で音質が改善された。また、専用機器の開発に伴い一般の電話と同じ操作・機能となり、公衆網への発信が可能になり、電話番号の割り当てにより公衆網などからの着信が可能となった。また、無線LAN上でのVoIPに関する技術を特にVoWLAN (Voice over Wireless LAN) と言うこともある。
Voice over Internet Protocol（ボイス オーバー インターネット プロトコル、VoIP（ブイ オー アイピー、ボイップ、ボイプ）、Voice over IP（ボイス オーバー アイピー））とは、音声を各種符号化方式で符号化および圧縮し、パケットに変換したものをIPネットワークでリアルタイム伝送する技術である。Voice over Frame Relay (VoFR) ・Voice over ATM (VoA) などと同じVoice over Packet Network (VoPN) の一種。この項では「VoIP」の技術とIP電話の網構成を記述する。その他については関連項目も参照のこと。
アドホック多態性は単にソースコードの記述を一部自動化するものである。関数オーバーロードは引数の並び方パターンによって同じ名前のメソッドをコンパイル時に自動的に差別化する機能である。演算子オーバーロードは、扱う数値の型に従って宣言された演算記号を関数名と見なすようにし、単項演算子なら右の数値を第一引数とし、二項演算子なら左右の数値をそれぞれ第一第二引数として関数呼び出しのコードが生成されるという仕組みだった。丸括弧の演算子は関数オブジェクトの表現として使用出来た。これらは静的な多態性とされる。パラメータ多態性もソースコードの記述を一部自動化するものである。関数＆クラスのコード内の特定の型部分をワイルドカードにして記述しておき、ソースコード内で具体的な型の指定と共に関数＆クラスの呼び出しが記述されると、その型を先のワイルドカードに当てはめた関数＆クラスのコードがコンパイル時に自動生成されるという機能だった。＆の前者はジェネリック関数と呼ばれ、後者はより広い範囲を扱う事からジェネリックプログラミングと名付けられた。これらも静的な多態性に位置付けられている。サブタイプ多態性は動的なものである。最も初期のOOPであるSimula67は、シミュレーション内で扱う多種多様なオブジェクトを継承によって体系化したが、コード部分の細かな違いは共通スーパークラスに属する共通プロシージャ内の分岐フローで処理していた。サブクラスの数だけ分岐構文が増える頻雑さを解消するために、共通プロシージャをただの仮想関数テーブルにしてサブクラスの実装時に同名プロシージャのアドレスを収納させ、共通プロシージャ呼び出し時にそのアドレスへジャンプするという機能が考案された。仮想関数テーブルはプロシージャの仮想的存在と見なされたので、この機能は仮想関数と呼ばれた。動的ディスパッチはSmalltalkのオブジェクト設計に由来するものであり、その実装の仕方は様々でやや曖昧な仕様でもある。メッセージを受け取ったレシーバーがオブジェクト内部で動的な状態に従い動的な処理を行って結果を返すというランタイム環境上のプロセスが後に動的ディスパッチのカテゴリで括られた。分散コンピューティングを表現するオブジェクト間通信とそれに基づくソフトウェアコンポーネントも動的ディスパッチに該当するものである。多重ディスパッチは動的な関数オーバーロードに近いものである。関数コール時または関数ブロック内で、それぞれの引数が動的に型審査されて型変化（dynamic casting）された後に、その引数パターンに対応した同名関数または分岐ルーチンに処理が移行されるという動的変化プロセスを指した。ダブルディスパッチは多重ディスパッチの亜流的存在であり、二通りの考え方がある。動的型審査および型変化されるBオブジェクトを単一引数にしてAオブジェクトの仮想関数メソッドを呼び出す形態と、多重ディスパッチに用いる引数を二つに限定した形態である。いずれも実行時状態に応じた動的変化プロセスとなった。これは主にデータ集合を対象にして分類、解析、作用といった処理を連続的または再帰的に行うアルゴリズムで用いられた。