【はんどしぇいく】
ハンドシェイク とは?
💡 通信の始まりは、まず握手から
📌 このページのポイント
- ハンドシェイクは通信開始前にお互いの準備を確認するやりとり
- TCPでは3ウェイハンドシェイク(SYN → SYN-ACK → ACK)で接続を確立する
- TLSハンドシェイクでは暗号方式の合意と鍵交換を行う
- ハンドシェイクの回数が多いほど通信開始までの遅延が増える
ハンドシェイクって、コンピュータが握手するの?
比喩だけど、やってることは本当に似てるよ。通信を始める前に『こんにちは、つながってもいい?』『いいよ、準備できたよ』『じゃあ始めよう!』ってお互いに確認し合うんだ。これがTCPの3ウェイハンドシェイクだね。
いきなりデータを送っちゃダメなの?
ダメではないけど、相手が受け取れる状態かわからないよね。手紙を送るのと電話するのの違いに近くて、電話なら『もしもし』『はい』って確認してから話し始めるでしょ?ハンドシェイクがないと、相手が落ちてるのにデータを送り続ける無駄が発生しちゃうんだ。
TLSのハンドシェイクはまた別物なの?
TCPで接続を確立した後に、さらにTLSハンドシェイクで暗号化の準備をするんだ。『どの暗号方式を使う?』『この証明書で本人確認してね』『暗号鍵を共有しよう』っていうやりとりをしてから、やっと暗号化通信が始まる。HTTPSのサイトにアクセスするとき、裏では毎回このハンドシェイクが行われているよ。
毎回やるのって遅くならないの?
📖 おまけ:英語の意味
「handshake」 = 握手
💬 人間同士が握手で信頼を確認するように、コンピュータも通信前に合意を取り交わすことからこう呼ばれる