TCPã®3ãŠã§ã€ãã³ãã·ã§ã€ã¯ã®ä»çµã¿
TCPã®ã3ãŠã§ã€ãã³ãã·ã§ã€ã¯ãã£ãŠããèããã©ããªãã§éä¿¡ãå§ããåã«ãããã3åããããšãããã®ïŒ
ãããªãããŒã¿ãéãã€ããããçžæãåãåããç¶æ ãã©ããããããªãããã3ãŠã§ã€ãã³ãã·ã§ã€ã¯ã¯ãããããïŒããã¯ããèãããŠãŸãããäºè§£ãããã話ãããã£ãŠãã確èªäœæ¥ãªãã ããããã§åæ¹åã®éä¿¡è·¯ã確å®ã«ééããããšãä¿èšŒã§ãããã ã
å ·äœçã«ã¯ã©ããªãããšããããŠãã®ïŒ
ãŸãã¯ã©ã€ã¢ã³ããSYNïŒåæïŒãã±ãããéãããã®ãšããç§ã®ã·ãŒã±ã³ã¹çªå·ã¯1000ããå§ããŸãããã£ãŠããISNïŒInitial Sequence NumberïŒãäŒãããã ããµãŒããŒã¯SYN-ACKã§ãåãåã£ãããç§ã®ã·ãŒã±ã³ã¹çªå·ã¯5000ããå§ããŸãããšè¿ããæåŸã«ã¯ã©ã€ã¢ã³ããACKã§ãäºè§£ããšè¿ããŠãæ¥ç¶ç¢ºç«ïŒESTABLISHEDïŒã«ãªããã
ã·ãŒã±ã³ã¹çªå·ã£ãŠäœã®ããã«ããã®ïŒ
ããŒã¿ã®é çªã管çããããã ããã€ã³ã¿ãŒãããã§ã¯ãã±ããããã©ãã©ã®é çªã§å±ãããšããããã©ãã·ãŒã±ã³ã¹çªå·ãããã°æ£ããé çªã«äžŠã¹çŽãããããã«ãã©ããŸã§åãåã£ããããçžæã«äŒããããšã§ãå±ããªãã£ããã±ããã®åéãã§ãããã ãISNãã©ã³ãã ã«ããã®ã¯ãéå»ã®æ¥ç¶ã®ãã±ãããšæ··åããªãããã«ããæå³ããããã
æ¥ç¶ãåããšããåãããã«3åãããšãããã®ïŒ
åæã¯4ãŠã§ã€ãã³ãã·ã§ã€ã¯ãªãã ãFINâACKâFINâACKã®4åããªã4åããšãããšãTCPã¯åæ¹åã ããçæ¹ãã€éããå¿ èŠããããã ããã¯ã©ã€ã¢ã³ãããããéãããŒã¿ãªãã§ãïŒFINïŒãâãµãŒããŒãäºè§£ïŒACKïŒãããµãŒããŒããã£ã¡ãéãçµãããŸããïŒFINïŒãâã¯ã©ã€ã¢ã³ããäºè§£ïŒACKïŒãã£ãŠæãã ãã
TCPã®ç¶æ ã£ãŠã©ãå€ãã£ãŠããã®ïŒ
TCPã«ã¯ç¶æ ãã·ã³ããã£ãŠãLISTENïŒåŸ ã¡åãïŒâSYN_RECEIVEDâESTABLISHEDãšé·ç§»ãããåææã¯FIN_WAIT_1âFIN_WAIT_2âTIME_WAITãšé²ãããç¹ã«TIME_WAITã¯éèŠã§ãæåŸã®ACKãå±ããªãã£ãå Žåã«åããŠäžå®æéïŒéåžž60ç§ïŒåŸ æ©ãããã ã
SYNãã©ããæ»æã£ãŠ3ãŠã§ã€ãã³ãã·ã§ã€ã¯ãæªçšããã®ïŒ
ãã®ãšãããæ»æè ã倧éã®SYNãã±ãããéãã€ããŠãSYN-ACKãè¿ããããã©ACKãè¿ããªãããããšãµãŒããŒã¯SYN_RECEIVEDç¶æ ã®æ¥ç¶ã倧éã«æ±ã蟌ãã§ãã¡ã¢ãªãé£ã朰ããŠããŸããã ã察çãšããŠSYN Cookiesãšããæè¡ããã£ãŠããµãŒããŒãç¶æ ãä¿æããã«ã·ãŒã±ã³ã¹çªå·èªäœã«æ¥ç¶æ å ±ãæå·çã«åã蟌ãããšã§ãæ£åœãªACKãæ¥ããšãã ãæ¥ç¶ã確ç«ããä»çµã¿ã ãã
TCP Fast Openã£ãŠããã®ãããã£ãŠèãããã©ãäœãéãã®ïŒ
éåžžã®TCPã¯3ãŠã§ã€ãã³ãã·ã§ã€ã¯ãå®äºãããŸã§ããŒã¿ãéããªããã©ãTCP Fast OpenïŒTFOïŒã¯æåã®SYNãã±ããã«ããŒã¿ãèŒããŠéãããã ãååæ¥ç¶æã«ãµãŒããŒããCookieãããã£ãŠã次å以éã¯ãã®CookieãSYNã«æ·»ããããšã§ããã³ãã·ã§ã€ã¯å®äºãåŸ ããã«ããŒã¿è»¢éãéå§ã§ãããWebããŒãžã®èªã¿èŸŒã¿ãæ°åããªç§éããªãããšããããã
ãã£ãåºãŠããTIME_WAITã£ãŠãããŸã£ãŠããŸããšåé¡ã«ãªãã®ïŒ
ããã¯ããã©ã³ãšã³ãžãã¢ã§ãããããã€ã³ãã ãã倧éã®çãæ¥ç¶ãç¹°ãè¿ããµãŒããŒïŒäŸãã°ãªããŒã¹ãããã·ïŒã ãšãTIME_WAITã®ãœã±ãããäœäžåãããŸã£ãŠæ°ããæ¥ç¶ãäœããªããªãããšãããã察çãšããŠSO_REUSEADDRãªãã·ã§ã³ãèšå®ããŠãTIME_WAITäžã®ããŒããåå©çšå¯èœã«ããããLinuxã®tcp_tw_reuseãæå¹ã«ããããããã ã
UDPã¯ãã³ãã·ã§ã€ã¯ããªããã ããïŒãªãã§TCPã ãå¿ èŠãªã®ïŒ
UDPã¯ãä¿¡é Œæ§ããé床ããåªå ãããããã³ã«ã ããã ããåç»ã®ã¹ããªãŒãã³ã°ããªã³ã©ã€ã³ã²ãŒã ã¿ããã«ãå€å°ãã±ãããæããŠãå šäœãšããŠåé¡ãªãçšéã§ã¯UDPãåããŠããäžæ¹TCPã¯WebããŒãžããã¡ã€ã«è»¢éã¿ããã«ã1ãã€ããæ¬ ãã¡ããã¡ããªéä¿¡ã«äœ¿ãããã³ãã·ã§ã€ã¯ã¯ãã®ããã®ä¿¡é Œæ§ã®åå°ãªãã ãã¡ãªã¿ã«æè¿ã®HTTP/3ã¯QUICãšããä»çµã¿ã䜿ã£ãŠããŠãUDPã®äžã«TCPã®ãããªä¿¡é Œæ§ãå®è£ ãã€ã€ããã³ãã·ã§ã€ã¯ã1åŸåŸ©ã«ççž®ããŠãããã