TCP/IPをあらためて勉強している。手を動かすと記憶に残りやすいので、TCPの特徴の一つであるスリーウェイハンドシェイクをtcpdumpを使用して確認してみる。
6
tcpdump
とcurl
を使用して、HTTPSにおけるTCPのスリーウェイハンドシェイクを確認する。
tcpdump
でHTTPS通信のTCPパケットをキャプチャ開始する。
(ネットワークインターフェースはeth0
と仮定する。)
$ sudo tcpdump -tnl -i eth0 port 443
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
curl
でhttps://example.org
にリクエスト送信する。
$ curl --head https://example.org
HTTP/2 200
content-encoding: gzip
accept-ranges: bytes
age: 507109
cache-control: max-age=604800
content-type: text/html; charset=UTF-8
date: Fri, 15 Apr 2022 23:44:07 GMT
etag: "3147526947+gzip"
expires: Fri, 22 Apr 2022 23:44:07 GMT
last-modified: Thu, 17 Oct 2019 07:18:26 GMT
server: ECS (sab/56F3)
x-cache: HIT
content-length: 648
--head
オプションは、レスポンスヘッダのみを表示する。
スリーウェイハンドシェイクでTCPコネクションが確立されている。
$ sudo tcpdump -tnl -i eth0 port 443
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
IP 192.0.2.0.54321 > 93.184.216.34.443: Flags [S], seq 3730146218, win 62727, options [mss 8961,sackOK,TS val 3536179360 ecr 0,nop,wscale 6], length 0 // ---(1)
IP 93.184.216.34.443 > 192.0.2.0.543210: Flags [S.], seq 1871064812, ack 3730146219, win 65535, options [mss 1460,sackOK,TS val 889923695 ecr 3536179360,nop,wscale 9], length 0 // ---(2)
IP 192.0.2.0.54321 > 93.184.216.34.443: Flags [.], ack 1, win 981, options [nop,nop,TS val 3536179464 ecr 889923695], length 0 // ---(3)
IP 192.0.2.0.54321 > 93.184.216.34.443: Flags [P.], seq 1:518, ack 1, win 981, options [nop,nop,TS val 3536179472 ecr 889923695], length 517
IP 93.184.216.34.443 > 192.0.2.0.54321: Flags [.], ack 518, win 131, options [nop,nop,TS val 889923807 ecr 3536179472], length 0
SYN:接続開始要求、ACK:確認応答
tcpdump
はもとても機能が豊富なツール。また-w
オプションで.pcapng
ファイルに保存して、Wiresharkで見ることもできる。
No comments yet.
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。