localhostって何?curlで叩いていた「行き先」を整理してみる
はじめに
- 前回、curlを使ってGoサーバからレスポンスを確認しました。
- でも
localhost:8080の正体は、正直よく分かっていませんでした。 - 今回は、この「接続先」にフォーカスして記事を書いていこうと思います。
前回の記事はこちらになります。
localhostって何?
では、いつものようにGPTに聞いてみましょう。
localhost は「今使っている自分のPC自身を指す特別な名前」。
……どういうこと?
とりあえず「自分のPC自身」ということを覚えればいいのか?
もう少し具体例を交えて考えていきます。
私たちは普段、Webサイトにアクセスするとき
https://example.com のように、どこか別のサーバにアクセスしています。
一方で、今回の接続はどうなっているでしょうか。
curl http://localhost:8080
http://localhost:8080 にアクセスする。
つまりこれは、
「自分のPCに向かって通信している」
ということになります。
:8080 って何?
ここで少し引っかかりました。
:8080 って何?覚えないとだめ?
GPTにも聞いてみました。
これは ポート番号 と呼ばれるものです。
ポート番号。なるほど。
正直、今の段階でポート番号を全部覚える必要はありません。
「通信の行き先を区別するための番号」だと分かっていればOKそうです。
同じPCの中で、
どのプログラムに通信を届けるかを
ポート番号で指定している、という理解になります。
だからPCの中で複数のプログラムが
同時に通信を待ち受けることができるんだなと整理できました。
ちなみに 8080 という数字自体に特別な意味はありません。
開発用のサーバでよく使われる、空いていることが多い番号というだけです。
※ 実際には、IPアドレスやTCPといった仕組みが裏側で動いていますが、
今回は「接続先をイメージする」ことに集中するため、ここでは触れません。
今回のGoサーバは、次のコードで待ち受けていました。
http.ListenAndServe(":8080", nil)
つまり、
「8080番のポートで待っています」
という状態になります。
curlで何が起きているか整理する
ここまでをまとめると、
- localhost → 自分のPC
- 8080 → Goサーバが待っているポート
- curl → HTTPリクエストを送るクライアント
という関係になります。
curlを実行すると、
- curlが localhost:8080 にHTTPリクエストを送る
- OSが通信を仲介する
- Goサーバのプロセスがリクエストを受け取る
- レスポンスが返ってくる
という流れになっています。

まとめ
今回は、curlで叩いていた「行き先」である
localhost:8080 の正体を整理してみました。
- localhost は「自分自身のPC」
- ポート番号は「どのプログラムに届けるか」
- 同じPC内でもHTTP通信は成立する
記事にすることで、
自分自身の理解も少しずつ深まってきているなと感じます。
それではまた!
Discussion