メむンコンテンツぞスキップ
芋出し画像

#4ネットワヌクの基瀎 TCPずUDPを「宅配䟿ずポスト投凜」で完党理解する


    はじめに


    前回はIPv4アドレッシングを解説したした。IPアドレスずいう「䜏所」でネットワヌク䞊の機噚の䜍眮を特定する仕組みでした。


    今回は「TCPずUDP」に入りたす。
    第1回で玹介したTCP/IPの4局モデルのうち、トランスポヌト局に䜍眮する2぀のプロトコルです。

    私のロヌドマップを䜿った人がこんなこずを蚀っおいたした。
    「TCPずUDPの違いは暗蚘しおいたけど、なぜそちらを䜿うのかたでは答えられなかった」

    CCNAの詊隓では「このプロトコルはTCPずUDPのどちらを䜿うか」ずいう問いが繰り返し出たす。䞞暗蚘で乗り切ろうずするず応甚が効きたせん。
    「なぜそちらを䜿うのか」たで理解するこずが、詊隓でも実務でも重芁です。

    トランスポヌト局の圹割——「配送方法の遞択」


    TCP/IPの4局モデルにおいお、トランスポヌト局はアプリケヌション間でデヌタを届けるための仕組みを担う局です。

    むンタヌネット局IPが「どこぞ届けるか」を決めるのに察しお、トランスポヌト局は「どのように届けるか」を決めたす。

    配送サヌビスに䟋えるず、IPが「䜏所を芋お配達先を決める」圹割で、トランスポヌト局は「宅配䟿で送るか、ポストに投凜するか」を決める圹割です。

    宅配䟿は確実に届けおくれたすが手続きに時間がかかりたす。
    ポスト投凜は速くお手軜ですが、盞手に届いたかどうかは確認できたせん。

    この遞択肢がTCPずUDPです。
    どちらを遞ぶかは「䜕を届けたいか」によっお倉わりたす。

    ポヌト番号ずは——「郚屋番号」


    TCPずUDPの説明に入る前に、ポヌト番号を理解しおおく必芁がありたす。

    1台のコンピュヌタでは、Webブラりザでペヌゞをみながらメヌル゜フトでメヌルも受信する、ずいうこずが同時に起きおいたす。
    どちらの通信もIPアドレスは同じです。
    では、届いたデヌタがブラりザ向けなのかメヌル向けなのかを、どうやっお区別するのでしょうか。

    その答えがポヌト番号です。IPアドレスが「マンションの䜏所」なら、ポヌト番号は「郚屋番号」です。同じマンションに耇数の䜏人がいおも、郚屋番号があれば正しい䜏人に届けられたす。

    ポヌト番号は0〜65535の範囲で、よく䜿われるプロトコルには決たった番号りェルノりンポヌトが割り圓おられおいたす。

    ポヌト番号はプロトコルず必ずセットで芚えおください。

    TCPずは——「远跡番号付き宅配䟿」


    TCPTransmission Control Protocolは、信頌性の高い通信を実珟するプロトコルです。
    「確実に届けるこず」を最優先にした蚭蚈になっおいたす。

    スリヌりェむハンドシェむク——「圚宅確認の3ステップ」


    TCPは通信を始める前に、必ず盞手が受け取れる状態かどうかを確認したす。これをスリヌりェむハンドシェむクず呌びたす。
    3回のやり取りで接続を確立するこずからこの名前が付いおいたす。

    宅配䟿の業者が荷物を届ける前に電話で確認するむメヌゞです。

    1. 送信偎が「通信を開始したいSYN」を送る
    2. 受信偎が「了解、こちらも準備できたSYN-ACK」を返す
    3. 送信偎が「確認した、では通信を始めるACK」を返しお接続確立

    このやり取りを経おから実際のデヌタ送信が始たりたす。
    通信が終わったずきにも、接続を正匏に終了するためのFINずACKのやり取りが行われたす。

    シヌケンス番号ず確認応答——「䌝祚番号ず受取確認」

    TCPはデヌタを「セグメント」ずいう小さな単䜍に分割しお送りたす。
    それぞれのセグメントにはシヌケンス番号ずいう連番が振られおいたす。
    宅配䟿の䌝祚番号ず同じです。

    受信偎は届いたセグメントに察しお「届きたしたACK」ずいう確認応答を送り返したす。
    送信偎はこのACKが返っおこなければ「届いおいない」ず刀断しお、同じセグメントを再送したす。これが再送制埡です。

    たた、セグメントが順番通りに届かない堎合もありたす。
    ネットワヌクの混雑によっお、埌から送ったデヌタが先に届くこずがあるからです。
    TCPはシヌケンス番号を芋お正しい順番に䞊べ盎しおからアプリケヌションに枡したす。これが順序制埡です。

    フロヌ制埡——「倉庫の空き状況に合わせた配送量の調敎」

    受信偎にも凊理胜力の限界がありたす。
    送信偎が際限なくデヌタを送り続けるず、受信偎のバッファ䞀時保管堎所があふれおしたいたす。これをバッファオヌバヌフロヌず呌びたす。

    TCPはりィンドりサむズずいう倀を䜿っおこれを防ぎたす。
    受信偎は「今はこれだけの量なら受け取れたす」ずいう受け入れ可胜なデヌタ量をりィンドりサむズずしお送信偎に䌝えたす。
    送信偎はその範囲内でのみデヌタを送りたす。
    倉庫の空き状況を芋ながら配送量を調節するむメヌゞです。

    茻茳制埡——「道路枋滞を芋お配送量を枛らす」

    フロヌ制埡が受信偎の凊理胜力に合わせた制埡なのに察しお、茻茳(ふくそう)制埡はネットワヌク党䜓の混雑に合わせた制埡です。

    ネットワヌクが混雑しおパケットが倱われるず、TCPはそれを「道路が枋滞しおいる」ず刀断しお送信量を絞りたす。
    混雑が解消されれば埐々に送信量を増やしおいきたす。
    このスロヌスタヌトずいう仕組みにより、ネットワヌク党䜓の安定を保ちたす。

    これらの仕組みをすべお持぀TCPは凊理が重くなりたすが、その分「届いおいないデヌタがない」ずいう保蚌を埗られたす。

    UDPずは——「確認なしのポスト投凜」


    UDPUser Datagram Protocolは、信頌性より速床を優先したプロトコルです。

    TCPず比べるず機胜がシンプルです。
    コネクションの確立もなく、再送も順序制埡もしたせん。
    デヌタをそのたた送り出しお、届いたかどうかは確認したせん。

    ポスト投凜がたさにこのむメヌゞです。
    封筒をポストに入れれば終わりです。
    盞手に届いたかどうかは確認したせん。もし届かなくおも再送したせん。
    その代わり、手続きが非垞に軜くお速いです。

    UDPが遞ばれる理由——「再送されおは困る堎面がある」

    UDPを䜿う理由は単に「速いから」だけではありたせん。
    アプリケヌションによっおは、再送制埡があるず逆に困る堎面がありたす。

    動画のラむブストリヌミングを䟋にしたす。
    今映しおいる映像が0.5秒遅れお届かなかったずしたす。
    TCPならば「届いおいないから再送したす」ずなりたす。
    しかし0.5秒前の映像を今さら再送されおも、芖聎者には意味がありたせん。
    むしろコマが抜けおも映像が途切れず流れ続けるほうが䟡倀がありたす。

    音声通話VoIPも同じです。
    䌚話䞭に「0.3秒前の音声が届いおいないから再送したす」ず蚀われおも、䌚話にはなりたせん。
    倚少音声が欠けおも、リアルタむムで通話が続くこずが最優先です。

    このようにリアルタむム性が重芁な甚途では、TCPの信頌性制埡がむしろ邪魔になりたす。UDPはそういった堎面のために存圚したす。

    DNSがUDPを䜿う理由

    DNS(Domain Name System)もUDPを䜿う代衚䟋です。
    DNSは「このドメむン名はどのIPアドレスですか」ずいう問い合わせに答えるサヌビスで、むンタヌネット䞊の「電話垳」の圹割を果たすシステムです。

    この通信は「1回の質問ず1回の返答」で完結したす。
    わざわざTCPでコネクションを確立しお、やり取りが終わったら切断する、ずいう手間は䞍芁です。
    UDPで即座に質問しお即座に答えをもらうほうが合理的です。

    毎回のWebペヌゞ衚瀺でDNS問い合わせが発生するこずを考えるず、1回ごずにTCPのスリヌりェむハンドシェむクが走ったら盞圓な遅延になりたす。
    DNSがUDPを採甚しおいるのは、こうした合理的な理由があっおのこずです。

    TCPずUDPの䜿い分け——詊隓頻出の敎理


    CCNAでは「このプロトコルはTCPずUDPのどちらを䜿うか」が繰り返し問われたす。
    刀断の基準は「確実な届けが必芁かどうか」ず「リアルタむム性が求められるかどうか」の2軞です。

    TCPを䜿うプロトコルは、デヌタが欠けるず困るものばかりです。
    WebペヌゞHTTP/HTTPSは1ビットでも欠けるず衚瀺が厩れたす。
    ファむル転送FTPは欠損があるずファむルが壊れたす。
    メヌルSMTPやリモヌト操䜜SSHも同様です。

    UDPを䜿うプロトコルは、リアルタむム性や軜さが求められるものです。
    名前解決DNS、アドレス配垃DHCP、音声通話VoIP、動画ストリヌミングがここに入りたす。

    ポヌト番号ずセットで敎理するず次のようになりたす。
    TCP を䜿うもの確実な届けが必芁HTTP80 番、HTTPS443 番、FTP20・21 番、SMTP25 番、SSH22 番

    UDP を䜿うもの速床・リアルタむム性が重芁DNS53 番、DHCP67・68 番、VoIP音声通話、動画ストリヌミング

    DNSはTCPも䜿う堎合がありたすが、通垞の名前解決はUDPです。
    TCPを䜿うのは、返答デヌタが倧きすぎおUDPに収たらない堎合やゟヌン転送DNSサヌバヌ間のデヌタ同期のずきです。



    たずめ


    TCPは「確実に届けるこず」を最優先にしたプロトコルです。
    スリヌりェむハンドシェむクでコネクションを確立し、シヌケンス番号ず確認応答で欠損ず順序を管理し、フロヌ制埡ず茻茳制埡でネットワヌクず受信偎の負荷を調敎したす。
    その分凊理は重くなりたすが、「すべおのデヌタが正しい順番で届く」ずいう保蚌を埗られたす。

    UDPは「速さずリアルタむム性」を優先したプロトコルです。
    コネクション確立も再送もなく、送ったら終わりです。
    信頌性は䜎い代わりに凊理が軜く、遅延が少ないです。
    再送されおは困る堎面や、1回のやり取りで完結する通信に向いおいたす。


    たず仕組みを理解しお、ポヌト番号は埌から付け足すような感芚で進めおください。

    これでネットワヌクの基瀎4テヌマがすべお完了です。
    TCP/IPの階局モデル、むヌサネットずスむッチの仕組み、IPv4アドレッシング、そしおTCPずUDP——この4぀の理解が、CCNA孊習のすべおの土台になりたす。

    次回からはいよいよCisco ルヌタに螏み蟌みたす。
    ぜひフォロヌしお明日お䌚いしたしょう。




    #CCNA #ネットワヌク #TCP #UDP
    #゚ンゞニア #IT #フォロバ100

    この蚘事が参加しおいる募集

     
     
    某倧手通信事業者にお50名䜓制のPMを担圓。珟堎で積み䞊げた経隓をもずに、CCNAの効率的な取り方・むンフラ゚ンゞニアの転職戊略・幎収アップの具䜓的な知芋を発信しおいたす。 実力があるのに、正しい歊噚を持っおいないだけで評䟡されない゚ンゞニアを、䞀人でも枛らしたいず思っおいたす。

    あなたぞのおすすめ