@prefix schema: <https://schema.org/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix ks: <https://comcomponent.com/vocab/> .

<https://comcomponent.com/blog/osi-model-packet-anatomy/#article>
    schema:about <https://comcomponent.com/knowledge/osi-model/>, <https://comcomponent.com/knowledge/tcp-ip-protocol-suite/> ;
    schema:mentions <https://comcomponent.com/knowledge/osi-protocol-suite/>, <https://comcomponent.com/knowledge/encapsulation/>, <https://comcomponent.com/knowledge/ethernet/>, <https://comcomponent.com/knowledge/mac-address/>, <https://comcomponent.com/knowledge/ipv4/>, <https://comcomponent.com/knowledge/arp/>, <https://comcomponent.com/knowledge/ttl/>, <https://comcomponent.com/knowledge/tracert/>, <https://comcomponent.com/knowledge/tcp/>, <https://comcomponent.com/knowledge/port-number/>, <https://comcomponent.com/knowledge/tls/>, <https://comcomponent.com/knowledge/http/>, <https://comcomponent.com/knowledge/dotnet-socket/>, <https://comcomponent.com/knowledge/dotnet-sslstream/>, <https://comcomponent.com/knowledge/dotnet-httpclient/>, <https://comcomponent.com/knowledge/wireshark/>, <https://comcomponent.com/knowledge/network-layer-troubleshooting/> .

<https://comcomponent.com/knowledge/osi-model/> a skos:Concept ;
    skos:prefLabel "OSI参照モデル"@ja ;
    skos:definition "ISOとITU-Tが定めた、通信機能を7層に分けて整理する参照モデルで、現実には実装の設計図としてではなく障害切り分けと会話のための語彙として使われている。"@ja ;
    skos:altLabel "OSI基本参照モデル"@ja ;
    skos:altLabel "ISO/IEC 7498-1" ;
    ks:recommendedFor <https://comcomponent.com/knowledge/network-layer-troubleshooting/> .

<https://comcomponent.com/knowledge/tcp-ip-protocol-suite/> a skos:Concept ;
    skos:prefLabel "TCP/IPプロトコルスイート"@ja ;
    skos:definition "現実のインターネットで動いている、リンク層・IP層・トランスポート層・アプリケーション層の実質4層でホストの要件を説明するプロトコル群。"@ja ;
    skos:altLabel "インターネットプロトコルスイート"@ja ;
    ks:succeeds <https://comcomponent.com/knowledge/osi-protocol-suite/> ;
    ks:uses <https://comcomponent.com/knowledge/encapsulation/> .

<https://comcomponent.com/knowledge/osi-protocol-suite/> a skos:Concept ;
    skos:prefLabel "OSIプロトコル群"@ja ;
    skos:definition "OSI参照モデルの7層それぞれに対応する形で標準化されていた実装用のプロトコル群。1990年代の普及競争でTCP/IPに敗れ、ほぼ使われないまま終わった。"@ja .

<https://comcomponent.com/knowledge/ethernet/> a skos:Concept ;
    skos:prefLabel "Ethernet(L2)"@ja ;
    skos:definition "同じネットワークセグメント内の隣接ノードまでMACアドレス宛にフレームを届ける、OSIのL2に相当する規格。"@ja ;
    skos:altLabel "Ethernet II" ;
    skos:altLabel "データリンク層"@ja ;
    ks:uses <https://comcomponent.com/knowledge/mac-address/> .

<https://comcomponent.com/knowledge/mac-address/> a skos:Concept ;
    skos:prefLabel "MACアドレス"@ja ;
    skos:definition "NICに割り当てられた識別子で、ルーターを越えるたびに宛先が貼り替えられる「次の1区間の相手」を指す宛名。"@ja ;
    ks:verifiedBy <https://comcomponent.com/knowledge/arp/> .

<https://comcomponent.com/knowledge/arp/> a skos:Concept ;
    skos:prefLabel "ARP"@ja ;
    skos:definition "IPアドレスから隣接ノードのMACアドレスを調べるプロトコルで、Windowsでは`arp -a`コマンドで対応表を確認できる。"@ja ;
    skos:altLabel "Address Resolution Protocol" .

