- DNS
- Domain Name System
- ドメイン名と、そのドメイン名に対応したレコードの内容を問い合わせるために用いるプロトコル
- 特にAレコードであれば、アプリケーションのIPv4アドレス, AAAAレコードであればIPv6アドレス, MXレコードであればメールサーバのアドレス、というようにレコードの種類が決まっている
- HTTP
- HyperText Transfer Protocol
- HTMLを始めとする、様々なドキュメントの送受信に用いるプロトコル
- バージョンとしては 0.9, 1.0, 1.1, 2.0 などがあり、最近では HTTP/2.0 の普及が進みつつある
<例における通信内容>
1. DNS による名前解決
- `www.example.com` というアドレスの AAAAレコードを DNSサーバへ問い合わせている
- 手元の環境では 2606:2800:220:1:248:1893:25c8:1946 が返ってきた
2. `[2606:2800:220:1:248:1893:25c8:1946]` の443番ポート (HTTPS) と通信を行い、ドキュメントの内容を受信する
- 以下に通信内容を示す
- `>` から始まる行がクライアントが送信した内容である
- `<` で始まる行を含む、 `<` から始まらない行がサーバが送信した内容である
- `<` から始まる行がレスポンスヘッダと呼ばれる部分であり、その下の `<!doctype html>` から始まる部分がレスポンスボディ、つまりレスポンスの内容である。
```
> GET / HTTP/1.1
> Host: www.example.com
> User-Agent: curl/7.54.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Accept-Ranges: bytes
< Cache-Control: max-age=604800
< Content-Type: text/html
< Date: Sat, 23 Dec 2017 07:22:43 GMT
< Etag: "359670651+gzip"
< Expires: Sat, 30 Dec 2017 07:22:43 GMT
< Last-Modified: Fri, 09 Aug 2013 23:54:35 GMT
< Server: ECS (dca/2468)
< Vary: Accept-Encoding
< X-Cache: HIT
< Content-Length: 1270
<!doctype html>
<html>
<head>
(snip)
</head>
<body>
<div>
<h1>Example Domain</h1>
<p>This domain is established to be used for illustrative examples in documents. You may use this
domain in examples without prior coordination or asking for permission.</p>
<p><a href="http://www.iana.org/domains/example">More information...</a></p>
</div>
</body>
</html>```
続きを読む