--- sidebar: heading ---  ## ç½ç»åå±ç»æ è®¡ç®æºç½ç»ä½ç³»å¤§è´å为ä¸ç§ï¼OSIä¸å±æ¨¡åãTCP/IPå屿¨¡ååäºå±æ¨¡åãä¸è¬é¢è¯çæ¶åè坿¯è¾å¤çæ¯äºå±æ¨¡åã  **äºå±æ¨¡å**ï¼åºç¨å±ãä¼ è¾å±ãç½ç»å±ãæ°æ®é¾è·¯å±ãç©çå±ã - **åºç¨å±**ï¼ä¸ºåºç¨ç¨åºæä¾äº¤äºæå¡ãå¨äºèç½ä¸çåºç¨å±åè®®å¾å¤ï¼å¦ååç³»ç»DNSãHTTPåè®®ãSMTPåè®®çã - **ä¼ è¾å±**ï¼è´è´£å两å°ä¸»æºè¿ç¨ä¹é´çéä¿¡æä¾æ°æ®ä¼ è¾æå¡ãä¼ è¾å±çåè®®ä¸»è¦æä¼ è¾æ§å¶åè®®TCPåç¨æ·æ°æ®åè®®UDPã - **ç½ç»å±**ï¼éæ©åéçè·¯ç±å交æ¢ç»ç¹ï¼ç¡®ä¿æ°æ®åæ¶ä¼ éã主è¦å æ¬IPåè®®ã - **æ°æ®é¾è·¯å±**ï¼å¨ä¸¤ä¸ªç¸é»èç¹ä¹é´ä¼ éæ°æ®æ¶ï¼æ°æ®é¾è·¯å±å°ç½ç»å±äº¤ä¸æ¥ç IP æ°æ®æ¥ç»è£ æå¸§ï¼å¨ä¸¤ä¸ªç¸é»èç¹é´çé¾è·¯ä¸ä¼ é帧ã - **ç©çå±**ï¼å®ç°ç¸é»èç¹é´æ¯ç¹æµçéæä¼ è¾ï¼å°½å¯è½å±è½ä¼ è¾ä»è´¨åç©ç设å¤çå·®å¼ã **ISOä¸å±æ¨¡å**æ¯å½é æ ååç»ç»ï¼International Organization for Standardizationï¼å¶å®çä¸ä¸ªç¨äºè®¡ç®æºæéä¿¡ç³»ç»é´äºèçæ åä½ç³»ã - åºç¨å±ï¼ç½ç»æå¡ä¸æç»ç¨æ·çä¸ä¸ªæ¥å£ï¼å¸¸è§çåè®®æï¼**HTTP FTP SMTP SNMP DNS**. - 表示å±ï¼æ°æ®ç表示ãå®å ¨ãå缩ãï¼ç¡®ä¿ä¸ä¸ªç³»ç»çåºç¨å±æåéçä¿¡æ¯å¯ä»¥è¢«å¦ä¸ä¸ªç³»ç»çåºç¨å±è¯»åã - ä¼è¯å±ï¼å»ºç«ã管çãç»æ¢ä¼è¯,对åºä¸»æºè¿ç¨ï¼ææ¬å°ä¸»æºä¸è¿ç¨ä¸»æºæ£å¨è¿è¡çä¼è¯. - ä¼ è¾å±ï¼å®ä¹ä¼ è¾æ°æ®çå议端å£å·ï¼ä»¥åæµæ§åå·®éæ ¡éª,åè®®æ**TCP UDP**. - ç½ç»å±ï¼è¿è¡é»è¾å°å寻åï¼å®ç°ä¸åç½ç»ä¹é´çè·¯å¾éæ©,åè®®æ**ICMP IGMP IPç**. - æ°æ®é¾è·¯å±ï¼å¨ç©ç屿便¯ç¹æµæå¡çåºç¡ä¸ï¼å»ºç«ç¸é»ç»ç¹ä¹é´çæ°æ®é¾è·¯ã - ç©çå±ï¼å»ºç«ãç»´æ¤ãæå¼ç©çè¿æ¥ã **TCP/IP å屿¨¡å** - åºç¨å±ï¼å¯¹åºäºOSIåèæ¨¡åçï¼åºç¨å±ã表示å±ãä¼è¯å±ï¼ã - ä¼ è¾å±: 对åºOSIçä¼ è¾å±ï¼ä¸ºåºç¨å±å®ä½æä¾ç«¯å°ç«¯çéä¿¡åè½ï¼ä¿è¯äºæ°æ®å ç顺åºä¼ éåæ°æ®ç宿´æ§ã - ç½é å±ï¼å¯¹åºäºOSIåèæ¨¡åçç½ç»å±ï¼ä¸»è¦è§£å³ä¸»æºå°ä¸»æºçéä¿¡é®é¢ã - ç½ç»æ¥å£å±ï¼ä¸OSIåèæ¨¡åçæ°æ®é¾è·¯å±ãç©çå±å¯¹åºã ## 䏿¬¡æ¡æ å设åé端为客æ·ç«¯ï¼æ¥æ¶ç«¯ä¸ºæå¡ç«¯ãå¼å§æ¶å®¢æ·ç«¯åæå¡ç«¯çç¶æé½æ¯`CLOSED`ã  1. ç¬¬ä¸æ¬¡æ¡æï¼å®¢æ·ç«¯åæå¡ç«¯å起建ç«è¿æ¥è¯·æ±ï¼å®¢æ·ç«¯ä¼éæºçæä¸ä¸ªèµ·å§åºåå·xï¼å®¢æ·ç«¯åæå¡ç«¯åéçåæ®µä¸å 嫿 å¿ä½`SYN=1`ï¼åºåå·`seq=x`ãç¬¬ä¸æ¬¡æ¡æå客æ·ç«¯çç¶æä¸º`CLOSE`ï¼ç¬¬ä¸æ¬¡æ¡æå客æ·ç«¯çç¶æä¸º`SYN-SENT`ãæ¤æ¶æå¡ç«¯çç¶æä¸º`LISTEN`ã 2. ç¬¬äºæ¬¡æ¡æï¼æå¡ç«¯å¨æ¶å°å®¢æ·ç«¯åæ¥çæ¥æåï¼ä¼éæºçæä¸ä¸ªæå¡ç«¯çèµ·å§åºåå·yï¼ç¶åç»å®¢æ·ç«¯åå¤ä¸æ®µæ¥æï¼å ¶ä¸å æ¬æ å¿ä½`SYN=1`ï¼`ACK=1`ï¼åºåå·`seq=y`ï¼ç¡®è®¤å·`ack=x+1`ãç¬¬äºæ¬¡æ¡æåæå¡ç«¯çç¶æä¸º`LISTEN`ï¼ç¬¬äºæ¬¡æ¡æåæå¡ç«¯çç¶æä¸º`SYN-RCVD`ï¼æ¤æ¶å®¢æ·ç«¯çç¶æä¸º`SYN-SENT`ãï¼å ¶ä¸`SYN=1`表示è¦å客æ·ç«¯å»ºç«ä¸ä¸ªè¿æ¥ï¼`ACK=1`表示确认åºå·ææï¼ 3. ç¬¬ä¸æ¬¡æ¡æï¼å®¢æ·ç«¯æ¶å°æå¡ç«¯åæ¥çæ¥æåï¼ä¼ååæå¡ç«¯å鿥æï¼å ¶ä¸å 嫿 å¿ä½`ACK=1`ï¼åºåå·`seq=x+1`ï¼ç¡®è®¤å·`ack=y+1`ãç¬¬ä¸æ¬¡æ¡æå客æ·ç«¯çç¶æä¸º`SYN-SENT`ï¼ç¬¬ä¸æ¬¡æ¡æå客æ·ç«¯åæå¡ç«¯çç¶æé½ä¸º`ESTABLISHED`ã**æ¤æ¶è¿æ¥å»ºç«å®æã** ## ä¸¤æ¬¡æ¡æå¯ä»¥åï¼ ä¹æä»¥éè¦ç¬¬ä¸æ¬¡æ¡æï¼ä¸»è¦ä¸ºäº**鲿¢å·²å¤±æçè¿æ¥è¯·æ±æ¥ææ®µ**çªç¶åä¼ è¾å°äºæå¡ç«¯ï¼å¯¼è´äº§çé®é¢ã - æ¯å¦å®¢æ·ç«¯Aååºè¿æ¥è¯·æ±ï¼å¯è½å 为ç½ç»é»å¡åå ï¼Aæ²¡ææ¶å°ç¡®è®¤æ¥æï¼äºæ¯Aåéä¼ ä¸æ¬¡è¿æ¥è¯·æ±ã - ç¶åè¿æ¥æåï¼çå¾ æ°æ®ä¼ è¾å®æ¯åï¼å°±éæ¾äºè¿æ¥ã - ç¶åAååºç第ä¸ä¸ªè¿æ¥è¯·æ±çå°è¿æ¥éæ¾ä»¥åçæä¸ªæ¶é´æå°è¾¾æå¡ç«¯Bï¼æ¤æ¶B误认为Aåååºä¸æ¬¡æ°çè¿æ¥è¯·æ±ï¼äºæ¯å°±åAååºç¡®è®¤æ¥ææ®µã - 妿ä¸éç¨ä¸æ¬¡æ¡æï¼åªè¦Bååºç¡®è®¤ï¼å°±å»ºç«æ°çè¿æ¥äºï¼**æ¤æ¶Aä¸ä¼ååºBç确认ä¸ä¸åéæ°æ®ï¼åBä¸ç´çå¾ Aåéæ°æ®ï¼æµªè´¹èµæºã** ## 忬¡æ¥æ  1. Açåºç¨è¿ç¨å åå ¶TCPååºè¿æ¥éæ¾æ¥ææ®µï¼`FIN=1ï¼seq=u`ï¼ï¼å¹¶åæ¢ååéæ°æ®ï¼ä¸»å¨å ³éTCPè¿æ¥ï¼è¿å ¥`FIN-WAIT-1`ï¼ç»æ¢çå¾ 1ï¼ç¶æï¼çå¾ Bç确认ã 2. Bæ¶å°è¿æ¥éæ¾æ¥ææ®µåå³ååºç¡®è®¤æ¥ææ®µï¼`ACK=1ï¼ack=u+1ï¼seq=v`ï¼ï¼Bè¿å ¥`CLOSE-WAIT`ï¼å ³éçå¾ ï¼ç¶æï¼æ¤æ¶çTCPå¤äºåå ³éç¶æï¼Aå°Bçè¿æ¥éæ¾ã 3. Aæ¶å°Bç确认åï¼è¿å ¥`FIN-WAIT-2`ï¼ç»æ¢çå¾ 2ï¼ç¶æï¼çå¾ Bååºçè¿æ¥éæ¾æ¥ææ®µã 4. Båé宿°æ®ï¼å°±ä¼ååºè¿æ¥éæ¾æ¥ææ®µï¼`FIN=1ï¼ACK=1ï¼seq=wï¼ack=u+1`ï¼ï¼Bè¿å ¥`LAST-ACK`ï¼æå确认ï¼ç¶æï¼çå¾ Aç确认ã 5. Aæ¶å°Bçè¿æ¥éæ¾æ¥ææ®µåï¼å¯¹æ¤ååºç¡®è®¤æ¥ææ®µï¼`ACK=1ï¼seq=u+1ï¼ack=w+1`ï¼ï¼Aè¿å ¥`TIME-WAIT`ï¼æ¶é´çå¾ ï¼ç¶æãæ¤æ¶TCPæªéæ¾æï¼éè¦ç»è¿æ¶é´çå¾ è®¡æ¶å¨è®¾ç½®çæ¶é´`2MSL`ï¼æå¤§æ¥ææ®µçåæ¶é´ï¼åï¼Aæè¿å ¥`CLOSED`ç¶æãBæ¶å°Aååºçç¡®è®¤æ¥ææ®µåå ³éè¿æ¥ï¼è¥æ²¡æ¶å°Aååºçç¡®è®¤æ¥ææ®µï¼Bå°±ä¼éä¼ è¿æ¥éæ¾æ¥ææ®µã ## ç¬¬åæ¬¡æ¥æä¸ºä»ä¹è¦çå¾ 2MSLï¼ - **ä¿è¯Aåéçæåä¸ä¸ªACKæ¥ææ®µè½å¤å°è¾¾B**ãè¿ä¸ª`ACK`æ¥ææ®µæå¯è½ä¸¢å¤±ï¼Bæ¶ä¸å°è¿ä¸ªç¡®è®¤æ¥æï¼å°±ä¼è¶ æ¶éä¼ è¿æ¥éæ¾æ¥ææ®µï¼ç¶åAå¯ä»¥å¨`2MSL`æ¶é´å æ¶å°è¿ä¸ªéä¼ çè¿æ¥éæ¾æ¥ææ®µï¼æ¥çAéä¼ ä¸æ¬¡ç¡®è®¤ï¼éæ°å¯å¨2MSL计æ¶å¨ï¼æåAåBé½è¿å ¥å°`CLOSED`ç¶æï¼è¥Aå¨`TIME-WAIT`ç¶æä¸çå¾ ä¸æ®µæ¶é´ï¼èæ¯åéå®ACKæ¥ææ®µåç«å³éæ¾è¿æ¥ï¼åæ æ³æ¶å°Béä¼ çè¿æ¥éæ¾æ¥ææ®µï¼æä»¥ä¸ä¼ååé䏿¬¡ç¡®è®¤æ¥ææ®µï¼Bå°±æ æ³æ£å¸¸è¿å ¥å°`CLOSED`ç¶æã - **鲿¢å·²å¤±æçè¿æ¥è¯·æ±æ¥ææ®µåºç°å¨æ¬è¿æ¥ä¸**ãAå¨åé宿åä¸ä¸ª`ACK`æ¥ææ®µåï¼åç»è¿2MSLï¼å°±å¯ä»¥ä½¿è¿ä¸ªè¿æ¥æäº§ççæææ¥ææ®µé½ä»ç½ç»ä¸æ¶å¤±ï¼ä½¿ä¸ä¸ä¸ªæ°çè¿æ¥ä¸ä¸ä¼åºç°æ§çè¿æ¥è¯·æ±æ¥ææ®µã ## 为ä»ä¹æ¯åæ¬¡æ¥æï¼ å 为å½Server端æ¶å°Client端ç`SYN`è¿æ¥è¯·æ±æ¥æåï¼å¯ä»¥ç´æ¥åé`SYN+ACK`æ¥æã**使¯å¨å ³éè¿æ¥æ¶ï¼å½Server端æ¶å°Client端ååºçè¿æ¥éæ¾æ¥ææ¶ï¼å¾å¯è½å¹¶ä¸ä¼ç«å³å ³éSOCKET**ï¼æä»¥Server端å åå¤ä¸ä¸ª`ACK`æ¥æï¼åè¯Clientç«¯ææ¶å°ä½ çè¿æ¥éæ¾æ¥æäºãåªæçå°Server端ææçæ¥æé½åéå®äºï¼è¿æ¶Server端æè½åéè¿æ¥éæ¾æ¥æï¼ä¹å两边æä¼çæ£çæå¼è¿æ¥ãæ éè¦åæ¬¡æ¥æã ## TCPæåªäºç¹ç¹ï¼ - TCPæ¯**é¢åè¿æ¥**çè¿è¾å±åè®®ã - **ç¹å¯¹ç¹**ï¼æ¯ä¸æ¡TCPè¿æ¥åªè½æä¸¤ä¸ªç«¯ç¹ã - TCPæä¾**å¯é 交ä»**çæå¡ã - TCPæä¾**å ¨åå·¥éä¿¡**ã - **é¢ååèæµ**ã ## 说说TCPæ¥æé¦é¨æåªäºå段ï¼å ¶ä½ç¨åå嫿¯ä»ä¹ï¼  - **16ä½ç«¯å£å·**ï¼æºç«¯å£å·ï¼ä¸»æºè¯¥æ¥ææ®µæ¯æ¥èªåªéï¼ç®æ 端å£å·ï¼è¦ä¼ ç»åªä¸ªä¸å±åè®®æåºç¨ç¨åº - **32ä½åºå·**ï¼ä¸æ¬¡TCPéä¿¡ï¼ä»TCPè¿æ¥å»ºç«å°æå¼ï¼è¿ç¨ä¸æä¸ä¸ªä¼ è¾æ¹åä¸çåèæµçæ¯ä¸ªåèçç¼å·ã - **32ä½ç¡®è®¤å·**ï¼ç¨ä½å¯¹å¦ä¸æ¹åéçtcpæ¥ææ®µçååºãå ¶å¼æ¯æ¶å°çTCPæ¥ææ®µçåºå·å¼å 1ã - **4ä½å¤´é¨é¿åº¦**ï¼è¡¨ç¤ºtcp头鍿å¤å°ä¸ª32bitåï¼4åèï¼ãå 为4ä½æå¤§è½æ è¯15ï¼æä»¥TCPå¤´é¨æé¿æ¯60åèã - **6使 å¿ä½**ï¼URG(ç´§æ¥æéæ¯å¦ææ)ï¼ACkï¼è¡¨ç¤ºç¡®è®¤å·æ¯å¦ææï¼ï¼PSHï¼ç¼å²åºå°æªå¡«æ»¡ï¼ï¼RSTï¼è¡¨ç¤ºè¦æ±å¯¹æ¹éæ°å»ºç«è¿æ¥ï¼ï¼SYNï¼å»ºç«è¿æ¥æ¶æ¯æ å¿æ¥ï¼ï¼FINï¼è¡¨ç¤ºåç¥å¯¹æ¹æ¬ç«¯è¦å ³éè¿æ¥äºï¼ - **16ä½çªå£å¤§å°**ï¼æ¯TCPæµéæ§å¶çä¸ä¸ªææ®µãè¿é说ççªå£ï¼æçæ¯æ¥æ¶éåçªå£ãå®åè¯å¯¹æ¹æ¬ç«¯çTCPæ¥æ¶ç¼å²åºè¿è½å®¹çº³å¤å°åèçæ°æ®ï¼è¿æ ·å¯¹æ¹å°±å¯ä»¥æ§å¶åéæ°æ®çé度ã - **16使 ¡éªå**ï¼ç±åé端填å ï¼æ¥æ¶ç«¯å¯¹TCPæ¥ææ®µæ§è¡CRCç®æ³ä»¥æ£éªTCPæ¥ææ®µå¨ä¼ è¾è¿ç¨ä¸æ¯å¦æåãæ³¨æï¼è¿ä¸ªæ ¡éªä¸ä» å æ¬TCP头é¨ï¼ä¹å æ¬æ°æ®é¨åãè¿ä¹æ¯TCPå¯é ä¼ è¾çä¸ä¸ªéè¦ä¿éã - **16ä½ç´§æ¥æé**ï¼ä¸ä¸ªæ£çåç§»éãå®ååºå·å段çå¼ç¸å 表示æåä¸ä¸ªç´§æ¥æ°æ®çä¸ä¸åèçåºå·ãå æ¤ï¼ç¡®åå°è¯´ï¼è¿ä¸ªå段æ¯ç´§æ¥æéç¸å¯¹å½ååºå·çåç§»ï¼ä¸å¦¨ç§°ä¹ä¸ºç´§æ¥åç§»ãTCPçç´§æ¥æéæ¯åéç«¯åæ¥æ¶ç«¯åéç´§æ¥æ°æ®çæ¹æ³ã ## TCPåUDPçåºå«ï¼ 1. TCP**é¢åè¿æ¥**ï¼UDPæ¯æ è¿æ¥çï¼å³åéæ°æ®ä¹åä¸éè¦å»ºç«è¿æ¥ã 2. TCPæä¾**å¯é çæå¡**ï¼UDPä¸ä¿è¯å¯é 交ä»ã 3. TCP**é¢ååèæµ**ï¼ææ°æ®çæä¸è¿ä¸²æ ç»æçåèæµï¼UDPæ¯é¢åæ¥æçã 4. TCPæ**æ¥å¡æ§å¶**ï¼UDPæ²¡ææ¥å¡æ§å¶ï¼å æ¤ç½ç»åºç°æ¥å¡ä¸ä¼ä½¿æºä¸»æºçåééçéä½ï¼å¯¹å®æ¶åºç¨å¾æç¨ï¼å¦å®æ¶è§é¢ä¼è®®çï¼ã 5. æ¯ä¸æ¡TCPè¿æ¥åªè½æ¯**ç¹å°ç¹**çï¼UDPæ¯æä¸å¯¹ä¸ãä¸å¯¹å¤ãå¤å¯¹ä¸åå¤å¯¹å¤çéä¿¡æ¹å¼ã 6. TCPé¦é¨å¼é20åèï¼UDPçé¦é¨å¼éå°ï¼åªæ8个åèã ## TCP å UDP åå«å¯¹åºç常è§åºç¨å±åè®®æåªäºï¼ **åºäºTCPçåºç¨å±åè®®æï¼HTTPãFTPãSMTPãTELNETãSSH** - **HTTP**ï¼HyperText Transfer Protocolï¼è¶ ææ¬ä¼ è¾åè®®ï¼ï¼é»è®¤ç«¯å£80 - **FTP**: File Transfer Protocol (æä»¶ä¼ è¾åè®®), é»è®¤ç«¯å£(20ç¨äºä¼ è¾æ°æ®ï¼21ç¨äºä¼ è¾æ§å¶ä¿¡æ¯) - **SMTP**: Simple Mail Transfer Protocol (ç®åé®ä»¶ä¼ è¾åè®®) ,é»è®¤ç«¯å£25 - **TELNET**: Teletype over the Network (ç½ç»çµä¼ ), é»è®¤ç«¯å£23 - **SSH**ï¼Secure Shellï¼å®å ¨å¤å£³åè®®ï¼ï¼é»è®¤ç«¯å£ 22 **åºäºUDPçåºç¨å±åè®®ï¼DNSãTFTPãSNMP** - **DNS** : Domain Name Service (ååæå¡),é»è®¤ç«¯å£ 53 - **TFTP**: Trivial File Transfer Protocol (ç®åæä»¶ä¼ è¾åè®®)ï¼é»è®¤ç«¯å£69 - **SNMP**ï¼Simple Network Management Protocolï¼ç®åç½ç»ç®¡çåè®®ï¼ï¼éè¿UDP端å£161æ¥æ¶ï¼åªæTrapä¿¡æ¯éç¨UDP端å£162ã ## TCPçç²å åæå TCPæ¯é¢åæµï¼æ²¡æçéçä¸ä¸²æ°æ®ãTCPåºå±å¹¶ä¸äºè§£ä¸å±ä¸å¡æ°æ®çå ·ä½å«ä¹ï¼å®ä¼æ ¹æ®TCPç¼å²åºçå®é æ åµè¿è¡å çååï¼æä»¥å¨ä¸å¡ä¸è®¤ä¸ºï¼ä¸**ä¸ªå®æ´çå å¯è½ä¼è¢«TCPæåæå¤ä¸ªå è¿è¡åé**ï¼**乿å¯è½æå¤ä¸ªå°çå å°è£ æä¸ä¸ªå¤§çæ°æ®å åé**ï¼è¿å°±æ¯æè°çTCPç²å åæå é®é¢ã **为ä»ä¹ä¼äº§çç²å åæå å¢?** - è¦åéçæ°æ®å°äºTCPåéç¼å²åºç大å°ï¼TCPå°å¤æ¬¡åå ¥ç¼å²åºçæ°æ®ä¸æ¬¡åéåºå»ï¼å°ä¼åçç²å ï¼ - æ¥æ¶æ°æ®ç«¯çåºç¨å±æ²¡æåæ¶è¯»åæ¥æ¶ç¼å²åºä¸çæ°æ®ï¼å°åçç²å ï¼ - è¦åéçæ°æ®å¤§äºTCPåéç¼å²åºå©ä½ç©ºé´å¤§å°ï¼å°ä¼åçæå ï¼ - å¾ åéæ°æ®å¤§äºMSSï¼æå¤§æ¥æé¿åº¦ï¼ï¼TCPå¨ä¼ è¾åå°è¿è¡æå ãå³TCPæ¥æé¿åº¦-TCP头é¨é¿åº¦>MSSã **è§£å³æ¹æ¡ï¼** - åéç«¯å°æ¯ä¸ªæ°æ®å å°è£ 为åºå®é¿åº¦ - 卿°æ®å°¾é¨å¢å ç¹æ®å符è¿è¡åå² - å°æ°æ®å为两é¨åï¼ä¸é¨åæ¯å¤´é¨ï¼ä¸é¨åæ¯å 容ä½ï¼å ¶ä¸å¤´é¨ç»æå¤§å°åºå®ï¼ä¸æä¸ä¸ªå段声æå 容ä½ç大å°ã ## 说说TCPæ¯å¦ä½ç¡®ä¿å¯é æ§çå¢ï¼ - é¦å ï¼TCPçè¿æ¥æ¯åºäº**䏿¬¡æ¡æ**ï¼èæå¼åæ¯åºäº**忬¡æ¥æ**ãç¡®ä¿è¿æ¥åæå¼çå¯é æ§ã - å ¶æ¬¡ï¼TCPçå¯é æ§ï¼è¿ä½ç°å¨**æç¶æ**;TCPä¼è®°å½åªäºæ°æ®åéäºï¼åªäºæ°æ®è¢«æ¥æ¶äºï¼åªäºæ²¡æè¢«æ¥åï¼å¹¶ä¸ä¿è¯æ°æ®å æåºå°è¾¾ï¼ä¿è¯æ°æ®ä¼ è¾ä¸åºå·®éã - 忬¡ï¼TCPçå¯é æ§ï¼è¿ä½ç°å¨**坿§å¶**ãå®ææ°æ®å æ ¡éªãACKåºçã**è¶ æ¶éä¼ (åéæ¹)**ãå¤±åºæ°æ®éä¼ ï¼æ¥æ¶æ¹ï¼ã丢å¼é夿°æ®ãæµéæ§å¶ï¼æ»å¨çªå£ï¼åæ¥å¡æ§å¶çæºå¶ã ## 说ä¸TCPçæ»å¨çªå£æºå¶ TCP å©ç¨æ»å¨çªå£å®ç°æµéæ§å¶ãæµéæ§å¶æ¯ä¸ºäºæ§å¶åéæ¹åééçï¼ä¿è¯æ¥æ¶æ¹æ¥å¾åæ¥æ¶ã TCPä¼è¯çåæ¹é½åèªç»´æ¤ä¸ä¸ªåéçªå£åä¸ä¸ªæ¥æ¶çªå£ãæ¥æ¶çªå£å¤§å°åå³äºåºç¨ãç³»ç»ã硬件çéå¶ãåéçªå£ååå³äºå¯¹ç«¯éåçæ¥æ¶çªå£ãæ¥æ¶æ¹åéçç¡®è®¤æ¥æä¸çwindowåæ®µå¯ä»¥ç¨æ¥æ§å¶åéæ¹çªå£å¤§å°ï¼ä»èå½±ååéæ¹çåééçãå°æ¥æ¶æ¹çç¡®è®¤æ¥æwindowåæ®µè®¾ç½®ä¸º 0ï¼ååéæ¹ä¸è½åéæ°æ®ã  TCP头å å«windowåæ®µï¼16bitä½ï¼å®ä»£è¡¨çæ¯çªå£çåè容éï¼æå¤§ä¸º65535ãè¿ä¸ªåæ®µæ¯æ¥æ¶ç«¯åè¯åé端èªå·±è¿æå¤å°ç¼å²åºå¯ä»¥æ¥æ¶æ°æ®ãäºæ¯åé端就å¯ä»¥æ ¹æ®è¿ä¸ªæ¥æ¶ç«¯çå¤çè½åæ¥åéæ°æ®ï¼èä¸ä¼å¯¼è´æ¥æ¶ç«¯å¤çä¸è¿æ¥ãæ¥æ¶çªå£ç大尿¯çº¦çäºåéçªå£ç大å°ã ## 详ç»è®²ä¸ä¸æ¥å¡æ§å¶ï¼ 鲿¢è¿å¤çæ°æ®æ³¨å ¥å°ç½ç»ä¸ã å ç§æ¥å¡æ§å¶æ¹æ³ï¼æ ¢å¼å§( slow-start )ãæ¥å¡é¿å ( congestion avoidance )ãå¿«éä¼ ( fast retransmit )åå¿«æ¢å¤( fast recovery )ã  **æ ¢å¼å§** ææ¥å¡çªå£ cwnd 设置为ä¸ä¸ªæå¤§æ¥ææ®µMSSçæ°å¼ãè卿¯æ¶å°ä¸ä¸ªå¯¹æ°çæ¥ææ®µç确认åï¼ææ¥å¡çªå£å¢å è³å¤ä¸ä¸ªMSSçæ°å¼ãæ¯ç»è¿ä¸ä¸ªä¼ è¾è½®æ¬¡ï¼æ¥å¡çªå£ cwnd å°±å åã 为äºé²æ¢æ¥å¡çªå£cwndå¢é¿è¿å¤§å¼èµ·ç½ç»æ¥å¡ï¼è¿éè¦è®¾ç½®ä¸ä¸ªæ ¢å¼å§é¨éssthreshç¶æåéã å½ cwnd < ssthresh æ¶ï¼ä½¿ç¨æ ¢å¼å§ç®æ³ã å½ cwnd > ssthresh æ¶ï¼åæ¢ä½¿ç¨æ ¢å¼å§ç®æ³èæ¹ç¨æ¥å¡é¿å ç®æ³ã å½ cwnd = ssthresh æ¶ï¼æ¢å¯ä½¿ç¨æ ¢å¼å§ç®æ³ï¼ä¹å¯ä½¿ç¨æ¥å¡æ§å¶é¿å ç®æ³ã **æ¥å¡é¿å ** 让æ¥å¡çªå£cwndç¼æ ¢å°å¢å¤§ï¼æ¯ç»è¿ä¸ä¸ªå¾è¿æ¶é´RTTå°±æåéæ¹çæ¥å¡çªå£cwndå 1ï¼è䏿¯å åãè¿æ ·æ¥å¡çªå£cwndæçº¿æ§è§å¾ç¼æ ¢å¢é¿ã æ è®ºå¨æ ¢å¼å§é¶æ®µè¿æ¯å¨æ¥å¡é¿å é¶æ®µï¼åªè¦å鿹夿ç½ç»åºç°æ¥å¡ï¼å ¶æ ¹æ®å°±æ¯æ²¡ææ¶å°ç¡®è®¤ï¼ï¼å°±è¦ææ ¢å¼å§é¨éssthresh设置为åºç°æ¥å¡æ¶çåé æ¹çªå£å¼çä¸åï¼ä½ä¸è½å°äº2ï¼ãç¶åææ¥å¡çªå£cwndéæ°è®¾ç½®ä¸º1ï¼æ§è¡æ ¢å¼å§ç®æ³ãè¿æ ·åçç®çå°±æ¯è¦è¿ éåå°ä¸»æºåéå°ç½ç»ä¸çåç»æ°ï¼ä½¿å¾åç æ¥å¡çè·¯ç±å¨æè¶³å¤æ¶é´æéåä¸ç§¯åçåç»å¤ç宿¯ã **å¿«éä¼ ** ææ¶ä¸ªå«æ¥ææ®µä¼å¨ç½ç»ä¸ä¸¢å¤±ï¼ä½å®é ä¸ç½ç»å¹¶æªåçæ¥å¡ã妿åéæ¹è¿è¿æ¶ä¸å°ç¡®è®¤ï¼å°±ä¼äº§çè¶ æ¶ï¼å°±ä¼è¯¯è®¤ä¸ºç½ç»åçäºæ¥å¡ãè¿å°±å¯¼è´åéæ¹é误å°å¯å¨æ ¢å¼å§ï¼ææ¥å¡çªå£cwndå设置为1ï¼å èéä½äºä¼ è¾æçã å¿«éä¼ ç®æ³å¯ä»¥é¿å è¿ä¸ªé®é¢ãå¿«éä¼ ç®æ³é¦å è¦æ±æ¥æ¶æ¹æ¯æ¶å°ä¸ä¸ªå¤±åºçæ¥ææ®µåå°±ç«å³ååºéå¤ç¡®è®¤ï¼ä½¿å鿹忩ç¥éææ¥ææ®µæ²¡æå°è¾¾å¯¹æ¹ã åéæ¹åªè¦ä¸è¿æ¶å°ä¸ä¸ªéå¤ç¡®è®¤å°±åºå½ç«å³éä¼ å¯¹æ¹å°æªæ¶å°çæ¥ææ®µï¼èä¸å¿ ç»§ç»çå¾ éä¼ è®¡æ¶å¨å°æãç±äºå鿹尽æ©éä¼ æªè¢«ç¡®è®¤çæ¥ææ®µï¼å æ¤éç¨å¿«éä¼ åå¯ä»¥ä½¿æ´ä¸ªç½ç»ååéæé«çº¦20%ã **å¿«æ¢å¤** å½åéæ¹è¿ç»æ¶å°ä¸ä¸ªéå¤ç¡®è®¤ï¼å°±ä¼ææ ¢å¼å§é¨éssthreshååï¼æ¥çæcwndå¼è®¾ç½®ä¸ºæ ¢å¼å§é¨éssthreshåååçæ°å¼ï¼ç¶åå¼å§æ§è¡æ¥å¡é¿å ç®æ³ï¼ä½¿æ¥å¡çªå£ç¼æ ¢å°çº¿æ§å¢å¤§ã å¨éç¨å¿«æ¢å¤ç®æ³æ¶ï¼æ ¢å¼å§ç®æ³åªæ¯å¨TCPè¿æ¥å»ºç«æ¶åç½ç»åºç°è¶ æ¶æ¶æä½¿ç¨ã éç¨è¿æ ·çæ¥å¡æ§å¶æ¹æ³ä½¿å¾TCPçæ§è½æææ¾çæ¹è¿ã ## HTTPåè®®çç¹ç¹ï¼ 1. HTTPå è®¸ä¼ è¾**ä»»æç±»å**çæ°æ®ãä¼ è¾çç±»åç±Content-Typeå 以æ è®°ã 2. **æ ç¶æ**ã对äºå®¢æ·ç«¯æ¯æ¬¡åéç请æ±ï¼æå¡å¨é½è®¤ä¸ºæ¯ä¸ä¸ªæ°ç请æ±ï¼ä¸ä¸æ¬¡ä¼è¯åä¸ä¸æ¬¡ä¼è¯ä¹é´æ²¡æèç³»ã 3. æ¯æ**客æ·ç«¯/æå¡å¨æ¨¡å¼**ã ## HTTPæ¥ææ ¼å¼ HTTP请æ±ç±**请æ±è¡ã请æ±å¤´é¨ã空è¡å请æ±ä½**å个é¨åç»æã - **请æ±è¡**ï¼å æ¬è¯·æ±æ¹æ³ï¼è®¿é®çèµæºURLï¼ä½¿ç¨çHTTPçæ¬ã`GET`å`POST`æ¯æå¸¸è§çHTTPæ¹æ³ï¼é¤æ¤ä»¥å¤è¿å æ¬`DELETEãHEADãOPTIONSãPUTãTRACE`ã - **请æ±å¤´**ï¼æ ¼å¼ä¸ºâ屿§å:屿§å¼âï¼æå¡ç«¯æ ¹æ®è¯·æ±å¤´è·å客æ·ç«¯çä¿¡æ¯ï¼ä¸»è¦æ`cookieãhostãconnectionãaccept-languageãaccept-encodingãuser-agent`ã - **请æ±ä½**ï¼ç¨æ·çè¯·æ±æ°æ®å¦ç¨æ·åï¼å¯ç çã **è¯·æ±æ¥æç¤ºä¾**ï¼ ```java POST /xxx HTTP/1.1 请æ±è¡ Accept:image/gif.image/jpeg, 请æ±å¤´é¨ Accept-Language:zh-cn Connection:Keep-Alive Host:localhost User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0) Accept-Encoding:gzip,deflate username=dabin 请æ±ä½ ``` HTTPååºä¹ç±å个é¨åç»æï¼å嫿¯ï¼**ç¶æè¡ãååºå¤´ã空è¡åååºä½**ã - **ç¶æè¡**ï¼åè®®çæ¬ï¼ç¶æç åç¶ææè¿°ã - **ååºå¤´**ï¼ååºå¤´åæ®µä¸»è¦æ`connectionãcontent-typeãcontent-encodingãcontent-lengthãset-cookieãLast-Modifiedï¼ãCache-ControlãExpires`ã - **ååºä½**ï¼æå¡å¨è¿åç»å®¢æ·ç«¯çå 容ã **ååºæ¥æç¤ºä¾**ï¼ ```html HTTP/1.1 200 OK Server:Apache Tomcat/5.0.12 Date:Mon,6Oct2003 13:23:42 GMT Content-Length:112
ååºä½ ``` ## HTTPç¶æç æåªäºï¼  HTTP ç¶æç æ¯æå¡å¨ç«¯è¿åç»å®¢æ·ç«¯çååºç¶æç ï¼æ ¹æ®ç¶æç æä»¬å°±è½ç¥éæå¡å¨ç«¯æ³è¦ç»å®¢æ·ç«¯è¡¨è¾¾çå ·ä½å«ä¹ï¼æ¯å¦ 200 就表示请æ±è®¿é®æåï¼500 就表示æå¡å¨ç«¯ç¨åºåºéçãHTTP ç¶æç å¯å为 5 å¤§ç±»ï¼ 1. 1XXï¼æ¶æ¯ç¶æç ã 2. 2XXï¼æåç¶æç ã 3. 3XXï¼éå®åç¶æç ã 4. 4XXï¼å®¢æ·ç«¯éè¯¯ç¶æç ã 5. 5XXï¼æå¡ç«¯éè¯¯ç¶æç ã è¿ 5 大类ä¸åå å«äºå¾å¤å ·ä½çç¶æç ã 1XX为**æ¶æ¯ç¶æç **ï¼å ¶ä¸ï¼ - 100ï¼Continue ç»§ç»ã客æ·ç«¯åºç»§ç»å ¶è¯·æ±ã - 101ï¼Switching Protocols 忢åè®®ãæå¡å¨æ ¹æ®å®¢æ·ç«¯ç请æ±åæ¢åè®®ãåªè½åæ¢å°æ´é«çº§çåè®®ï¼ä¾å¦ï¼åæ¢å° HTTP çæ°çæ¬åè®®ã 2XX为**æåç¶æç **ï¼å ¶ä¸ï¼ - **200ï¼OK è¯·æ±æåãä¸è¬ç¨äº GET ä¸ POST 请æ±ã** - 201ï¼Created å·²å建ãæå请æ±å¹¶åå»ºäºæ°çèµæºã - 202ï¼Accepted å·²æ¥åãå·²ç»æ¥å请æ±ï¼ä½æªå¤ç宿ã - 203ï¼Non-Authoritative Information éææä¿¡æ¯ãè¯·æ±æåãä½è¿åç meta ä¿¡æ¯ä¸å¨åå§çæå¡å¨ï¼èæ¯ä¸ä¸ªå¯æ¬ã - 204ï¼No Content æ å 容ãæå¡å¨æåå¤çï¼ä½æªè¿åå 容ã卿ªæ´æ°ç½é¡µçæ åµä¸ï¼å¯ç¡®ä¿æµè§å¨ç»§ç»æ¾ç¤ºå½åææ¡£ã - 205ï¼Reset Content éç½®å 容ãæå¡å¨å¤çæåï¼ç¨æ·ç»ç«¯ï¼ä¾å¦ï¼æµè§å¨ï¼åºéç½®ææ¡£è§å¾ãå¯éè¿æ¤è¿åç æ¸ 餿µè§å¨ç表ååã - 206ï¼Partial Content é¨åå 容ãæå¡å¨æåå¤çäºé¨å GET 请æ±ã 3XX为**éå®åç¶æç **ï¼å ¶ä¸ï¼ - 300ï¼Multiple Choices å¤ç§éæ©ã请æ±çèµæºå¯å æ¬å¤ä¸ªä½ç½®ï¼ç¸åºå¯è¿åä¸ä¸ªèµæºç¹å¾ä¸å°åçå表ç¨äºç¨æ·ç»ç«¯ï¼ä¾å¦ï¼æµè§å¨ï¼éæ©ã - **301ï¼Moved Permanently æ°¸ä¹ ç§»å¨ã请æ±çèµæºå·²è¢«æ°¸ä¹ çç§»å¨å°æ° URIï¼è¿åä¿¡æ¯ä¼å æ¬æ°ç URIï¼æµè§å¨ä¼èªå¨å®åå°æ° URIãä»å任使°ç请æ±é½åºä½¿ç¨æ°ç URI 代æ¿ã** - **302ï¼Found 临æ¶ç§»å¨ï¼ä¸ 301 类似ãä½èµæºåªæ¯ä¸´æ¶è¢«ç§»å¨ã客æ·ç«¯åºç»§ç»ä½¿ç¨åæURIã** - 303ï¼See Other æ¥çå ¶å®å°åãä¸ 301 类似ãä½¿ç¨ GET å POST è¯·æ±æ¥çã - 304ï¼Not Modified æªä¿®æ¹ãæè¯·æ±çèµæºæªä¿®æ¹ï¼æå¡å¨è¿åæ¤ç¶æç æ¶ï¼ä¸ä¼è¿åä»»ä½èµæºã客æ·ç«¯é常ä¼ç¼å访é®è¿çèµæºï¼éè¿æä¾ä¸ä¸ªå¤´ä¿¡æ¯æåºå®¢æ·ç«¯å¸æåªè¿å卿宿¥æä¹åä¿®æ¹çèµæºã - 305ï¼Use Proxy 使ç¨ä»£çãæè¯·æ±çèµæºå¿ é¡»éè¿ä»£ç访é®ã - 306ï¼Unused å·²ç»è¢«åºå¼ç HTTP ç¶æç ã - 307ï¼Temporary Redirect 临æ¶éå®åãä¸ 302 类似ãä½¿ç¨ GET 请æ±éå®åã 4XX为客æ·ç«¯**éè¯¯ç¶æç **ï¼å ¶ä¸ï¼ - 400ï¼Bad Request 客æ·ç«¯è¯·æ±çè¯æ³éè¯¯ï¼æå¡å¨æ æ³çè§£ã - 401ï¼Unauthorized 请æ±è¦æ±ç¨æ·ç身份认è¯ã - 402ï¼Payment Required ä¿çï¼å°æ¥ä½¿ç¨ã - 403ï¼Forbidden æå¡å¨ç解请æ±å®¢æ·ç«¯ç请æ±ï¼ä½æ¯æç»æ§è¡æ¤è¯·æ±ã - **404ï¼Not Found æå¡å¨æ æ³æ ¹æ®å®¢æ·ç«¯çè¯·æ±æ¾å°èµæºï¼ç½é¡µï¼ãéè¿æ¤ä»£ç ï¼ç½ç«è®¾è®¡äººåå¯è®¾ç½®"æ¨æè¯·æ±çèµæºæ æ³æ¾å°"ç个æ§é¡µé¢ã** - **405ï¼Method Not Allowed 客æ·ç«¯è¯·æ±ä¸çæ¹æ³è¢«ç¦æ¢ã** - 406ï¼Not Acceptable æå¡å¨æ æ³æ ¹æ®å®¢æ·ç«¯è¯·æ±çå å®¹ç¹æ§å®æè¯·æ±ã - 407ï¼Proxy Authentication Required 请æ±è¦æ±ä»£çç身份认è¯ï¼ä¸ 401 类似ï¼ä½è¯·æ±è åºå½ä½¿ç¨ä»£çè¿è¡ææã - 408ï¼Request Time-out æå¡å¨çå¾ å®¢æ·ç«¯åéçè¯·æ±æ¶é´è¿é¿ï¼è¶ æ¶ã - 409ï¼Conflict æå¡å¨å®æå®¢æ·ç«¯ç PUT è¯·æ±æ¶å¯è½è¿åæ¤ä»£ç ï¼æå¡å¨å¤çè¯·æ±æ¶åçäºå²çªã - 410ï¼Gone 客æ·ç«¯è¯·æ±çèµæºå·²ç»ä¸åå¨ã410 ä¸åäº 404ï¼å¦æèµæºä»¥åæç°å¨è¢«æ°¸ä¹ å é¤äºå¯ä½¿ç¨ 410 代ç ï¼ç½ç«è®¾è®¡äººåå¯éè¿ 301 ä»£ç æå®èµæºçæ°ä½ç½®ã - 411ï¼Length Required æå¡å¨æ æ³å¤ç客æ·ç«¯åéçä¸å¸¦ Content-Length ç请æ±ä¿¡æ¯ã - 412ï¼Precondition Failed 客æ·ç«¯è¯·æ±ä¿¡æ¯çå 峿¡ä»¶é误ã - 413ï¼Request Entity Too Large ç±äºè¯·æ±çå®ä½è¿å¤§ï¼æå¡å¨æ æ³å¤çï¼å æ¤æç»è¯·æ±ãä¸ºé²æ¢å®¢æ·ç«¯çè¿ç»è¯·æ±ï¼æå¡å¨å¯è½ä¼å ³éè¿æ¥ãå¦æåªæ¯æå¡å¨ææ¶æ æ³å¤çï¼åä¼å å«ä¸ä¸ª Retry-After çååºä¿¡æ¯ã - 414ï¼Request-URI Too Large 请æ±ç URI è¿é¿ï¼URIé常为ç½åï¼ï¼æå¡å¨æ æ³å¤çã - 415ï¼Unsupported Media Type æå¡å¨æ æ³å¤ç请æ±é带çåªä½æ ¼å¼ã - 416ï¼Requested range not satisfiable 客æ·ç«¯è¯·æ±çèå´æ æã - 417ï¼Expectation Failed æå¡å¨æ æ³æ»¡è¶³ Expect ç请æ±å¤´ä¿¡æ¯ã 5XX为**æå¡ç«¯éè¯¯ç¶æç **ï¼å ¶ä¸ï¼ - **500ï¼Internal Server Error æå¡å¨å é¨éè¯¯ï¼æ æ³å®æè¯·æ±ã** - 501ï¼Not Implemented æå¡å¨ä¸æ¯æè¯·æ±çåè½ï¼æ æ³å®æè¯·æ±ã - 502ï¼Bad Gateway ä½ä¸ºç½å ³æè 代çå·¥ä½çæå¡å¨å°è¯æ§è¡è¯·æ±æ¶ï¼ä»è¿ç¨æå¡å¨æ¥æ¶å°äºä¸ä¸ªæ æçååºã - 503ï¼Service Unavailable ç±äºè¶ è½½æç³»ç»ç»´æ¤ï¼æå¡å¨ææ¶çæ æ³å¤ç客æ·ç«¯ç请æ±ãå»¶æ¶çé¿åº¦å¯å å«å¨æå¡å¨çRetry-After头信æ¯ä¸ã - 504ï¼Gateway Time-out å å½ç½å ³æä»£ççæå¡å¨ï¼æªåæ¶ä»è¿ç«¯æå¡å¨è·å请æ±ã - 505ï¼HTTP Version not supported æå¡å¨ä¸æ¯æè¯·æ±çHTTPåè®®ççæ¬ï¼æ æ³å®æå¤çã **æ»ç»ä¸ä¸**ï¼ HTTP ç¶æç å为 5 大类ï¼1XXï¼è¡¨ç¤ºæ¶æ¯ç¶æç ï¼2XXï¼è¡¨ç¤ºæåç¶æç ï¼3XXï¼è¡¨ç¤ºéå®åç¶æç ï¼4XXï¼è¡¨ç¤ºå®¢æ·ç«¯éè¯¯ç¶æç ï¼5XXï¼è¡¨ç¤ºæå¡ç«¯éè¯¯ç¶æç ãå ¶ä¸å¸¸è§çå ·ä½ç¶æç æï¼200ï¼è¯·æ±æåï¼301ï¼æ°¸ä¹ éå®åï¼302ï¼ä¸´æ¶éå®åï¼404ï¼æ æ³æ¾å°æ¤é¡µé¢ï¼405ï¼è¯·æ±çæ¹æ³ç±»å䏿¯æï¼500ï¼æå¡å¨å é¨åºéã ## HTTP åè®®å æ¬åªäºè¯·æ±ï¼ HTTPåè®®ä¸å ±å®ä¹äºå «ç§æ¹æ³æ¥è¡¨ç¤ºå¯¹Request-URIæå®çèµæºçä¸åæä½æ¹å¼ï¼å ·ä½å¦ä¸ï¼ - GETï¼åç¹å®çèµæºååºè¯·æ±ã - POSTï¼åæå®èµæºæäº¤æ°æ®è¿è¡å¤ç请æ±ï¼ä¾å¦æäº¤è¡¨åæè ä¸ä¼ æä»¶ï¼ãæ°æ®è¢«å å«å¨è¯·æ±ä½ä¸ãPOST请æ±å¯è½ä¼å¯¼è´æ°çèµæºçå建å/æå·²æèµæºçä¿®æ¹ã - OPTIONSï¼è¿åæå¡å¨é对ç¹å®èµæºææ¯æçHTTPè¯·æ±æ¹æ³ãä¹å¯ä»¥å©ç¨åWebæå¡å¨åé'*'çè¯·æ±æ¥æµè¯æå¡å¨çåè½æ§ã - HEADï¼åæå¡å¨ç´¢è¦ä¸GET请æ±ç¸ä¸è´çååºï¼åªä¸è¿ååºä½å°ä¸ä¼è¢«è¿åãè¿ä¸æ¹æ³å¯ä»¥å¨ä¸å¿ ä¼ è¾æ´ä¸ªååºå å®¹çæ åµä¸ï¼å°±å¯ä»¥è·åå å«å¨ååºæ¶æ¯å¤´ä¸çå ä¿¡æ¯ã - PUTï¼åæå®èµæºä½ç½®ä¸ä¼ å ¶ææ°å 容ã - DELETEï¼è¯·æ±æå¡å¨å é¤Request-URIææ è¯çèµæºã - TRACEï¼åæ¾æå¡å¨æ¶å°ç请æ±ï¼ä¸»è¦ç¨äºæµè¯æè¯æã - CONNECTï¼HTTP/1.1åè®®ä¸é¢çç»è½å¤å°è¿æ¥æ¹ä¸ºç®¡éæ¹å¼ç代çæå¡å¨ã ## HTTPç¶æç 301å302çåºå«ï¼ - 301ï¼ï¼æ°¸ä¹ æ§è½¬ç§»ï¼è¯·æ±çç½é¡µå·²è¢«æ°¸ä¹ ç§»å¨å°æ°ä½ç½®ãæå¡å¨è¿åæ¤ååºæ¶ï¼ä¼èªå¨å°è¯·æ±è è½¬å°æ°ä½ç½®ã - 302ï¼ï¼ææ¶æ§è½¬ç§»ï¼æå¡å¨ç®åæ£ä»ä¸åä½ç½®çç½é¡µååºè¯·æ±ï¼ä½è¯·æ±è åºç»§ç»ä½¿ç¨åæä½ç½®æ¥è¿è¡ä»¥åç请æ±ãæ¤ä»£ç ä¸ååºGETåHEAD请æ±ç301代ç 类似ï¼ä¼èªå¨å°è¯·æ±è 转å°ä¸åçä½ç½®ã **举个形象çä¾å**ï¼å½ä¸ä¸ªç½ç«æè ç½é¡µ24â48å°æ¶å 临æ¶ç§»å¨å°ä¸ä¸ªæ°çä½ç½®ï¼è¿æ¶åå°±è¦è¿è¡302è·³è½¬ï¼æä¸ªæ¯æ¹è¯´ï¼ææä¸å¥æ¿åï¼ä½æ¯æè¿èµ°äº²æå»äº²æå®¶ä½äºï¼è¿ä¸¤å¤©æè¿åæ¥çãè使ç¨301跳转çåºæ¯å°±æ¯ä¹åçç½ç«å 为æç§åå éè¦ç§»é¤æï¼ç¶åè¦å°æ°çå°å访é®ï¼æ¯æ°¸ä¹ æ§çï¼å°±æ¯å¦ä½ çé£å¥æ¿åå ¶å®æ¯ç§çï¼ç°å¨ç§æå°äºï¼ä½ åå¨å¦ä¸ä¸ªå°æ¹æ¾å°äºæ¿åï¼ä¹åç§çæ¿åä¸ä½äºã ## URIåURLçåºå« - URIï¼å ¨ç§°æ¯Uniform Resource Identifier)ï¼ä¸æç¿»è¯æ¯ç»ä¸èµæºæ å¿ç¬¦ï¼ä¸»è¦ä½ç¨æ¯å¯ä¸æ è¯ä¸ä¸ªèµæºã - URLï¼å ¨ç§°æ¯Uniform Resource Location)ï¼ä¸æç¿»è¯æ¯ç»ä¸èµæºå®ä½ç¬¦ï¼ä¸»è¦ä½ç¨æ¯æä¾èµæºçè·¯å¾ãæä¸ªç»å ¸æ¯å»å§ï¼URIåæ¯èº«ä»½è¯ï¼å¯ä»¥å¯ä¸æ è¯ä¸ä¸ªäººï¼èURLæ´åä¸ä¸ªä½åï¼å¯ä»¥éè¿URLæ¾å°è¿ä¸ªäººã ## POSTåGETçåºå«ï¼ - GET å POST ææ¬è´¨çåºå«æ¯è§èä¸çåºå«ï¼å¨è§èä¸ï¼å®ä¹ GET è¯·æ±æ¯ç¨æ¥è·åèµæºçï¼ä¹å°±æ¯è¿è¡æ¥è¯¢æä½çï¼è POST è¯·æ±æ¯ç¨æ¥ä¼ è¾å®ä½å¯¹è±¡çï¼å æ¤ä¼ä½¿ç¨ POST æ¥è¿è¡æ·»å ãä¿®æ¹åå é¤çæä½ã - GET请æ±åæ°éè¿URLä¼ éï¼POSTçåæ°æ¾å¨è¯·æ±ä½ä¸ã - GET 请æ±å¯ä»¥ç´æ¥è¿è¡åéåå·æ°ï¼ä¸ä¼å¯¹ç¨æ·åç¨åºäº§çä»»ä½å½±åï¼è POST 请æ±å¦æç´æ¥åæ»åå·æ°å°ä¼ææ°æ®å次æäº¤ã - GET产çä¸ä¸ªTCPæ°æ®å ï¼POST产ç两个TCPæ°æ®å ã对äºGETæ¹å¼ç请æ±ï¼æµè§å¨ä¼æè¯·æ±å¤´å请æ±ä½ä¸å¹¶åéåºå»ï¼è对äºPOSTï¼æµè§å¨å åé请æ±å¤´ï¼æå¡å¨ååº100 continueï¼æµè§å¨ååé请æ±ä½ã - GET 请æ±ä¸è¬ä¼è¢«ç¼åï¼æ¯å¦å¸¸è§ç CSSãJSãHTML 请æ±çé½ä¼è¢«ç¼åï¼è POST 请æ±é»è®¤æ¯ä¸è¿è¡ç¼åçã - GET请æ±åæ°ä¼è¢«å®æ´ä¿ç卿µè§å¨åå²è®°å½éï¼èPOSTä¸çåæ°ä¸ä¼è¢«ä¿çã ## å¦ä½çè§£HTTPåè®®æ¯æ ç¶æç 彿µè§å¨ç¬¬ä¸æ¬¡åé请æ±ç»æå¡å¨æ¶ï¼æå¡å¨ååºäºï¼å¦æå个æµè§å¨åèµ·ç¬¬äºæ¬¡è¯·æ±ç»æå¡å¨æ¶ï¼å®è¿æ¯ä¼ååºï¼ä½æ¯å¢ï¼æå¡å¨ä¸ç¥éä½ å°±æ¯åæçé£ä¸ªæµè§å¨ãç®è¨ä¹ï¼æå¡å¨ä¸ä¼å»è®°ä½ä½ æ¯è°ï¼æä»¥æ¯æ ç¶æåè®®ã ## HTTPé¿è¿æ¥åçè¿æ¥ï¼ HTTPçè¿æ¥ï¼æµè§å¨åæå¡å¨æ¯è¿è¡ä¸æ¬¡HTTPæä½ï¼å°±å»ºç«ä¸æ¬¡è¿æ¥ï¼ä»»å¡ç»æå°±ä¸æè¿æ¥ã**HTTP1.0é»è®¤ä½¿ç¨çæ¯çè¿æ¥**ã HTTPé¿è¿æ¥ï¼æçæ¯**å¤ç¨TCPè¿æ¥**ãå¤ä¸ªHTTP请æ±å¯ä»¥å¤ç¨åä¸ä¸ªTCPè¿æ¥ï¼è¿å°±èçäºTCPè¿æ¥å»ºç«åæå¼çæ¶èã **HTTP/1.1èµ·ï¼é»è®¤ä½¿ç¨é¿è¿æ¥**ãè¦ä½¿ç¨é¿è¿æ¥ï¼å®¢æ·ç«¯åæå¡å¨çHTTPé¦é¨çConnectioné½è¦è®¾ç½®ä¸ºkeep-aliveï¼æè½æ¯æé¿è¿æ¥ã ## HTTP å¦ä½å®ç°é¿è¿æ¥ï¼ HTTPå为é¿è¿æ¥åçè¿æ¥ï¼**æ¬è´¨ä¸è¯´çæ¯TCPçé¿çè¿æ¥**ãTCPè¿æ¥æ¯ä¸ä¸ªååçééï¼å®æ¯å¯ä»¥ä¿æä¸æ®µæ¶é´ä¸å ³éçï¼å æ¤TCPè¿æ¥æå ·æçæ£çé¿è¿æ¥åçè¿æ¥è¿ä¸è¯´æ³åã TCPé¿è¿æ¥å¯ä»¥å¤ç¨ä¸ä¸ªTCPè¿æ¥ï¼æ¥åèµ·å¤æ¬¡çHTTP请æ±ï¼è¿æ ·å°±å¯ä»¥åå°èµæºæ¶èï¼æ¯å¦ä¸æ¬¡è¯·æ±HTMLï¼å¦ææ¯çè¿æ¥çè¯ï¼å¯è½è¿éè¦è¯·æ±åç»çJS/CSSã **å¦ä½è®¾ç½®é¿è¿æ¥ï¼** éè¿å¨å¤´é¨ï¼è¯·æ±åååºå¤´ï¼è®¾ç½®**Connection**åæ®µæå®ä¸º`keep-alive`ï¼HTTP/1.0åè®®æ¯æï¼ä½æ¯æ¯é»è®¤å ³éçï¼ä»HTTP/1.1以åï¼è¿æ¥é»è®¤é½æ¯é¿è¿æ¥ã ## HTTPé¿è¿æ¥å¨ä»ä¹æ¶åä¼è¶ æ¶ï¼ HTTPä¸è¬ä¼æhttpd宿¤è¿ç¨ï¼éé¢å¯ä»¥è®¾ç½®**keep-alive timeout**ï¼å½tcpè¿æ¥é²ç½®è¶ è¿è¿ä¸ªæ¶é´å°±ä¼å ³éï¼ä¹å¯ä»¥å¨HTTPçheaderéé¢è®¾ç½®è¶ æ¶æ¶é´ã TCP ç**keep-alive**å å«ä¸ä¸ªåæ°ï¼æ¯æå¨ç³»ç»å æ ¸çnet.ipv4éé¢è®¾ç½®ï¼å½ TCP è¿æ¥ä¹åï¼é²ç½®äº**tcp_keepalive_time**ï¼åä¼åç侦æµå ï¼å¦ææ²¡ææ¶å°å¯¹æ¹çACKï¼é£ä¹ä¼æ¯é tcp_keepalive_intvlåå䏿¬¡ï¼ç´å°åéäº**tcp_keepalive_probes**ï¼å°±ä¼ä¸¢å¼è¯¥è¿æ¥ã ## HTTP1.1å HTTP2.0çåºå«ï¼ HTTP2.0ç¸æ¯HTTP1.1æ¯æçç¹æ§ï¼ * **æ°çäºè¿å¶æ ¼å¼**ï¼HTTP1.1 åºäºææ¬æ ¼å¼ä¼ è¾æ°æ®ï¼HTTP2.0éç¨äºè¿å¶æ ¼å¼ä¼ è¾æ°æ®ï¼è§£ææ´é«æã * **å¤è·¯å¤ç¨**ï¼å¨ä¸ä¸ªè¿æ¥éï¼å è®¸åæ¶åéå¤ä¸ªè¯·æ±æååºï¼**å¹¶ä¸è¿äºè¯·æ±æååºè½å¤å¹¶è¡çä¼ è¾èä¸è¢«é»å¡**ï¼é¿å HTTP1.1 åºç°çâéå¤´å µå¡âé®é¢ã * **头é¨å缩**ï¼HTTP1.1çheader带æå¤§éä¿¡æ¯ï¼è䏿¯æ¬¡é½è¦éå¤åéï¼HTTP2.0 æheader仿°æ®ä¸å离ï¼å¹¶å°è£ æå¤´å¸§åæ°æ®å¸§ï¼**使ç¨ç¹å®ç®æ³å缩头帧**ï¼ææåå°å¤´ä¿¡æ¯å¤§å°ãå¹¶ä¸HTTP2.0**å¨å®¢æ·ç«¯åæå¡å¨ç«¯è®°å½äºä¹ååéçé®å¼å¯¹ï¼å¯¹äºç¸åçæ°æ®ï¼ä¸ä¼éå¤åéã**æ¯å¦è¯·æ±aåéäºææç头信æ¯å段ï¼è¯·æ±bå**åªéè¦åé差弿°æ®**ï¼è¿æ ·å¯ä»¥åå°å使°æ®ï¼éä½å¼éã * **æå¡ç«¯æ¨é**ï¼HTTP2.0å 许æå¡å¨å客æ·ç«¯æ¨éèµæºï¼æ é客æ·ç«¯åé请æ±å°æå¡å¨è·åã ## HTTPSä¸HTTPçåºå«ï¼ 1. HTTPæ¯è¶ ææ¬ä¼ è¾åè®®ï¼ä¿¡æ¯æ¯**ææä¼ è¾**ï¼HTTPSåæ¯å ·æ**å®å ¨æ§**çsslå å¯ä¼ è¾åè®®ã 2. HTTPåHTTPSç¨ç端å£ä¸ä¸æ ·ï¼HTTPç«¯å£æ¯80ï¼HTTPSæ¯443ã 3. HTTPSåè®®**éè¦å°CAæºæç³è¯·è¯ä¹¦**ï¼ä¸è¬éè¦ä¸å®çè´¹ç¨ã 4. HTTPè¿è¡å¨TCPåè®®ä¹ä¸ï¼HTTPSè¿è¡å¨SSLåè®®ä¹ä¸ï¼SSLè¿è¡å¨TCPåè®®ä¹ä¸ã ## ä»ä¹æ¯æ°åè¯ä¹¦ï¼ æå¡ç«¯å¯ä»¥åè¯ä¹¦é¢åæºæCAç³è¯·è¯ä¹¦ï¼ä»¥é¿å ä¸é´äººæ»å»ï¼é²æ¢è¯ä¹¦è¢«ç¯¡æ¹ï¼ãè¯ä¹¦å å«ä¸é¨åå 容ï¼**è¯ä¹¦å 容ãè¯ä¹¦ç¾åç®æ³åç¾å**ï¼ç¾åæ¯ä¸ºäºéªè¯èº«ä»½ã  æå¡ç«¯æè¯ä¹¦ä¼ è¾ç»æµè§å¨ï¼æµè§å¨ä»è¯ä¹¦éåå ¬é¥ãè¯ä¹¦å¯ä»¥è¯æè¯¥å ¬é¥å¯¹åºæ¬ç½ç«ã **æ°åç¾åçå¶ä½è¿ç¨**ï¼ 1. CA使ç¨è¯ä¹¦ç¾åç®æ³å¯¹è¯ä¹¦å 容è¿è¡**hashè¿ç®**ã 2. 对hashåçå¼**ç¨CAçç§é¥å å¯**ï¼å¾å°æ°åç¾åã **æµè§å¨éªè¯è¿ç¨**ï¼ 1. è·åè¯ä¹¦ï¼å¾å°è¯ä¹¦å 容ãè¯ä¹¦ç¾åç®æ³åæ°åç¾åã 2. ç¨CAæºæçå ¬é¥**对æ°åç¾åè§£å¯**ï¼ç±äºæ¯æµè§å¨ä¿¡ä»»çæºæï¼æä»¥æµè§å¨ä¼ä¿åå®çå ¬é¥ï¼ã 3. ç¨è¯ä¹¦éçç¾åç®æ³**对è¯ä¹¦å 容è¿è¡hashè¿ç®**ã 4. æ¯è¾è§£å¯åçæ°åç¾åå对è¯ä¹¦å 容åhashè¿ç®åå¾å°çåå¸å¼ï¼ç¸çå表æè¯ä¹¦å¯ä¿¡ã ## HTTPSåç é¦å æ¯TCP䏿¬¡æ¡æï¼ç¶å客æ·ç«¯åèµ·ä¸ä¸ªHTTPSè¿æ¥å»ºç«è¯·æ±ï¼å®¢æ·ç«¯å åä¸ä¸ª`Client Hello`çå ï¼ç¶åæå¡ç«¯ååº`Server Hello`ï¼æ¥çåç»å®¢æ·ç«¯åéå®çè¯ä¹¦ï¼ç¶ååæ¹ç»è¿å¯é¥äº¤æ¢ï¼æå使ç¨äº¤æ¢çå¯é¥å è§£å¯æ°æ®ã 1. **ååå å¯ç®æ³** ãå¨`Client Hello`éé¢å®¢æ·ç«¯ä¼åç¥æå¡ç«¯èªå·±å½åçä¸äºä¿¡æ¯ï¼å æ¬å®¢æ·ç«¯è¦ä½¿ç¨çTLSçæ¬ï¼æ¯æçå å¯ç®æ³ï¼è¦è®¿é®çååï¼ç»æå¡ç«¯çæçä¸ä¸ªéæºæ°ï¼Nonceï¼çãéè¦æååç¥æå¡å¨æ³è¦è®¿é®çåå以便æå¡å¨åéç¸åºçååçè¯ä¹¦è¿æ¥ã  2. æå¡ç«¯ååº`Server Hello`ï¼åè¯å®¢æ·ç«¯æå¡ç«¯**éä¸çå å¯ç®æ³**ã  3. æ¥çæå¡ç«¯ç»å®¢æ·ç«¯åæ¥äº2个è¯ä¹¦ã第äºä¸ªè¯ä¹¦æ¯ç¬¬ä¸ä¸ªè¯ä¹¦çç¾åæºæï¼CAï¼çè¯ä¹¦ã  4. 客æ·ç«¯ä½¿ç¨è¯ä¹¦çè®¤è¯æºæCAå ¬å¼åå¸çRSAå ¬é¥**对该è¯ä¹¦è¿è¡éªè¯**ï¼ä¸å¾è¡¨æè¯ä¹¦è®¤è¯æåã  5. éªè¯éè¿ä¹åï¼æµè§å¨åæå¡å¨éè¿**å¯é¥äº¤æ¢ç®æ³**产çå ±äº«ç**对称å¯é¥**ã   6. å¼å§ä¼ è¾æ°æ®ï¼ä½¿ç¨åä¸ä¸ªå¯¹ç§°å¯é¥æ¥å è§£å¯ã  ## DNS çè§£æè¿ç¨ï¼ 1. æµè§å¨æç´¢**èªå·±çDNSç¼å** 2. è¥æ²¡æï¼åæç´¢**æä½ç³»ç»ä¸çDNSç¼ååhostsæä»¶** 3. è¥æ²¡æï¼åæä½ç³»ç»å°åååéè³**æ¬å°ååæå¡å¨**ï¼æ¬å°ååæå¡å¨æ¥è¯¢èªå·±çDNSç¼åï¼æ¥æ¾æååè¿åç»æï¼å¦å便¬¡å**æ ¹ååæå¡å¨ã顶级ååæå¡å¨ãæéååæå¡å¨**åèµ·æ¥è¯¢è¯·æ±ï¼æç»è¿åIPå°åç»æ¬å°ååæå¡å¨ 4. æ¬å°ååæå¡å¨å°å¾å°çIPå°åè¿åç»**æä½ç³»ç»**ï¼åæ¶èªå·±ä¹**å°IPå°åç¼åèµ·æ¥** 5. æä½ç³»ç»å° IP å°åè¿åç»æµè§å¨ï¼åæ¶èªå·±ä¹å°IPå°åç¼åèµ·æ¥ 6. æµè§å¨å¾å°åå对åºçIPå°å ## æµè§å¨ä¸è¾å ¥URLè¿å页é¢è¿ç¨ï¼ 1. **è§£æåå**ï¼æ¾å°ä¸»æº IPã 2. æµè§å¨å©ç¨ IP ç´æ¥ä¸ç½ç«ä¸»æºéä¿¡ï¼**䏿¬¡æ¡æ**ï¼å»ºç« TCP è¿æ¥ãæµè§å¨ä¼ä»¥ä¸ä¸ªéæºç«¯å£åæå¡ç«¯ç web ç¨åº 80 端å£åèµ· TCP çè¿æ¥ã 3. å»ºç« TCP è¿æ¥åï¼æµè§å¨å主æºåèµ·ä¸ä¸ªHTTP请æ±ã 4. åæ°ä»å®¢æ·ç«¯ä¼ éå°æå¡å¨ç«¯ã 5. æå¡å¨ç«¯å¾å°å®¢æ·ç«¯åæ°ä¹åï¼è¿è¡ç¸åºçä¸å¡å¤çï¼åå°ç»æå°è£ æ HTTP å ï¼è¿åç»å®¢æ·ç«¯ã 6. æå¡å¨ç«¯å客æ·ç«¯ç交äºå®æï¼æå¼ TCP è¿æ¥ï¼4 æ¬¡æ¥æï¼ã 7. æµè§å¨**è§£æååºå 容ï¼è¿è¡æ¸²æ**ï¼åç°ç»ç¨æ·ã  ## DNS ååè§£æçè¿ç¨ å¨ç½ç»ä¸å®ä½æ¯ä¾é IP è¿è¡èº«ä»½å®ä½çï¼æä»¥ URL 访é®çç¬¬ä¸æ¥ä¾¿æ¯å è¦å¾å°æå¡å¨ç«¯ç IP å°åãèå¾å°æå¡å¨ç IP å°åéè¦ä½¿ç¨ DNSï¼Domain Name Systemï¼ååç³»ç»ï¼ååè§£æï¼DNS ååè§£æå°±æ¯éè¿ URL æ¾å°ä¸ä¹ç¸å¯¹åºç IP å°åã DNS ååè§£æçå¤§è´æµç¨å¦ä¸ï¼ 1. å æ£**æ¥æµè§å¨ä¸ç DNS ç¼å**ï¼å¦ææµè§å¨ä¸æå¯¹åºçè®°å½ä¼ç´æ¥ä½¿ç¨ï¼å¹¶å®æè§£æï¼ 2. 妿æµè§å¨æ²¡æç¼åï¼é£å°±å»**æ¥è¯¢æä½ç³»ç»çç¼å**ï¼å¦ææ¥è¯¢å°è®°å½å°±å¯ä»¥ç´æ¥è¿å IP å°åï¼å®æè§£æï¼ 3. 妿æä½ç³»ç»æ²¡æ DNS ç¼åï¼å°±ä¼å»**æ¥çæ¬å° host æä»¶**ï¼Windows æä½ç³»ç»ä¸ï¼host æä»¶ä¸è¬ä½äº "C:\Windows\System32\drivers\etc\hosts"ï¼å¦æ host æä»¶æè®°å½åç´æ¥ä½¿ç¨ï¼ 4. 妿æ¬å° host æä»¶æ²¡æç¸åºçè®°å½ï¼ä¼**è¯·æ±æ¬å° DNS æå¡å¨**ï¼æ¬å° DNS æå¡å¨ä¸è¬æ¯ç±æ¬å°ç½ç»æå¡åå¦ç§»å¨ãèéçæä¾ãé常æ åµä¸å¯éè¿ DHCP èªå¨åé ï¼å½ç¶ä¹å¯ä»¥èªå·±æå¨é ç½®ãç®åç¨çæ¯è¾å¤çæ¯è°·ææä¾çå ¬ç¨ DNS æ¯ 8.8.8.8 åå½å çå ¬ç¨ DNS æ¯ 114.114.114.114ã 5. 妿æ¬å° DNS æå¡å¨æ²¡æç¸åºçè®°å½ï¼å°±ä¼**廿 ¹ååæå¡å¨æ¥è¯¢**äºã为äºè½æ´é«æå®æå ¨çææååçè§£æè¯·æ±ï¼æ ¹ååæå¡å¨æ¬èº«å¹¶ä¸ä¼ç´æ¥å»è§£æååï¼èæ¯ä¼æä¸åçè§£æè¯·æ±åé ç»ä¸é¢çå ¶ä»æå¡å¨å»å®æã  > å¾çæ¥æºäºç½ç» ## ä»ä¹æ¯cookieåsessionï¼ ç±äºHTTPåè®®æ¯æ ç¶æçåè®®ï¼éè¦ç¨æç§æºå¶æ¥è¯å ·ä½çç¨æ·èº«ä»½ï¼ç¨æ¥è·è¸ªç¨æ·çæ´ä¸ªä¼è¯ã常ç¨çä¼è¯è·è¸ªææ¯æ¯cookieä¸sessionã **cookie**å°±æ¯ç±æå¡å¨åç»å®¢æ·ç«¯çç¹æ®ä¿¡æ¯ï¼èè¿äºä¿¡æ¯ä»¥ææ¬æä»¶çæ¹å¼åæ¾å¨å®¢æ·ç«¯ï¼ç¶å客æ·ç«¯æ¯æ¬¡åæå¡å¨åé请æ±çæ¶åé½ä¼å¸¦ä¸è¿äºç¹æ®çä¿¡æ¯ãè¯´å¾æ´å ·ä½ä¸äºï¼å½ç¨æ·ä½¿ç¨æµè§å¨è®¿é®ä¸ä¸ªæ¯æcookieçç½ç«çæ¶åï¼ç¨æ·ä¼æä¾å æ¬ç¨æ·åå¨å ç个人信æ¯å¹¶ä¸æäº¤è³æå¡å¨ï¼æ¥çï¼æå¡å¨å¨å客æ·ç«¯åä¼ ç¸åºçè¶ ææ¬çåæ¶ä¹ä¼ååè¿äºä¸ªäººä¿¡æ¯ï¼å½ç¶è¿äºä¿¡æ¯å¹¶ä¸æ¯åæ¾å¨HTTPååºä½ä¸çï¼èæ¯åæ¾äºHTTPååºå¤´ï¼å½å®¢æ·ç«¯æµè§å¨æ¥æ¶å°æ¥èªæå¡å¨çååºä¹åï¼æµè§å¨ä¼å°è¿äºä¿¡æ¯åæ¾å¨ä¸ä¸ªç»ä¸çä½ç½®ã èªæ¤ï¼å®¢æ·ç«¯ååæå¡å¨åé请æ±çæ¶åï¼é½ä¼æç¸åºçcookieåæ¾å¨HTTP请æ±å¤´å次ååè³æå¡å¨ãæå¡å¨å¨æ¥æ¶å°æ¥èªå®¢æ·ç«¯æµè§å¨ç请æ±ä¹åï¼å°±è½å¤éè¿åæåæ¾äºè¯·æ±å¤´çcookieå¾å°å®¢æ·ç«¯ç¹æçä¿¡æ¯ï¼ä»è卿çæä¸è¯¥å®¢æ·ç«¯ç¸å¯¹åºçå 容ãç½ç«çç»å½çé¢ä¸âè¯·è®°ä½æâè¿æ ·çé项ï¼å°±æ¯éè¿cookieå®ç°çã  **cookie工使µç¨**ï¼ 1. servletå建cookieï¼ä¿åå°éæ°æ®ï¼åéç»æµè§å¨ã 2. æµè§å¨è·å¾æå¡å¨åéçcookieæ°æ®ï¼å°èªå¨çä¿åå°æµè§å¨ç«¯ã 3. 䏿¬¡è®¿é®æ¶ï¼æµè§å¨å°èªå¨æºå¸¦cookieæ°æ®åéç»æå¡å¨ã **sessionåç**ï¼é¦å æµè§å¨è¯·æ±æå¡å¨è®¿é®webç«ç¹æ¶ï¼æå¡å¨é¦å 伿£æ¥è¿ä¸ªå®¢æ·ç«¯è¯·æ±æ¯å¦å·²ç»å å«äºä¸ä¸ªsessionæ è¯ã称为SESSIONIDï¼å¦æå·²ç»å å«äºä¸ä¸ªsessionidå说æä»¥åå·²ç»ä¸ºæ¤å®¢æ·ç«¯å建è¿sessionï¼æå¡å¨å°±æç §sessionidæè¿ä¸ªsessionæ£ç´¢åºæ¥ä½¿ç¨ï¼å¦æå®¢æ·ç«¯è¯·æ±ä¸å å«session idï¼åæå¡å¨ä¸ºæ¤å®¢æ·ç«¯å建ä¸ä¸ªsessionï¼å¹¶ä¸çæä¸ä¸ªä¸æ¤sessionç¸å ³èçç¬ä¸æ äºçsessionidåæ¾å°cookieä¸ï¼è¿ä¸ªsessionidå°å¨æ¬æ¬¡ååºä¸è¿åå°å®¢æ·ç«¯ä¿åï¼è¿æ ·å¨äº¤äºçè¿ç¨ä¸ï¼æµè§å¨ç«¯æ¯æ¬¡è¯·æ±æ¶ï¼é½ä¼å¸¦çè¿ä¸ªsessionidï¼æå¡å¨æ ¹æ®è¿ä¸ªsessionidå°±å¯ä»¥æ¾å¾å°å¯¹åºçsessionãä»¥æ¤æ¥è¾¾å°å ±äº«æ°æ®çç®çã è¿ééè¦æ³¨æçæ¯ï¼sessionä¸ä¼éçæµè§å¨çå ³éèæ»äº¡ï¼èæ¯çå¾ è¶ æ¶æ¶é´ã  ## cookieåsessionçåºå«ï¼ - **ä½ç¨èå´ä¸å**ï¼Cookie ä¿åå¨å®¢æ·ç«¯ï¼Session ä¿å卿å¡å¨ç«¯ã - **æææä¸å**ï¼Cookie å¯è®¾ç½®ä¸ºé¿æ¶é´ä¿æï¼æ¯å¦æä»¬ç»å¸¸ä½¿ç¨çé»è®¤ç»å½åè½ï¼Session ä¸è¬å¤±ææ¶é´è¾çï¼å®¢æ·ç«¯å ³éæè Session è¶ æ¶é½ä¼å¤±æã - **éç§çç¥ä¸å**ï¼Cookie åå¨å¨å®¢æ·ç«¯ï¼å®¹æè¢«çªåï¼Session åå¨å¨æå¡ç«¯ï¼å®å ¨æ§ç¸å¯¹ Cookie è¦å¥½ä¸äºã - **åå¨å¤§å°ä¸å**ï¼ å个 Cookie ä¿åçæ°æ®ä¸è½è¶ è¿ 4Kï¼å¯¹äº Session æ¥è¯´å卿²¡æä¸éï¼ä½åºäºå¯¹æå¡å¨çæ§è½èèï¼Session å ä¸è¦åæ¾è¿å¤çæ°æ®ï¼å¹¶ä¸éè¦è®¾ç½® Session å 餿ºå¶ã ## ä»ä¹æ¯å¯¹ç§°å å¯åé对称å å¯ï¼ **对称å å¯**ï¼éä¿¡åæ¹ä½¿ç¨**ç¸åçå¯é¥**è¿è¡å å¯ãç¹ç¹æ¯å å¯é度快ï¼ä½æ¯ç¼ºç¹æ¯å¯é¥æ³é²ä¼å¯¼è´å¯ææ°æ®è¢«ç ´è§£ã常è§ç对称å 坿`AES`å`DES`ç®æ³ã **é对称å å¯**ï¼å®éè¦çæä¸¤ä¸ªå¯é¥ï¼**å ¬é¥åç§é¥**ãå ¬é¥æ¯å ¬å¼çï¼ä»»ä½äººé½å¯ä»¥è·å¾ï¼èç§é¥æ¯ç§äººä¿ç®¡çãå ¬é¥è´è´£å å¯ï¼ç§é¥è´è´£è§£å¯ï¼æè ç§é¥è´è´£å å¯ï¼å ¬é¥è´è´£è§£å¯ãè¿ç§å å¯ç®æ³**å®å ¨æ§æ´é«**ï¼ä½æ¯**计ç®éç¸æ¯å¯¹ç§°å å¯å¤§å¾å¤**ï¼å å¯åè§£å¯é½å¾æ ¢ã常è§çéå¯¹ç§°ç®æ³æ`RSA`å`DSA`ã ## 说说 WebSocketä¸socketçåºå« Socketæ¯ä¸å¥æ åï¼å®å®æäºå¯¹TCP/IPçé«åº¦å°è£ ï¼å±è½ç½ç»ç»èï¼ä»¥æ¹ä¾¿å¼åè æ´å¥½å°è¿è¡ç½ç»ç¼ç¨ãSocketå ¶å®å°±æ¯çäº**IPå°å + ç«¯å£ + åè®®**ã WebSocketæ¯ä¸ä¸ªæä¹ åçåè®®ï¼å®æ¯ä¼´éH5èåºçåè®®ï¼ç¨æ¥è§£å³**http䏿¯ææä¹ åè¿æ¥**çé®é¢ã Socketä¸ä¸ªæ¯**ç½ç¼ç¼ç¨çæ 忥å£**ï¼èWebSocket忝åºç¨å±éä¿¡åè®®ã ## ARPåè®®çå·¥ä½è¿ç¨ï¼ ARPè§£å³äºåä¸ä¸ªå±åç½ä¸ç主æºåè·¯ç±å¨IPåMACå°åçè§£æã - æ¯å°ä¸»æºé½ä¼å¨èªå·±çARPç¼å²åºä¸å»ºç«ä¸ä¸ªARPå表ï¼ä»¥è¡¨ç¤ºIPå°ååMACå°åç对åºå ³ç³»ã - 彿ºä¸»æºéè¦å°ä¸ä¸ªæ°æ®å è¦åéå°ç®çä¸»æºæ¶ï¼ä¼é¦å æ£æ¥èªå·± ARPåè¡¨ä¸æ¯å¦åå¨è¯¥ IPå°å对åºçMACå°åï¼å¦ææï¼å°±ç´æ¥å°æ°æ®å åéå°è¿ä¸ªMACå°åï¼å¦ææ²¡æï¼å°±åæ¬å°ç½æ®µåèµ·ä¸ä¸ªARP请æ±ç广æå ï¼æ¥è¯¢æ¤ç®ç主æºå¯¹åºçMACå°åãæ¤ARPè¯·æ±æ°æ®å éå æ¬æºä¸»æºçIPå°åã硬件å°åã以åç®ç主æºçIPå°åã - ç½ç»ä¸ææçä¸»æºæ¶å°è¿ä¸ªARP请æ±åï¼ä¼æ£æ¥æ°æ®å ä¸çç®çIPæ¯å¦åèªå·±çIPå°åä¸è´ã妿ä¸ç¸åå°±å¿½ç¥æ¤æ°æ®å ï¼å¦æç¸åï¼è¯¥ä¸»æºé¦å å°åé端çMACå°ååIPå°åæ·»å å°èªå·±çARPå表ä¸ï¼å¦æARP表ä¸å·²ç»åå¨è¯¥IPçä¿¡æ¯ï¼åå°å ¶è¦çï¼ç¶åç»æºä¸»æºåéä¸ä¸ª ARPååºæ°æ®å ï¼åè¯å¯¹æ¹èªå·±æ¯å®éè¦æ¥æ¾çMACå°åã - æºä¸»æºæ¶å°è¿ä¸ªARPååºæ°æ®å åï¼å°å¾å°çç®ç主æºçIPå°ååMACå°åæ·»å å°èªå·±çARPå表ä¸ï¼å¹¶å©ç¨æ¤ä¿¡æ¯å¼å§æ°æ®çä¼ è¾ã - 妿æºä¸»æºä¸ç´æ²¡ææ¶å°ARPååºæ°æ®å ï¼è¡¨ç¤ºARPæ¥è¯¢å¤±è´¥ã ## ICMPåè®®çåè½ ICMP,Internet Control Message Protocol ,Internetæ§å¶æ¶æ¯åè®®ã - ICMPåè®®æ¯ä¸ç§é¢åæ è¿æ¥çåè®®ï¼ç¨äºä¼ è¾åºéæ¥åæ§å¶ä¿¡æ¯ã - 宿¯ä¸ä¸ªé常éè¦çåè®®ï¼å®å¯¹äºç½ç»å®å ¨å ·ææå ¶éè¦çæä¹ãå®å±äºç½ç»å±åè®®ï¼ä¸»è¦ç¨äºå¨ä¸»æºä¸è·¯ç±å¨ä¹é´ä¼ éæ§å¶ä¿¡æ¯ï¼å æ¬**æ¥åé误ã交æ¢åéæ§å¶åç¶æä¿¡æ¯**çã - å½éå°IPæ°æ®æ æ³è®¿é®ç®æ ãIPè·¯ç±å¨æ æ³æå½åçä¼ è¾éçè½¬åæ°æ®å çæ åµæ¶ï¼ä¼èªå¨åéICMPæ¶æ¯ã æ¯å¦æä»¬æ¥å¸¸ä½¿ç¨å¾æ¯è¾å¤ç**ping**ï¼å°±æ¯åºäºICMPçã ## ä»ä¹æ¯DoSãDDoSãDRDoSæ»å»ï¼ - **DOS**: (Denial of Service),ç¿»è¯è¿æ¥å°±æ¯æç»æå¡,ä¸åè½å¼èµ·DOSè¡ä¸ºçæ»å»é½è¢«ç§°ä¸ºDOSæ»å»ãæå¸¸è§çDoSæ»å»å°±æ**è®¡ç®æºç½ç»å®½å¸¦æ»å»**ã**è¿éæ§æ»å»**ã - **DDoS**: (Distributed Denial of Service),ç¿»è¯è¿æ¥æ¯åå¸å¼æç»æå¡ãæ¯æå¤äºä¸åä½ç½®çå¤ä¸ªæ»å»è åæ¶åä¸ä¸ªæå ä¸ªç®æ å卿»å»ï¼æè ä¸ä¸ªæ»å»è æ§å¶äºä½äºä¸åä½ç½®çå¤å°æºå¨å¹¶å©ç¨è¿äºæºå¨å¯¹å害è 忶宿½æ»å»ã常è§çDDosæ**SYN FloodãPing of DeathãACK FloodãUDP Flood**çã - **DRDoS**: (Distributed Reflection Denial of Service)ï¼ä¸ææ¯åå¸å¼åå°æç»æå¡ï¼è¯¥æ¹å¼é çæ¯åé大é带æè¢«å®³è IPå°åçæ°æ®å ç»æ»å»ä¸»æºï¼ç¶åæ»å»ä¸»æºå¯¹IPå°åæºååºå¤§éååºï¼ä»èå½¢ææç»æå¡æ»å»ã ## ä»ä¹æ¯CSRFæ»å»ï¼å¦ä½é¿å CSRFï¼è·¨ç«è¯·æ±ä¼ªé ï¼è±æå ¨ç§°æ¯Cross-site request forgeryï¼ï¼æ¯ä¸ç§æå¶ç¨æ·å¨å½åå·²ç»å½çWebåºç¨ç¨åºä¸æ§è¡éæ¬æçæä½çæ»å»æ¹æ³ã **æä¹è§£å³CSRFæ»å»å¢ï¼** - æ£æ¥Refereråæ®µã - æ·»å æ ¡éªtokenã ## ä»ä¹æ¯XSSæ»å»ï¼ XSSï¼è·¨ç«èæ¬æ»å»ï¼Cross-Site Scriptingï¼ãå®æçæ¯æ¶ææ»å»è å¾Web页é¢éæå ¥æ¶æhtml代ç ï¼å½ç¨æ·æµè§è¯¥é¡µä¹æ¶ï¼åµå ¥å ¶ä¸Webéé¢çhtml代ç ä¼è¢«æ§è¡ï¼ä»èè¾¾å°æ¶ææ»å»ç¨æ·çç¹æ®ç®çãXSSæ»å»ä¸è¬åä¸ç§ç±»åï¼**åå¨å ãåå°å ãDOMåXSS** ## å¦ä½è§£å³XSSæ»å»é®é¢ï¼ - 对è¾å ¥è¿è¡è¿æ»¤ï¼è¿æ»¤æ ç¾çï¼åªå è®¸åæ³å¼ã - HTMLè½¬ä¹ - 对äºé¾æ¥è·³è½¬ï¼å¦`