<https://comcomponent.com/knowledge/ipv4/> a skos:Concept ;
    skos:prefLabel "IPv4(L3)"@ja ;
    skos:definition "ルーターを何段越えても最終目的地のホストまで届ける、通信の最初から最後まで変わらない宛先アドレスを持つ、OSIのL3に相当するプロトコル。"@ja ;
    skos:altLabel "IPアドレス"@ja ;
    skos:altLabel "ネットワーク層"@ja ;
    ks:uses <https://comcomponent.com/knowledge/ttl/> .

<https://comcomponent.com/knowledge/ttl/> a skos:Concept ;
    skos:prefLabel "TTL(Time To Live)"@ja ;
    skos:definition "IPv4ヘッダーのフィールドで、ルーターを1つ越えるたびに1ずつ減り、0になると破棄されて送信元にエラーが返る。"@ja .

<https://comcomponent.com/knowledge/tracert/> a skos:Concept ;
    skos:prefLabel "tracert"@ja ;
    skos:definition "TTLを1、2、3…と増やしながらパケットを送ることで、経路上のルーターを1つずつあぶり出すWindowsの経路調査コマンド。"@ja ;
    ks:uses <https://comcomponent.com/knowledge/ttl/> .

<https://comcomponent.com/knowledge/tcp/> a skos:Concept ;
    skos:prefLabel "TCP(L4)"@ja ;
    skos:definition "ポート番号でプロセスに振り分け、シーケンス番号・確認応答・再送・フロー制御によって信頼性のあるバイトストリームを提供する、OSIのL4に相当するプロトコル。"@ja ;
    skos:altLabel "Transmission Control Protocol" ;
    skos:altLabel "トランスポート層"@ja ;
    ks:uses <https://comcomponent.com/knowledge/port-number/> .

<https://comcomponent.com/knowledge/port-number/> a skos:Concept ;
    skos:prefLabel "ポート番号"@ja ;
    skos:definition "L4でどのプロセス(のソケット)にデータを渡すかを振り分けるための番号。実際に何が流れているかを保証する仕組みではない。"@ja .

<https://comcomponent.com/knowledge/http/> a skos:Concept ;
    skos:prefLabel "HTTP"@ja ;
    skos:definition "TCPの上を流れる、OSIのL7(アプリケーション層)に相当するテキストベースのプロトコル。"@ja .

<https://comcomponent.com/knowledge/tls/> a skos:Concept ;
    skos:prefLabel "TLS"@ja ;
    skos:definition "TCPの上でセッションの確立・管理と暗号化を担い、OSIのL5・L6に相当する役割の多くを現実に吸収しているプロトコル。"@ja ;
    skos:altLabel "Transport Layer Security" ;
    ks:uses <https://comcomponent.com/knowledge/tcp/> .

<https://comcomponent.com/knowledge/dotnet-sslstream/> a skos:Concept ;
    skos:prefLabel "SslStream(.NET)"@ja ;
    skos:definition "既存のストリーム(通常はTCPのNetworkStream)をラップしてTLSによる暗号化・認証を提供する.NETのクラス。"@ja ;
    ks:implements <https://comcomponent.com/knowledge/tls/> .

<https://comcomponent.com/knowledge/dotnet-socket/> a skos:Concept ;
    skos:prefLabel "Socket(.NET)"@ja ;
    skos:definition "TCP/UDPのL4バイトストリームを直接扱う.NETのAPIで、渡すのはL7のペイロードのみでヘッダーの生成はOSのプロトコルスタックが担う。"@ja ;
    skos:altLabel "System.Net.Sockets.Socket" .

<https://comcomponent.com/knowledge/dotnet-httpclient/> a skos:Concept ;
    skos:prefLabel "HttpClient(.NET)"@ja ;
    skos:definition "L7(HTTP)のリクエスト組み立てまで含めて任せられる.NETの高水準HTTPクライアントAPI。"@ja ;
    ks:implements <https://comcomponent.com/knowledge/http/> .

