harukin721

主に学習記録 🔗 wantedly.com/id/harukin721

基本的なネットワーク

ネットワーク

TCP/IP モデル

階層 説明 プロトコル
アプリケーション層 メッセージの形式、やりとりの手順 HTTP, SSH, FTP, SMTP
トランスポート層 接続の確立・パケットの分割 / 組み立て TCP, UDP
インターネット層 IPアドレスで指定された先にパケットを配送 IP, ICMP
リンク層 ハードウェアが通信を実現 イーサネット(有線LAN)、IEEE802.11(無線LAN)

TCPは、パケットの分割や届いたパケットを適切な順番でメッセージを組み立てたり、届かなかったパケットの再送をしたりする。 プロセスが接続を待ち受ける時は、IPアドレスとポート番号を指定して、その IPアドレスとポート番号宛のメッセージを受け取る。

基本的なコマンドたち

ping

2つのコンピュータ間で相互にパケットを送受信できることを確認する。 ICMP プロトコルを使って、指定したIPアドレスにパケットを送信、応答を受け取る。

ping < IPアドレス >

traceroute

ping と同じように ICMP プロトコルを使う。 パケットが相手のコンピュータに到達するまでに通過したルータを確認する。

tcmdump

Linux でコンピュータが受け取ったパケットを表示する。

1 -> 2 で ping を打っても通らない場合、

sudo tcpdump -n icmp  

2 で tcmdump で確認すると、1 からパケットが到達していることはわかる。 2 は 1 へ応答を返そうとするが 1 へのルーティングが適切じゃないので ping が通っていない。

ss

待ち受けているIPアドレスやポート番号を確認する。

sudo ss -antup

nc

TCP コネクションが確立できるか確認する。 通信がうまくいかないと状況で、アプリケーション層の問題なのかそれ以下の層の問題なのかを切り分ける。

nc -vz <IPアドレス><ポート番号>

通信の待ち受けを行う。

nc -l <IPアドレス><ポート番号>