<https://comcomponent.com/knowledge/encapsulation/> a skos:Concept ;
    skos:prefLabel "カプセル化(層のペイロード構造)"@ja ;
    skos:definition "各層が自分のヘッダーだけを読み、内側の層の中身には関知せずそのまま上位・下位へ渡す、層構造の中心的な性質。"@ja ;
    ks:verifiedBy <https://comcomponent.com/knowledge/wireshark/> .

<https://comcomponent.com/knowledge/wireshark/> a skos:Concept ;
    skos:prefLabel "Wireshark"@ja ;
    skos:definition "キャプチャしたパケットをパケット詳細ペインとバイト列ペインで対応づけて表示できる、パケット解析ツール。"@ja .

<https://comcomponent.com/knowledge/network-layer-troubleshooting/> a skos:Concept ;
    skos:prefLabel "層ごとの障害切り分け"@ja ;
    skos:definition "リンクランプの目視からping・TCP接続確認・HTTPリクエストまで、下の層から1段ずつ生存確認して原因の層を絞り込む手法。"@ja ;
    skos:altLabel "OSIモデルでの障害切り分け"@ja ;
    ks:uses <https://comcomponent.com/knowledge/tcp/> ;
    ks:uses <https://comcomponent.com/knowledge/ipv4/> ;
    ks:uses <https://comcomponent.com/knowledge/http/> .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/tcp-ip-protocol-suite/> ;
    rdf:predicate ks:succeeds ;
    rdf:object <https://comcomponent.com/knowledge/osi-protocol-suite/> ;
    schema:description "1990年代の普及競争で先に動くものがあったTCP/IPが事実上の標準になり、OSIプロトコル自体はほぼ使われないまま終わった"@ja ;
    ks:evidence <https://www.itu.int/rec/T-REC-X.200-199407-I/en> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ethernet/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/mac-address/> ;
    schema:description "Ethernetヘッダーは宛先・送信元にMACアドレスを使い、同じセグメント内の隣接ノードまでフレームを届ける"@ja ;
    ks:evidence <https://www.rfc-editor.org/rfc/rfc894.html> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ethernet/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/arp/> ;
    schema:description "IPv4アドレス宛にEthernetフレームを送出する場合、宛先MACアドレスが未知であればそれを解決する手段が必要で、IPアドレスから隣接ノードのMACアドレスを引くのがARPである。IPv6ではARPの代わりにNDPが使われ、MACが既知の場合やIP以外の積み荷ではARPは介さない"@ja ;
    ks:evidence <https://www.rfc-editor.org/rfc/rfc826.html> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ipv4/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/ttl/> ;
    schema:description "IPv4ヘッダーはTTLフィールドを持ち、ルーターを1つ越えるたびに1ずつ減って0になると破棄される"@ja ;
    ks:evidence <https://www.rfc-editor.org/rfc/rfc791.html> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/tracert/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/ttl/> ;
    schema:description "tracertはTTLを1、2、3…とわざと増やしながら送ることで、途中のルーターを1つずつあぶり出す"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-server/administration/windows-commands/tracert> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/tcp/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/port-number/> ;
    schema:description "TCPはポート番号を使って、届いたホスト内のどのプロセス(のソケット)にデータを渡すかを振り分ける"@ja ;
    ks:evidence <https://www.rfc-editor.org/rfc/rfc9293.html> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/tcp/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/ipv4/> ;
    schema:description "IPv4上でTCPを使う場合、TCPのチェックサムはTCPセグメント単体ではなく送信元・宛先IPアドレスを並べた擬似ヘッダーを先頭に付けて計算すると定義されている。IPv6上のTCPではIPv6用の擬似ヘッダーが使われ、ipv4への依存ではない"@ja ;
    ks:evidence <https://www.rfc-editor.org/rfc/rfc9293.html> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ipv4/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/ethernet/> ;
    schema:description "IPv4はPPPやWi-Fiなど他のリンク層でも運ばれるが、本記事が例示するEthernetのリンクでは、IPv4パケットはEthernetフレームの積み荷(ペイロード)として運ばれ、EthernetはIPv4の中身を関知しない"@ja ;
    ks:evidence <https://www.rfc-editor.org/rfc/rfc894.html> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/http/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/tcp/> ;
    schema:description "HTTP/1.1やHTTP/2の場合、HTTPリクエストはTCPセグメントの積み荷として運ばれる。本記事のパケット解剖もHTTP/1.1 over TCPの例である。HTTP/3はUDP上のQUICを使うためTCPを介さない"@ja ;
    ks:evidence <https://www.rfc-editor.org/rfc/rfc9110.html> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/tls/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/tcp/> ;
    schema:description "TLSはTCPの上に確立されるプロトコルで、TCPが提供する信頼性のあるバイトストリームの上でハンドシェイクと暗号化を行う"@ja ;
    ks:evidence <https://www.rfc-editor.org/rfc/rfc8446.html> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dotnet-sslstream/> ;
    rdf:predicate ks:implements ;
    rdf:object <https://comcomponent.com/knowledge/tls/> ;
    schema:description "SslStreamは既存のストリーム(通常はTCPのNetworkStream)をラップし、TLSによる暗号化・認証の実装を担う"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/api/system.net.security.sslstream> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dotnet-socket/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/tcp/> ;
    schema:description "SocketクラスはUDPなど他のプロトコルでも使えるが、TCPソケットとして構築した場合、アプリケーションが渡すのはL7のバイト列のみで、TCP/IPヘッダーの生成はOSのプロトコルスタックが行う"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/api/system.net.sockets.socket> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dotnet-httpclient/> ;
    rdf:predicate ks:implements ;
    rdf:object <https://comcomponent.com/knowledge/http/> ;
    schema:description "HttpClientを使えばHTTPリクエストの組み立てまで含めてライブラリに任せられる"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/api/system.net.http.httpclient> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/tcp-ip-protocol-suite/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/encapsulation/> ;
    schema:description "TCP/IPスタックの各層は自分のヘッダーだけを読み、内側の層の中身には関知せずそのまま上位へ渡すカプセル化の構造で動く"@ja ;
    ks:evidence <https://datatracker.ietf.org/doc/html/rfc1122> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/encapsulation/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/wireshark/> ;
    schema:description "各層がバイト範囲として物理的に入れ子になっていることは、Wiresharkのパケット詳細ペインとバイト列ペインの対応表示で確認できる"@ja ;
    ks:evidence <https://www.wireshark.org/docs/wsug_html_chunked/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/mac-address/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/arp/> ;
    schema:description "IPアドレスと隣接ノードのMACアドレスの対応は、Windowsの`arp -a`コマンドで確認できる"@ja ;
    ks:evidence <https://www.rfc-editor.org/rfc/rfc826.html> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/osi-model/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/network-layer-troubleshooting/> ;
    schema:description "OSI参照モデルが実務で本当に役立つのは、下の層から1段ずつ生存確認していく障害の切り分けと、責任分界点を短く伝えるチーム間の会話である"@ja ;
    ks:evidence <https://learn.microsoft.com/powershell/module/nettcpip/test-netconnection> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/network-layer-troubleshooting/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/tcp/> ;
    schema:description "L4が生きているかの確認には、相手ポートへのTCP接続を試す(Test-NetConnectionなど)手順を使う"@ja ;
    ks:evidence <https://learn.microsoft.com/powershell/module/nettcpip/test-netconnection> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/network-layer-troubleshooting/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/ipv4/> ;
    schema:description "L3が生きているかの確認には、ゲートウェイや相手ホストへのpingを使う"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-server/administration/windows-commands/ping> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/network-layer-troubleshooting/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/http/> ;
    schema:description "L7が生きているかの確認には、curlやアプリ本体からのHTTPリクエスト送信を使う"@ja ;
    ks:evidence <https://www.rfc-editor.org/rfc/rfc9110.html> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .
