1
0
mirror of https://github.com/Snailclimb/JavaGuide synced 2025-06-16 18:10:13 +08:00

[docs update]完善计算机网络常见面试题总结

This commit is contained in:
Guide 2023-04-12 20:57:18 +08:00
parent f756b27cce
commit 379554561a
18 changed files with 233 additions and 164 deletions

View File

@ -5,6 +5,8 @@ tag:
- 计算机网络 - 计算机网络
--- ---
## HTTP:超文本传输协议 ## HTTP:超文本传输协议
**超文本传输协议HTTPHyperText Transfer Protocol)** 是一种用于传输超文本和多媒体内容的协议,主要是为 Web 浏览器与 Web 服务器之间的通信而设计的。当我们使用浏览器浏览网页的时候,我们网页就是通过 HTTP 请求进行加载的。 **超文本传输协议HTTPHyperText Transfer Protocol)** 是一种用于传输超文本和多媒体内容的协议,主要是为 Web 浏览器与 Web 服务器之间的通信而设计的。当我们使用浏览器浏览网页的时候,我们网页就是通过 HTTP 请求进行加载的。

View File

@ -1 +0,0 @@
<mxfile host="app.diagrams.net" modified="2021-05-12T06:01:19.060Z" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36" etag="jR8iwa2PQQCGToW6XIe6" version="14.6.2" type="device"><diagram id="lKFeN0goWJiE4unwIBdN" name="Page-1">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</diagram></mxfile>

View File

@ -1 +0,0 @@
<mxfile host="Electron" modified="2022-08-21T07:55:35.326Z" agent="5.0 (Macintosh; Intel Mac OS X 10_16_0) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/13.4.5 Chrome/83.0.4103.122 Electron/9.1.0 Safari/537.36" etag="dVHqHyJgnY6_cnJSIVuA" version="13.4.5" type="device"><diagram id="0XygYSvObaGfJKnrfW3A" name="Page-1">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</diagram></mxfile>

View File

@ -1 +0,0 @@
<mxfile host="Electron" modified="2022-08-21T07:54:21.257Z" agent="5.0 (Macintosh; Intel Mac OS X 10_16_0) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/13.4.5 Chrome/83.0.4103.122 Electron/9.1.0 Safari/537.36" etag="AWvMj75cjPLadbqvIXfr" version="13.4.5" type="device"><diagram id="ox_IyTXRnZNLjcFnBTdz" name="Page-1">5Zjvj5sgGMf/Gl7eIqKIL9Vrr7vmlm1dstcUqfVKpWfpr/31Q8Wr1C7ZZetccmlS4fsAjzyfB1QAStbHh5Julk8y5QK4TnoE6B64LoQO1pdKOTVKGAaNkJV5ahqdhVn+gxvRMeouT/nWaqikFCrf2CKTRcGZsjRalvJgN1tIYXvd0Iz3hBmjoq9+z1O1bFTiBmd9wvNs2XqGOGwsa9o2NjPZLmkqDx0JjQBKSilVU1ofEy6q4LVxafqNf2F9vbGSF+p3OmyS6WnPj/GKPecejafZyS3vUDPKnoqdmbC5WXVqI1DKXZHyahAIUHxY5orPNpRV1oNmrrWlWgtjXshCGYgQV/VciEQKWdZjoZRysmBa36pSrnjHghnh84W2ZIJuK2ZO1aoNWVVhcp0z42a74ootjaEfCBObPS8VP3YkE5gHLtdclSfdxFhdx2u6mCz1iIF2ODP3ApPKyw5v5JuG1ORZ9jr2GYUuGBpvIOP1yYx8EEcg9MAoqP4jUisQkD40PW9lk7EjXsiCX+AxEhV5Vugq09HkWo+rKOZ6QUTGsM7TtHJzNRXsZOlkg+tcYrPg/gWGCCGLoe/0GbqQ9Bl6t0Lo9xBOvn37fNMFtiCMs6sLbE58z3cGW2DIseGEfTiw3Sm7cPCt4OAenPGt2SwW7nU2KZ5jHw/FBkGbDQ6GZhP02NxPktvCSX1OUu8aHOLOER4MjgftJ5M/OBzSh/NpdlM2HGo6wTU2IQ4QHYyN70N74bhDswl7bGZP7/WJE9i7WuANDafdZjt0Pj5F7/OZ44UXdPDgdGCPzmw2eZf7mocvXgj+5csa/Yq2XASEvTiCPL5M0+mX4K7PBrhYKBNiixB+2cnWcLetgx/pBhBvjnV0WrsuZfVVf0MRH0QJGHkgTkAY1MoYxLowrpXoke7pQ3UQ0Xqdl3/oMwDxPQhhVYhiEIavrp61q/rM4wMrWm86ZM00Te//82NP0DkXMWWrrNYvnV8uBV3vJHxc/+oxFVW5LNqcv+UX4+Um5KMreU6u5Dl8e57r6vmop7Z1DszQ6Cc=</diagram></mxfile>

View File

@ -1 +0,0 @@
<mxfile host="Electron" modified="2022-08-21T07:53:03.978Z" agent="5.0 (Macintosh; Intel Mac OS X 10_16_0) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/13.4.5 Chrome/83.0.4103.122 Electron/9.1.0 Safari/537.36" etag="A8NzrPSNOTkC8mD6fGmz" version="13.4.5" type="device"><diagram id="aLP9Q2JBGdJELPBJHqNY" name="Page-1">5Zhdb5swFIZ/jS8zYQwGLkNK0k3rWjXTpvXOARNYAKfE+Wh//QyYBsdUWrUxKk25iP0e44PPc47BADTLT4uSbJMbFtEMmEZ0AugKmCaEBhZ/lfLUKJ7nNMK6TCM56Cws02cqRUOq+zSiO2UgZyzj6VYVQ1YUNOSKRsqSHdVhMctUr1uyppqwDEmmq9/TiCeN6prOWb+m6TppPUPsNZactIPlSnYJidixI6EAoFnJGG9a+WlGsyp4bVya6+avWF9urKQF/50Lgutv1vVnK48f8+eH2/0kCnaLiZzlQLK9XLC8Wf7URqBk+yKi1SQQIP+YpJwutySsrEfBXGgJzzNpjlnBJUSIq36aZTOWsbKeC0WEunEo9B0v2YZ2LDh06SoWlnVGdhUzoxrVhqzqhCxPQ+lmt6E8TKRBD0S7KlpyeupIMjALynLKyycxRFpNw2oukVlquRLa8czccmQqJx3eyJYDicyz9cvcZxSiIWm8gYypkwkc4F8BD9YNH3gzENjAh8DVoYl1c5WMGvGCFfQCj5RIlq4L0Q1FNKnQ/SqKqSiIqTTkaRRVbnpT4ZwshpoNpsbzbzNECCkMbUNnaEJXZ2gNhRBpCD/eDVpesRvSsLe8Vq5t2cZo5YUMFY2no4HtPtlFg4dCY2lovky/Dssmjs1+NhFeYRuPxQZBlQ12xmZja2ym98PWTWRTN7L62LjmCuHR2FhQfSzZo7PB+pY2uxl4U4spfqVwHG9ljLap2TZUC8ccG46jwbkf+IHzXgvHdNRNzbHGZuNqbPzF//kyYHkXbPDYbDyNze3ybj4oHApF6Th9cDzsIDLeEwdfvA38yze1w2byA36NTnfLJy8wg4cD3ru9J1SccRlihRB+3LPWMNnVwZ+KARBvT3V0Wrtoret/cXxybTAV5ygL+DPgObUyB75ozGtl+okcyKL6BtF6XZV/6LNziJuKQ5z34uqncFV/7vgQFq03EbJmmfLq93nOy8iKZj4JN+tav3R+WQqi30l4v/7Vc3LCU1aAnvOhUgADbEI26slztyfP4dvzXHTPX3lqW+dbGQp+AQ==</diagram></mxfile>

View File

@ -1 +0,0 @@
<mxfile host="Electron" modified="2022-08-21T07:54:58.241Z" agent="5.0 (Macintosh; Intel Mac OS X 10_16_0) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/13.4.5 Chrome/83.0.4103.122 Electron/9.1.0 Safari/537.36" etag="VnVPpFC8NqRYJo5lOxqo" version="13.4.5" type="device"><diagram id="FvOr2f2zJKBByRSDsAu0" name="Page-1">5ZhRb5swEMc/jR87AQaDH4GQdpuqae3D1qfJAQdYAWfEaZJ++tnGNDgwaeuSZtLUh5j/2Rzc7+5sCmBc765bsipuWUYr4FjZDsAZcBzbtpD4kcq+UzD2OyFvy0xPOgj35TPVoqXVTZnRtTGRM1bxcmWKKWsamnJDI23Ltua0JatMryuS05Fwn5JqrH4pM150auD4B/2GlnnRe7YR7iw16SfrN1kXJGPbgQQTAOOWMd6N6l1MKxm8Pi7duvkvrC8P1tKG/84CvHl+wA8fQ9u385v97P3nu2+zK32XJ1Jt9Avrh+X7PgIt2zQZlTexAYy2Rcnp/Yqk0roVzIVW8LrS5iVruIYoHgdGeUXWkoAcvwRAXqSsLlO9aP1IeVpow7KsqphVrFXeYUZosEzlJN6yRzqwoDSgi6WwjAPRvxVtOd0NJB2Ya8pqytu9mKKtjuV2S3SWuoGGtj0wd32dysWAN+zzlOg8y1/ufUAhBprGH5BxxmQSH0QzgG01iACOQYJAkIDQA4kHgjkI4YieCAA3EZmBbFhDj6KuJVKVeSMuUxFWKvRIhrMUlRFqQ11mmXQzmROHrLEm0sJIBQP/CWBCCA2YnjWG6djBGKZ7LpZwxDK+vw3FreLZycrNRuPiWQYpTSeLZxF4rve6Aj1FuUHLJITHhOy+bw4JoXMR8kaEbsP4rGwyjwaZO8UmcBYQoUuxcW2zFXr+pdmgiU7ogcgHYQISDLALMJadUHQ/0bbFIBLNMDpvYS0pmi6szMcL62KF5UETHoKXhhdMwHPl7tVtWqELwvCwsf2PzdCFtsHMn9iu3pYZniw4gQoLVIGqvLkciPqL5qoEVS2eEx61Rb/0p+Bh5ENysW7pBOZOht5yJ6sXX/cPV+h5TkhCEv6pze9uJk/0qOI6xAYh9GPDesPVWgVfHEosG612Kjq9XYxy9StPmSIRYlXCscTenTtFRiRzpYQfyBO5lt9svddF+5c+B4feMFKtXrv6Llypz8N3adN7EyHrXlOv/jePwxVZ0Coi6WOu9GPnx6UgrgcJH6k/dU9OeMmaqWO0UQCnaFL46MQ2tbEEE3n+iu8jcXn4Kla2wf8WYPIT</diagram></mxfile>

View File

@ -1 +0,0 @@
<mxfile host="Electron" modified="2023-04-01T13:53:49.741Z" agent="5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/20.3.0 Chrome/104.0.5112.114 Electron/20.1.3 Safari/537.36" etag="tIdtzWxSp10nsOGoVtAv" version="20.3.0" type="device"><diagram id="tmrIvn8UqugqhCCRZjQR" name="Page-1">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</diagram></mxfile>

View File

@ -1 +0,0 @@
<mxfile host="Electron" modified="2022-08-21T07:55:18.064Z" agent="5.0 (Macintosh; Intel Mac OS X 10_16_0) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/13.4.5 Chrome/83.0.4103.122 Electron/9.1.0 Safari/537.36" etag="eiE0OQrnPL3rbL53didq" version="13.4.5" type="device"><diagram id="eaIidcC1E0RmdSH2MZln" name="Page-1">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</diagram></mxfile>

View File

@ -1 +0,0 @@
<mxfile host="Electron" modified="2022-08-21T07:55:35.326Z" agent="5.0 (Macintosh; Intel Mac OS X 10_16_0) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/13.4.5 Chrome/83.0.4103.122 Electron/9.1.0 Safari/537.36" etag="dVHqHyJgnY6_cnJSIVuA" version="13.4.5" type="device"><diagram id="0XygYSvObaGfJKnrfW3A" name="Page-1">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</diagram></mxfile>

View File

@ -1 +0,0 @@
<mxfile host="Electron" modified="2022-08-21T07:56:00.349Z" agent="5.0 (Macintosh; Intel Mac OS X 10_16_0) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/13.4.5 Chrome/83.0.4103.122 Electron/9.1.0 Safari/537.36" etag="KmfF-1hpfjSB67Tcaiqf" version="13.4.5" type="device"><diagram id="ox_IyTXRnZNLjcFnBTdz" name="Page-1">zZbbjpswEIafxpdbAeZgLgObpNqoUttt1WvHGPDG4KxxTn36GrATCKnUVRttlYvY/4w9eL7xAcC0Oi4l3pafREY58JzsCOAj8DzXdUL91yqnXonjqBcKyTLjdBGe2U9qRMeoO5bRZuSohOCKbcciEXVNiRppWEpxGLvlgo+jbnFBJ8IzwXyq/mCZKnsVedFF/0hZUdrIbhj3lgpbZ7OSpsSZOAwkOAcwlUKovlUdU8rb5Nm89OMWv7GeP0zSWv3JgG26Ou3pMdmQF+bjZFWcPPkA+1n2mO/Mgs3HqpPNgBS7OqPtJC6AyaFkij5vMWmtB81ca6WquDHnolYGohu2fcZ5KriQ3VwwwxTlROuNkmJDB5aQILrOtaXguGmZOa2XTVnbIaJixIRpNlSR0himiTC52VOp6HEgmcQsqaiokiftYqye4/dDTJX6yEA7XJj7kSnlcsg7No7Y1FlxnvuCQjcMjTeQ8adk5j5IUjBzwByBZA5iCOYBSFyAptD0utWYzDjjtajpFR4jYc6KWneJzibVetJmkekNMTOGimVZG+ZmKVyKxRlXg+dcYxvB/QcMIYQjhoEzZei5aMrQvxfCYILwW/r5rvsrR4SSm/trjQI/cN5tf0XemA0KJmxce1AO2YT3YmPvlwGc7493hpPn3m04WbgOg/C94PjxO8LBX2FDeYTIq8PR0+sqW32JHtwJG+CFXJkUjwiFrzthDQ9Nl/yZdnDD7bHLjrXrVtH96yNTr2+WmtNUP0daZQES3Vh0yuwJ7/GyfXfYqGv5lzEjkDyC2G0bswTE8TnUiw7VPXE+kNpG0ynrl2lG/59nO8dryhNMNkWnXwe/3gq6Pyj4pPt1cyqsmKhtzd/zgvDtXW3rHE4vCBfdqHP37XWuu5eXXWcbvI/h/Bc=</diagram></mxfile>

View File

@ -1 +0,0 @@
<mxfile host="Electron" modified="2022-08-21T08:05:18.183Z" agent="5.0 (Macintosh; Intel Mac OS X 10_16_0) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/13.4.5 Chrome/83.0.4103.122 Electron/9.1.0 Safari/537.36" etag="xMeBG7_nAsRDAbbRhjry" version="13.4.5" type="device"><diagram id="6glDTgA6XYCe0tAhm3UR" name="Page-1">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</diagram></mxfile>

View File

@ -1 +0,0 @@
<mxfile host="Electron" modified="2022-08-21T08:05:32.825Z" agent="5.0 (Macintosh; Intel Mac OS X 10_16_0) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/13.4.5 Chrome/83.0.4103.122 Electron/9.1.0 Safari/537.36" etag="jsQFc-00AkauRaidBkka" version="13.4.5" type="device"><diagram id="36YX7qAPODSIrNMN_ykt" name="Page-1">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</diagram></mxfile>

View File

@ -1 +0,0 @@
<mxfile host="Electron" modified="2022-08-21T08:03:51.302Z" agent="5.0 (Macintosh; Intel Mac OS X 10_16_0) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/13.4.5 Chrome/83.0.4103.122 Electron/9.1.0 Safari/537.36" etag="Kjpej8vAA-xdlOsmFXX9" version="13.4.5" type="device"><diagram id="AL4jlyFzqR7gxqzt3J-t" name="Page-1">7Zldc6M2FIZ/DTPbizD6AASXxnHS2U532vXFNpcYhE0jIxfLid1fXwmELQHedZzE9WR2chF0JB2J8z46cLCDx8vtfZWsFr/zjDIHgWzr4FsHIQhBIP8py66xRBFpDPOqyPSgg2Fa/Eu1EWjrpsjo2hooOGeiWNnGlJclTYVlS6qKP9vDcs7sVVfJnPYM0zRhfeu3IhOL9r6C6NDxKy3mi3bpwPeanmXSjta3sl4kGX82THji4HHFuWiultsxZSp6bWCaeXdHevc7q2gpTpmw/Vp++XozAwysHz5jvLx/APAGNV6eErbRdzxmhXLYbFns2kBUfFNmVLmCDo6fF4Wg01WSqt5nKb20LcSS6e68YGzMGa/quThLaJin0r4WFX+kRk+QhnSWy56UL4tUz94HCuyntLGvnfNSaFBQPeKRinShh/eDouP0RCtBt4ZJB+me8iUV1U4O0b1E66WJhaFuPx/0j4hLtMwLQ3xfj0w0dPO974Ms8kIr8wKVcE+lKa3kHb2pSnlOg3RQpYxEMwCuSyWPYDckV6eU11OqpxEts5HKTLJV8pJ2NDHCJu8+lgGqdn+psLl+23zQY+vG7VbHtGntBgVBPb1OUkMk1ZyKH2cPmllJtK+ZIUgb+SE1KsoSUTzZqXdIIr3CH7xQmQrsnzaRxQMJOiqv+aZKqZ5lZsquI4JcFCCEI+IBD4PI5myfIVq/TZx6fmuA9lE4nyn/IzF1Jaz4qCOxTU43P5xKjo+gS466Rfiy4AQvAidlyXqt0rvJzncTuzxvNQMr1cgZ3WpX3+HCfkBdOyXQt98FMDiXCyCfVuExLnB4WS7ITy5emT0AckPzmHuWnt656QN6Hb+WW9+7LCbhT0xemT487GJgyIktPQN0djZBrmf7It3M9M5sRANsBExogeuCvC0fgn82qsSVamEPZCjPTVMwV/+nD1/a6XI3jYem59N08qf0sv2lh56sE8QQbG3dot+DzCJHmxJWzEtFrMRG1lA4VlVHIWv+ke5YFlmmlhksoA4Igi6qZnlkch7W04REiSv30H+HegiGoQt9g7XAfsTAfm2EAuiiPvxdKt+sNmq3cByag7wtIarjZl3HcSQHwHC1NfF5K8xeu4/WS3ya/8Fd53kWBYF1d2fuYzT+7eg+gD5RUs6xGifPltw2/Ejn6+ZdDhjx3BAfPV9e0D9fXkRc/5LnC/7ofP1v3H1qUNt9NNTeJ5VH2LW/OOzfFMzs7Uey1LwkXgPftia+E/rOaOxMPCceOxGpLXdOLC/uasvoc/KU3Kuv+C0as+okwoLBDDshTnzrRFBdjGInivbr/C3XqX8tcNPySgljyYyyOEkf57W9u7iBWaDbxkfYuP6z8eu9H1sMvwGKCBNZkFgsIq/PIiQDL9Hw5SDK5uH3kOZV9fCzEp78Bw==</diagram></mxfile>

View File

@ -1 +0,0 @@
<mxfile host="Electron" modified="2022-08-21T08:05:52.295Z" agent="5.0 (Macintosh; Intel Mac OS X 10_16_0) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/13.4.5 Chrome/83.0.4103.122 Electron/9.1.0 Safari/537.36" etag="MA6nRhT1k75XRlbcCSOb" version="13.4.5" type="device"><diagram id="wcNzZLoUwuyfQb5zXRwy" name="Page-1">7Zldc6M2FIZ/DTO7F2GQAAGXxrGz2/2Ytp5O272TQWAajBwsx3Z+fSWQbPFhr+OJUzeT8YXRkXSE9D4c6YBhD+ebuxIvZt9oTHIDWvHGsG8NCAGwEP8Tlm1tCQKvNqRlFstGe8MkeyLSaEnrKovJstGQUZqzbNE0RrQoSMQaNlyWdN1sltC8OeoCp6RjmEQ471r/zGI2U/NCwb7iE8nSmRoauU5dM8eqtZzKcoZjutZM9siwhyWlrL6ab4YkF6unFqbuNz5Qu7uzkhTslA5/fE6Th4eb5OvT0w/v9yT9MXY/3UgvjzhfyRkP80w4rG+ZbdVClHRVxES4AoYdrmcZI5MFjkTtmkvPbTM2z2V1kuX5kOa0rPraMSZ+EnH7kpX0nmg1KPLJNOE1EZ1nkey9Wyhr10WtfeWcFkyCAqsW94RFM9m8uyhqhqRkZKOZ5CLdETonrNzyJrLWc0wgO0logS8lXO8RCDzTk0rPNP1d2RJL7tKd+70y/EKK8wyhYEeoCSn5pF5UqCQhKOoVKvaCqWVdl1COZ5u+d3VK2R2lOhqRIh6I4MRLBS1ISxNt2fjsQ75A5fYvsWymq4p/y7ZV4XYj17QubXsFgR29TlKD4TIl7OcBhMSNONrVTBNErXyfGiXJMcsem9G3TyI5wq80E8FKIQFUsJU8eKil8pKuyojIXnqwbDvyoAkRhHbgOZZjW0GTM+i1/Nbr1PFbAbRbhfOZct4SU1fCigtbEjfJaceHU8lxITC9g26h/brguM8CJ8rxcinCu87O0cAOgpqBhSgkOdlIV/9jLoADG5LZ1rkkgGOA2f7rkoDeSXh2hLCObgIOOHdzcY76ddvAXZgM752M58cIZFrgoIIInh0yWn6be9Irg+H3gIFyJtWtsm6VIKCHlchjuXB2FGM4JbpJI0kZhYObZcXHgDcA/mJTNd13Qqn4H3/+rsbkU6iHrWs+TEa/cZebjx1YefrA+vBU6Yw8Hum5jzThPEsLwTjHjqdWdiiSkSzC+UBWzLM4FsP05lX7zMtqw61nTfqT4VfdGEeRCvfAvUCaBIKj0Wa3vWlPDkTAhN2Hp031i6VMwVmgJUkcIPRCoA2GXw6Axnsp1gwYgrfE281FgKteoBzeNWGXN4fn6O4r8qY27usETtK2fWu0XQQ2Gx7fie0e2nrOBZdDrfuG9f109bNzN7BMR9fUbUYQ3z3z3O0e9et6Lb8XPl6B7jtdFRGWC1z0RhcZl0RkKdPpB2jxWx6KMIOgvAisj3VoOu+IVY+sdj6E5+LZL6bLhRaY3lJQuswW6B9PHBV4/+UW2POaeuQa/NEaDI2RY4RDg9+1sIyNkF+MK8vgF/yI78Q3OYXMtDxpF0Qcvg55xsgzwlsjAOJiEBpBsBvnHz5O9e3PjIorpS3HU5KHOLpPK3t7cA05JMva95Sw+jVR7MTpBs8vQCW0PdNHDRR3m6GGIvB6Qnv7XccJIPLi/utmHTT3H4nt0b8=</diagram></mxfile>

View File

@ -55,26 +55,37 @@ OSI 七层模型虽然失败了,但是却提供了很多不错的理论基础
应用层协议定义了网络通信规则,对于不同的网络应用需要不同的应用层协议。在互联网中应用层协议很多,如支持 Web 应用的 HTTP 协议,支持电子邮件的 SMTP 协议等等。 应用层协议定义了网络通信规则,对于不同的网络应用需要不同的应用层协议。在互联网中应用层协议很多,如支持 Web 应用的 HTTP 协议,支持电子邮件的 SMTP 协议等等。
![应用层重要协议](https://oss.javaguide.cn/github/javaguide/cs-basics/network/application-layer-protocol.png) **应用层常见协议**
应用层常见协议总结,请看这篇文章:[应用层常见协议总结(应用层)](./application-layer-protocol.md)。 ![应用层常见协议](https://oss.javaguide.cn/github/javaguide/cs-basics/network/application-layer-protocol.png)
- **HTTPHypertext Transfer Protocol超文本传输协议** :基于 TCP 协议,是一种用于传输超文本和多媒体内容的协议,主要是为 Web 浏览器与 Web 服务器之间的通信而设计的。当我们使用浏览器浏览网页的时候,我们网页就是通过 HTTP 请求进行加载的。
- **SMTPSimple Mail Transfer Protocol简单邮件发送协议** :基于 TCP 协议,是一种用于发送电子邮件的协议。注意 ⚠SMTP 协议只负责邮件的发送,而不是接收。要从邮件服务器接收邮件,需要使用 POP3 或 IMAP 协议。
- **POP3/IMAP邮件接收协议** :基于 TCP 协议两者都是负责邮件接收的协议。IMAP 协议是比 POP3 更新的协议它在功能和性能上都更加强大。IMAP 支持邮件搜索、标记、分类、归档等高级功能,而且可以在多个设备之间同步邮件状态。几乎所有现代电子邮件客户端和服务器都支持 IMAP。
- **FTPFile Transfer Protocol文件传输协议** : 基于 TCP 协议,是一种用于在计算机之间传输文件的协议,可以屏蔽操作系统和文件存储方式。注意 ⚠FTP 是一种不安全的协议,因为它在传输过程中不会对数据进行加密。建议在传输敏感数据时使用更安全的协议,如 SFTP。
- **Telnet远程登陆协议** :基于 TCP 协议用于通过一个终端登陆到其他服务器。Telnet 协议的最大缺点之一是所有数据(包括用户名和密码)均以明文形式发送,这有潜在的安全风险。这就是为什么如今很少使用 Telnet而是使用一种称为 SSH 的非常安全的网络传输协议的主要原因。
- **SSHSecure Shell Protocol安全的网络传输协议** :基于 TCP 协议,通过加密和认证机制实现安全的访问和文件传输等业务
- **RTPReal-time Transport Protocol实时传输协议**:通常基于 UDP 协议,但也支持 TCP 协议。它提供了端到端的实时传输数据的功能,但不包含资源预留存、不保证实时传输质量,这些功能由 WebRTC 实现。
- **DNSDomain Name System域名管理系统**: 基于 UDP 协议,用于解决域名和 IP 地址的映射问题。
关于这些协议的详细介绍请看 [应用层常见协议总结(应用层)](https://javaguide.cn/cs-basics/network/application-layer-protocol.html) 这篇文章。
### 传输层Transport layer ### 传输层Transport layer
**传输层的主要任务就是负责向两台终端设备进程之间的通信提供通用的数据传输服务。** 应用进程利用该服务传送应用层报文。“通用的”是指并不针对某一个特定的网络应用,而是多种应用可以使用同一个运输层服务。 **传输层的主要任务就是负责向两台终端设备进程之间的通信提供通用的数据传输服务。** 应用进程利用该服务传送应用层报文。“通用的”是指并不针对某一个特定的网络应用,而是多种应用可以使用同一个运输层服务。
**运输层主要使用以下两种协议:** **传输层常见协议**
1. **传输控制协议 TCP**Transmisson Control Protocol--提供 **面向连接** 的,**可靠的** 数据传输服务。 ![传输层常见协议](https://oss.javaguide.cn/github/javaguide/cs-basics/network/transport-layer-protocol.png)
2. **用户数据协议 UDP**User Datagram Protocol--提供 **无连接** 的,尽最大努力的数据传输服务(不保证数据传输的可靠性)。
![传输层重要协议](https://oss.javaguide.cn/github/javaguide/cs-basics/network/transport-layer-protocol.png) - **TCPTransmisson Control Protocol传输控制协议 **:提供 **面向连接** 的,**可靠** 的数据传输服务。
- **UDPUser Datagram Protocol用户数据协议**:提供 **无连接** 的,**尽最大努力** 的数据传输服务(不保证数据传输的可靠性),简单高效。
### 网络层Network layer ### 网络层Network layer
**网络层负责为分组交换网上的不同主机提供通信服务。** 在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组和包进行传送。在 TCP/IP 体系结构中,由于网络层使用 IP 协议,因此分组也叫 IP 数据报,简称数据报。 **网络层负责为分组交换网上的不同主机提供通信服务。** 在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组和包进行传送。在 TCP/IP 体系结构中,由于网络层使用 IP 协议,因此分组也叫 IP 数据报,简称数据报。
⚠️注意 **不要把运输层的“用户数据报 UDP”和网络层的“IP 数据报”弄混**。 ⚠️ 注意 **不要把运输层的“用户数据报 UDP”和网络层的“IP 数据报”弄混**。
**网络层的还有一个任务就是选择合适的路由,使源主机运输层所传下来的分组,能通过网络层中的路由器找到目的主机。** **网络层的还有一个任务就是选择合适的路由,使源主机运输层所传下来的分组,能通过网络层中的路由器找到目的主机。**
@ -82,14 +93,17 @@ OSI 七层模型虽然失败了,但是却提供了很多不错的理论基础
互联网是由大量的异构heterogeneous网络通过路由器router相互连接起来的。互联网使用的网络层协议是无连接的网际协议Internet Prococol和许多路由选择协议因此互联网的网络层也叫做 **网际层****IP 层** 互联网是由大量的异构heterogeneous网络通过路由器router相互连接起来的。互联网使用的网络层协议是无连接的网际协议Internet Prococol和许多路由选择协议因此互联网的网络层也叫做 **网际层****IP 层**
![网络层重要协议](https://oss.javaguide.cn/github/javaguide/cs-basics/network/nerwork-layer-protocol.png)
**网络层常见协议** **网络层常见协议**
- **IP:网际协议** :网际协议 IP 是TCP/IP协议中最重要的协议之一也是网络层最重要的协议之一IP协议的作用包括寻址规约、定义数据包的格式等等是网络层信息传输的主力协议。目前IP协议主要分为两种一种是过去的IPv4另一种是较新的IPv6目前这两种协议都在使用但后者已经被提议来取代前者。 ![网络层常见协议](https://oss.javaguide.cn/github/javaguide/cs-basics/network/nerwork-layer-protocol.png)
- **ARP 协议** ARP协议全称地址解析协议Address Resolution Protocol它解决的是网络层地址和链路层地址之间的转换问题。因为一个IP数据报在物理上传输的过程中总是需要知道下一跳物理上的下一个目的地该去往何处但IP地址属于逻辑地址而MAC地址才是物理地址ARP协议解决了IP地址转MAC地址的一些问题。
- **NAT:网络地址转换协议** NAT协议Network Address Translation的应用场景如同它的名称——网络地址转换应用于内部网到外部网的地址转换过程中。具体地说在一个小的子网局域网LAN各主机使用的是同一个LAN下的IP地址但在该LAN以外在广域网WAN需要一个统一的IP地址来标识该LAN在整个Internet上的位置。 - **IPInternet Protocol网际协议** TCP/IP 协议中最重要的协议之一,主要作用是定义数据包的格式、对数据包进行路由和寻址,以便它们可以跨网络传播并到达正确的目的地。目前 IP 协议主要分为两种,一种是过去的 IPv4另一种是较新的 IPv6目前这两种协议都在使用但后者已经被提议来取代前者。
- ...... - **ARPAddress Resolution Protocol地址解析协议** ARP 协议解决的是网络层地址和链路层地址之间的转换问题。因为一个 IP 数据报在物理上传输的过程中,总是需要知道下一跳(物理上的下一个目的地)该去往何处,但 IP 地址属于逻辑地址,而 MAC 地址才是物理地址ARP 协议解决了 IP 地址转 MAC 地址的一些问题。
- **ICMPInternet Control Message Protocol互联网控制报文协议** 一种用于传输网络状态和错误消息的协议常用于网络诊断和故障排除。例如Ping 工具就使用了 ICMP 协议来测试网络连通性。
- **NATNetwork Address Translation网络地址转换协议** NAT 协议的应用场景如同它的名称——网络地址转换应用于内部网到外部网的地址转换过程中。具体地说在一个小的子网局域网LAN各主机使用的是同一个 LAN 下的 IP 地址,但在该 LAN 以外在广域网WAN需要一个统一的 IP 地址来标识该 LAN 在整个 Internet 上的位置。
- **OSPFOpen Shortest Path First开放式最短路径优先** 一种内部网关协议Interior Gateway ProtocolIGP也是广泛使用的一种动态路由协议基于链路状态算法考虑了链路的带宽、延迟等因素来选择最佳路径。
- **RIP(Routing Information Protocol路由信息协议** 一种内部网关协议Interior Gateway ProtocolIGP也是一种动态路由协议基于距离向量算法使用固定的跳数作为度量标准选择跳数最少的路径作为最佳路径。
- **BGPBorder Gateway Protocol边界网关协议** 一种用来在路由选择域之间交换网络层可达性信息Network Layer Reachability InformationNLRI的路由选择协议具有高度的灵活性和可扩展性。
### 网络接口层Network interface layer ### 网络接口层Network interface layer
@ -98,7 +112,9 @@ OSI 七层模型虽然失败了,但是却提供了很多不错的理论基础
1. 数据链路层(data link layer)通常简称为链路层( 两台主机之间的数据传输,总是在一段一段的链路上传送的)。**数据链路层的作用是将网络层交下来的 IP 数据报组装成帧,在两个相邻节点间的链路上传送帧。每一帧包括数据和必要的控制信息(如同步信息,地址信息,差错控制等)。** 1. 数据链路层(data link layer)通常简称为链路层( 两台主机之间的数据传输,总是在一段一段的链路上传送的)。**数据链路层的作用是将网络层交下来的 IP 数据报组装成帧,在两个相邻节点间的链路上传送帧。每一帧包括数据和必要的控制信息(如同步信息,地址信息,差错控制等)。**
2. **物理层的作用是实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异** 2. **物理层的作用是实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异**
![网络接口层重要协议](https://oss.javaguide.cn/github/javaguide/cs-basics/network/network-interface-layer-protocol.png) 网络接口层重要功能和协议如下图所示:
![网络接口层重要功能和协议](https://oss.javaguide.cn/github/javaguide/cs-basics/network/network-interface-layer-protocol.png)
### 总结 ### 总结
@ -112,7 +128,7 @@ OSI 七层模型虽然失败了,但是却提供了很多不错的理论基础
- DHCP 协议(动态主机配置) - DHCP 协议(动态主机配置)
- DNS 系统原理(域名系统) - DNS 系统原理(域名系统)
- FTP 协议(文件传输协议) - FTP 协议(文件传输协议)
- Telnet协议远程登陆协议 - Telnet 协议(远程登陆协议)
- 电子邮件协议等SMTP、POP3、IMAP - 电子邮件协议等SMTP、POP3、IMAP
- ...... - ......

View File

@ -19,99 +19,41 @@ tag:
### 应用层有哪些常见的协议? ### 应用层有哪些常见的协议?
- **HTTP超文本传输协议** :基于 TCP协议是一种用于传输超文本和多媒体内容的协议主要是为 Web 浏览器与 Web 服务器之间的通信而设计的。当我们使用浏览器浏览网页的时候,我们网页就是通过 HTTP 请求进行加载的。 ![应用层常见协议](https://oss.javaguide.cn/github/javaguide/cs-basics/network/application-layer-protocol.png)
- **SMTP简单邮件传输(发送)协议)** :基于 TCP 协议是一种用于发送电子邮件的协议。注意⚠SMTP协议只负责邮件的发送而不是接收。要从邮件服务器接收邮件需要使用POP3或IMAP协议。
- **POP3/IMAP邮件接收的协议** :基于 TCP 协议两者都是负责邮件接收的协议。IMAP协议是比POP3更新的协议它在功能和性能上都更加强大。IMAP支持邮件搜索、标记、分类、归档等高级功能而且可以在多个设备之间同步邮件状态。几乎所有现代电子邮件客户端和服务器都支持 IMAP。
- **FTP文件传输协议** : 基于 TCP 协议是一种用于在计算机之间传输文件的协议可以屏蔽操作系统和文件存储方式。注意⚠FTP 是一种不安全的协议因为它在传输过程中不会对数据进行加密。建议在传输敏感数据时使用更安全的协议如SFTP。
- **Telnet远程登陆协议** :基于 TCP 协议用于通过一个终端登陆到其他服务器。Telnet 协议的最大缺点之一是所有数据包括用户名和密码均以明文形式发送这有潜在的安全风险。这就是为什么如今很少使用Telnet而是使用一种称为SSH的非常安全的网络传输协议的主要原因。
- **SSH安全的网络传输协议** :基于 TCP 协议,通过加密和认证机制实现安全的访问和文件传输等业务
- **RTP实时传输协议**:通常基于 UDP 协议,但也支持 TCP 协议。它提供了端到端的实时传输数据的功能,但不包含资源预留存、不保证实时传输质量,这些功能由 WebRTC 实现。
- **DNS域名管理系统**: 基于 UDP 协议,用于解决域名和 IP 地址的映射问题。
关于这些协议的详细介绍请看 [应用层常见协议总结(应用层)](./application-layer-protocol.md) 这篇文章。 - **HTTPHypertext Transfer Protocol超文本传输协议** :基于 TCP 协议,是一种用于传输超文本和多媒体内容的协议,主要是为 Web 浏览器与 Web 服务器之间的通信而设计的。当我们使用浏览器浏览网页的时候,我们网页就是通过 HTTP 请求进行加载的。
- **SMTPSimple Mail Transfer Protocol简单邮件发送协议** :基于 TCP 协议,是一种用于发送电子邮件的协议。注意 ⚠SMTP 协议只负责邮件的发送,而不是接收。要从邮件服务器接收邮件,需要使用 POP3 或 IMAP 协议。
- **POP3/IMAP邮件接收协议** :基于 TCP 协议两者都是负责邮件接收的协议。IMAP 协议是比 POP3 更新的协议它在功能和性能上都更加强大。IMAP 支持邮件搜索、标记、分类、归档等高级功能,而且可以在多个设备之间同步邮件状态。几乎所有现代电子邮件客户端和服务器都支持 IMAP。
- **FTPFile Transfer Protocol文件传输协议** : 基于 TCP 协议,是一种用于在计算机之间传输文件的协议,可以屏蔽操作系统和文件存储方式。注意 ⚠FTP 是一种不安全的协议,因为它在传输过程中不会对数据进行加密。建议在传输敏感数据时使用更安全的协议,如 SFTP。
- **Telnet远程登陆协议** :基于 TCP 协议用于通过一个终端登陆到其他服务器。Telnet 协议的最大缺点之一是所有数据(包括用户名和密码)均以明文形式发送,这有潜在的安全风险。这就是为什么如今很少使用 Telnet而是使用一种称为 SSH 的非常安全的网络传输协议的主要原因。
- **SSHSecure Shell Protocol安全的网络传输协议** :基于 TCP 协议,通过加密和认证机制实现安全的访问和文件传输等业务
- **RTPReal-time Transport Protocol实时传输协议**:通常基于 UDP 协议,但也支持 TCP 协议。它提供了端到端的实时传输数据的功能,但不包含资源预留存、不保证实时传输质量,这些功能由 WebRTC 实现。
- **DNSDomain Name System域名管理系统**: 基于 UDP 协议,用于解决域名和 IP 地址的映射问题。
## TCP 与 UDP 关于这些协议的详细介绍请看 [应用层常见协议总结(应用层)](./application-layer-protocol.md) 这篇文章。
### 传输层有哪些常见的协议?
### TCP 与 UDP 的区别(重要) ![传输层常见协议](https://oss.javaguide.cn/github/javaguide/cs-basics/network/transport-layer-protocol.png)
1. **是否面向连接** UDP 在传送数据之前不需要先建立连接。而 TCP 提供面向连接的服务,在传送数据之前必须先建立连接,数据传送结束后要释放连接。 - **TCPTransmisson Control Protocol传输控制协议 **:提供 **面向连接** 的,**可靠** 的数据传输服务。
2. **是否是可靠传输**:远地主机在收到 UDP 报文后不需要给出任何确认并且不保证数据不丢失不保证是否顺序到达。TCP 提供可靠的传输服务TCP 在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制。通过 TCP 连接传输的数据,无差错、不丢失、不重复、并且按序到达。 - **UDPUser Datagram Protocol用户数据协议**:提供 **无连接** 的,**尽最大努力** 的数据传输服务(不保证数据传输的可靠性),简单高效。
3. **是否有状态** 这个和上面的“是否可靠传输”相对应。TCP 传输是有状态的,这个有状态说的是 TCP 会去记录自己发送消息的状态比如消息是否发送了、是否被接收了等等。为此 TCP 需要维持复杂的连接状态表。而 UDP 是无状态服务,简单来说就是不管发出去之后的事情了(**这很渣男!**)。
4. **传输效率** :由于使用 TCP 进行传输的时候多了连接、确认、重传等机制,所以 TCP 的传输效率要比 UDP 低很多。
5. **传输形式** TCP 是面向字节流的UDP 是面向报文的。
6. **首部开销** TCP 首部开销20 60 字节)比 UDP 首部开销8 字节)要大。
7. **是否提供广播或多播服务** TCP 只支持点对点通信UDP 支持一对一、一对多、多对一、多对多;
8. ......
### 网络层有哪些常见的协议?
我把上面总结的内容通过表格形式展示出来了!确定不点个赞嘛? ![网络层常见协议](https://oss.javaguide.cn/github/javaguide/cs-basics/network/nerwork-layer-protocol.png)
| | TCP | UDP | - **IPInternet Protocol网际协议** TCP/IP 协议中最重要的协议之一,属于网络层的协议,主要作用是定义数据包的格式、对数据包进行路由和寻址,以便它们可以跨网络传播并到达正确的目的地。目前 IP 协议主要分为两种,一种是过去的 IPv4另一种是较新的 IPv6目前这两种协议都在使用但后者已经被提议来取代前者。
| ---------------------- | -------------- | ---------- | - **ARPAddress Resolution Protocol地址解析协议** ARP 协议解决的是网络层地址和链路层地址之间的转换问题。因为一个 IP 数据报在物理上传输的过程中,总是需要知道下一跳(物理上的下一个目的地)该去往何处,但 IP 地址属于逻辑地址,而 MAC 地址才是物理地址ARP 协议解决了 IP 地址转 MAC 地址的一些问题。
| 是否面向连接 | 是 | 否 | - **ICMPInternet Control Message Protocol互联网控制报文协议** 一种用于传输网络状态和错误消息的协议常用于网络诊断和故障排除。例如Ping 工具就使用了 ICMP 协议来测试网络连通性。
| 是否可靠 | 是 | 否 | - **NATNetwork Address Translation网络地址转换协议** NAT 协议的应用场景如同它的名称——网络地址转换应用于内部网到外部网的地址转换过程中。具体地说在一个小的子网局域网LAN各主机使用的是同一个 LAN 下的 IP 地址,但在该 LAN 以外在广域网WAN需要一个统一的 IP 地址来标识该 LAN 在整个 Internet 上的位置。
| 是否有状态 | 是 | 否 | - **OSPFOpen Shortest Path First开放式最短路径优先** 一种内部网关协议Interior Gateway ProtocolIGP也是广泛使用的一种动态路由协议基于链路状态算法考虑了链路的带宽、延迟等因素来选择最佳路径。
| 传输效率 | 较慢 | 较快 | - **RIP(Routing Information Protocol路由信息协议** 一种内部网关协议Interior Gateway ProtocolIGP也是一种动态路由协议基于距离向量算法使用固定的跳数作为度量标准选择跳数最少的路径作为最佳路径。
| 传输形式 | 字节流 | 数据报文段 | - **BGPBorder Gateway Protocol边界网关协议** 一种用来在路由选择域之间交换网络层可达性信息Network Layer Reachability InformationNLRI的路由选择协议具有高度的灵活性和可扩展性。
| 首部开销 | 20 60 bytes | 8 bytes |
| 是否提供广播或多播服务 | 否 | 是 |
### 什么时候选择 TCP,什么时候选 UDP?
- **UDP 一般用于即时通信**,比如: 语音、 视频 、直播等等。这些场景对传输数据的准确性要求不是特别高,比如你看视频即使少个一两帧,实际给人的感觉区别也不大。
- **TCP 用于对传输准确性要求特别高的场景**,比如文件传输、发送和接收邮件、远程登录等等。
### HTTP 基于 TCP 还是 UDP
~~**HTTP 协议是基于 TCP 协议的**,所以发送 HTTP 请求之前首先要建立 TCP 连接也就是要经历 3 次握手。~~
🐛 修正(参见 [issue#1915](https://github.com/Snailclimb/JavaGuide/issues/1915)HTTP 3.0 之前是基于 TCP 协议的,而 HTTP3.0 将弃用 TCP改用 **基于 UDP 的 QUIC 协议** 。此变化主要为了解决 HTTP/2 中存在的队头阻塞问题。由于 HTTP/2 在单个 TCP 连接上使用了多路复用,受到 TCP 拥塞控制的影响,少量的丢包就可能导致整个 TCP 连接上的所有流被阻塞。
相关证明可以参考下面这两个链接:
- https://zh.wikipedia.org/zh/HTTP/3
- https://datatracker.ietf.org/doc/rfc9114/
### 使用 TCP 的协议有哪些?使用 UDP 的协议有哪些?
**运行于 TCP 协议之上的协议**
1. **HTTP 协议** 超文本传输协议HTTPHyperText Transfer Protocol)主要是为 Web 浏览器与 Web 服务器之间的通信而设计的。当我们使用浏览器浏览网页的时候,我们网页就是通过 HTTP 请求进行加载的。
2. **HTTPS 协议** :更安全的超文本传输协议(HTTPS,Hypertext Transfer Protocol Secure),身披 SSL 外衣的 HTTP 协议
3. **FTP 协议**:文件传输协议 FTPFile Transfer Protocol提供文件传输服务**基于 TCP** 实现可靠的传输。使用 FTP 传输文件的好处是可以屏蔽操作系统和文件存储方式。
4. **SMTP 协议**简单邮件传输协议SMTPSimple Mail Transfer Protocol的缩写**基于 TCP 协议**,用来发送电子邮件。注意 ⚠️:接受邮件的协议不是 SMTP 而是 POP3 协议。
5. **POP3/IMAP 协议** POP3 和 IMAP 两者都是负责邮件接收的协议。
6. **Telnet 协议**:远程登陆协议,通过一个终端登陆到其他服务器。被一种称为 SSH 的非常安全的协议所取代。
7. **SSH 协议** : SSH Secure Shell是目前较可靠专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH 建立在可靠的传输协议 TCP 之上。
8. ......
**运行于 UDP 协议之上的协议**
1. **DHCP 协议**:动态主机配置协议,动态配置 IP 地址
2. **DNS** **域名系统DNSDomain Name System将人类可读的域名 (例如www.baidu.com) 转换为机器可读的 IP 地址 (例如220.181.38.148)。** 我们可以将其理解为专为互联网设计的电话薄。实际上 DNS 同时支持 UDP 和 TCP 协议。
### TCP 三次握手和四次挥手(非常重要)
**相关面试题**
- 为什么要三次握手?
- 第 2 次握手传回了ACK为什么还要传回SYN
- 为什么要四次挥手?
- 为什么不能把服务器发送的 ACK 和 FIN 合并起来,变成三次挥手?
- 如果第二次挥手时服务器的 ACK 没有送达客户端,会怎样?
- 为什么第四次挥手客户端需要等待 2\*MSL报文段最长寿命时间后才进入 CLOSED 状态?
**参考答案** [TCP 三次握手和四次挥手(传输层)](./tcp-connection-and-disconnection.md) 。
### TCP 如何保证传输的可靠性?(重要)
[TCP 传输可靠性保障(传输层)](./tcp-reliability-guarantee.md)
## HTTP ## HTTP
### 从输入URL 到页面展示到底发生了什么?(非常重要) ### 从输入 URL 到页面展示到底发生了什么?(非常重要)
> 类似的问题:打开一个网页,整个过程会使用哪些协议? > 类似的问题:打开一个网页,整个过程会使用哪些协议?
@ -132,12 +74,12 @@ tag:
具体可以参考下面这两篇文章: 具体可以参考下面这两篇文章:
- [从输入URL到页面加载发生了什么](https://segmentfault.com/a/1190000006879700) - [从输入 URL 到页面加载发生了什么?](https://segmentfault.com/a/1190000006879700)
- [浏览器从输入网址到页面展示的过程](https://cloud.tencent.com/developer/article/1879758) - [浏览器从输入网址到页面展示的过程](https://cloud.tencent.com/developer/article/1879758)
### HTTP 状态码有哪些? ### HTTP 状态码有哪些?
HTTP 状态码用于描述 HTTP 请求的结果比如2xx 就代表请求被成功处理。 HTTP 状态码用于描述 HTTP 请求的结果,比如 2xx 就代表请求被成功处理。
![常见 HTTP 状态码](https://oss.javaguide.cn/github/javaguide/cs-basics/network/http-status-code.png) ![常见 HTTP 状态码](https://oss.javaguide.cn/github/javaguide/cs-basics/network/http-status-code.png)
@ -150,29 +92,29 @@ HTTP 状态码用于描述 HTTP 请求的结果比如2xx 就代表请求被
| Accept | 能够接受的回应内容类型Content-Types。 | Accept: text/plain | | Accept | 能够接受的回应内容类型Content-Types。 | Accept: text/plain |
| Accept-Charset | 能够接受的字符集 | Accept-Charset: utf-8 | | Accept-Charset | 能够接受的字符集 | Accept-Charset: utf-8 |
| Accept-Datetime | 能够接受的按照时间来表示的版本 | Accept-Datetime: Thu, 31 May 2007 20:35:00 GMT | | Accept-Datetime | 能够接受的按照时间来表示的版本 | Accept-Datetime: Thu, 31 May 2007 20:35:00 GMT |
| Accept-Encoding | 能够接受的编码方式列表。参考HTTP压缩。 | Accept-Encoding: gzip, deflate | | Accept-Encoding | 能够接受的编码方式列表。参考 HTTP 压缩。 | Accept-Encoding: gzip, deflate |
| Accept-Language | 能够接受的回应内容的自然语言列表。 | Accept-Language: en-US | | Accept-Language | 能够接受的回应内容的自然语言列表。 | Accept-Language: en-US |
| Authorization | 用于超文本传输协议的认证的认证信息 | Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== | | Authorization | 用于超文本传输协议的认证的认证信息 | Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== |
| Cache-Control | 用来指定在这次的请求/响应链中的所有缓存机制 都必须 遵守的指令 | Cache-Control: no-cache | | Cache-Control | 用来指定在这次的请求/响应链中的所有缓存机制 都必须 遵守的指令 | Cache-Control: no-cache |
| Connection | 该浏览器想要优先使用的连接类型 | Connection: keep-alive Connection: Upgrade | | Connection | 该浏览器想要优先使用的连接类型 | Connection: keep-alive Connection: Upgrade |
| Content-Length | 以 八位字节数组 8位的字节表示的请求体的长度 | Content-Length: 348 | | Content-Length | 以 八位字节数组 8 位的字节)表示的请求体的长度 | Content-Length: 348 |
| Content-MD5 | 请求体的内容的二进制 MD5 散列值,以 Base64 编码的结果 | Content-MD5: Q2hlY2sgSW50ZWdyaXR5IQ== | | Content-MD5 | 请求体的内容的二进制 MD5 散列值,以 Base64 编码的结果 | Content-MD5: Q2hlY2sgSW50ZWdyaXR5IQ== |
| Content-Type | 请求体的 多媒体类型 用于POST和PUT请求中 | Content-Type: application/x-www-form-urlencoded | | Content-Type | 请求体的 多媒体类型 (用于 POST PUT 请求中) | Content-Type: application/x-www-form-urlencoded |
| Cookie | 之前由服务器通过 Set- Cookie (下文详述)发送的一个 超文本传输协议Cookie | Cookie: $Version=1; Skin=new; | | Cookie | 之前由服务器通过 Set- Cookie (下文详述)发送的一个 超文本传输协议 Cookie | Cookie: \$Version=1; Skin=new; |
| Date | 发送该消息的日期和时间(按照 RFC 7231 中定义的"超文本传输协议日期"格式来发送) | Date: Tue, 15 Nov 1994 08:12:31 GMT | | Date | 发送该消息的日期和时间(按照 RFC 7231 中定义的"超文本传输协议日期"格式来发送) | Date: Tue, 15 Nov 1994 08:12:31 GMT |
| Expect | 表明客户端要求服务器做出特定的行为 | Expect: 100-continue | | Expect | 表明客户端要求服务器做出特定的行为 | Expect: 100-continue |
| From | 发起此请求的用户的邮件地址 | From: [user@example.com](mailto:user@example.com) | | From | 发起此请求的用户的邮件地址 | From: [user@example.com](mailto:user@example.com) |
| Host | 服务器的域名(用于虚拟主机 ),以及服务器所监听的传输控制协议端口号。如果所请求的端口是对应的服务的标准端口,则端口号可被省略。 | Host: en.wikipedia.org:80 | | Host | 服务器的域名(用于虚拟主机 ),以及服务器所监听的传输控制协议端口号。如果所请求的端口是对应的服务的标准端口,则端口号可被省略。 | Host: en.wikipedia.org:80 |
| If-Match | 仅当客户端提供的实体与服务器上对应的实体相匹配时,才进行对应的操作。主要作用时,用作像 PUT 这样的方法中,仅当从用户上次更新某个资源以来,该资源未被修改的情况下,才更新该资源。 | If-Match: “737060cd8c284d8af7ad3082f209582d” | | If-Match | 仅当客户端提供的实体与服务器上对应的实体相匹配时,才进行对应的操作。主要作用时,用作像 PUT 这样的方法中,仅当从用户上次更新某个资源以来,该资源未被修改的情况下,才更新该资源。 | If-Match: “737060cd8c284d8af7ad3082f209582d” |
| If-Modified-Since | 允许在对应的内容未被修改的情况下返回304未修改 304 Not Modified | If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT | | If-Modified-Since | 允许在对应的内容未被修改的情况下返回 304 未修改( 304 Not Modified | If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT |
| If-None-Match | 允许在对应的内容未被修改的情况下返回304未修改 304 Not Modified | If-None-Match: “737060cd8c284d8af7ad3082f209582d” | | If-None-Match | 允许在对应的内容未被修改的情况下返回 304 未修改( 304 Not Modified | If-None-Match: “737060cd8c284d8af7ad3082f209582d” |
| If-Range | 如果该实体未被修改过,则向我发送我所缺少的那一个或多个部分;否则,发送整个新的实体 | If-Range: “737060cd8c284d8af7ad3082f209582d” | | If-Range | 如果该实体未被修改过,则向我发送我所缺少的那一个或多个部分;否则,发送整个新的实体 | If-Range: “737060cd8c284d8af7ad3082f209582d” |
| If-Unmodified-Since | 仅当该实体自某个特定时间已来未被修改的情况下,才发送回应。 | If-Unmodified-Since: Sat, 29 Oct 1994 19:43:31 GMT | | If-Unmodified-Since | 仅当该实体自某个特定时间已来未被修改的情况下,才发送回应。 | If-Unmodified-Since: Sat, 29 Oct 1994 19:43:31 GMT |
| Max-Forwards | 限制该消息可被代理及网关转发的次数。 | Max-Forwards: 10 | | Max-Forwards | 限制该消息可被代理及网关转发的次数。 | Max-Forwards: 10 |
| Origin | 发起一个针对 跨来源资源共享 的请求。 | Origin: [http://www.example-social-network.com](http://www.example-social-network.com/) | | Origin | 发起一个针对 跨来源资源共享 的请求。 | Origin: [http://www.example-social-network.com](http://www.example-social-network.com/) |
| Pragma | 与具体的实现相关,这些字段可能在请求/回应链中的任何时候产生多种效果。 | Pragma: no-cache | | Pragma | 与具体的实现相关,这些字段可能在请求/回应链中的任何时候产生多种效果。 | Pragma: no-cache |
| Proxy-Authorization | 用来向代理进行认证的认证信息。 | Proxy-Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== | | Proxy-Authorization | 用来向代理进行认证的认证信息。 | Proxy-Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== |
| Range | 仅请求某个实体的一部分。字节偏移以0开始。参见字节服务。 | Range: bytes=500-999 | | Range | 仅请求某个实体的一部分。字节偏移以 0 开始。参见字节服务。 | Range: bytes=500-999 |
| Referer | 表示浏览器所访问的前一个页面,正是那个页面上的某个链接将浏览器带到了当前所请求的这个页面。 | Referer: [http://en.wikipedia.org/wiki/Main_Page](https://en.wikipedia.org/wiki/Main_Page) | | Referer | 表示浏览器所访问的前一个页面,正是那个页面上的某个链接将浏览器带到了当前所请求的这个页面。 | Referer: [http://en.wikipedia.org/wiki/Main_Page](https://en.wikipedia.org/wiki/Main_Page) |
| TE | 浏览器预期接受的传输编码方式:可使用回应协议头 Transfer-Encoding 字段中的值; | TE: trailers, deflate | | TE | 浏览器预期接受的传输编码方式:可使用回应协议头 Transfer-Encoding 字段中的值; | TE: trailers, deflate |
| Upgrade | 要求服务器升级到另一个协议。 | Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11 | | Upgrade | 要求服务器升级到另一个协议。 | Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11 |
@ -187,39 +129,40 @@ HTTP 状态码用于描述 HTTP 请求的结果比如2xx 就代表请求被
- **端口号** HTTP 默认是 80HTTPS 默认是 443。 - **端口号** HTTP 默认是 80HTTPS 默认是 443。
- **URL 前缀** HTTP 的 URL 前缀是 `http://`HTTPS 的 URL 前缀是 `https://` - **URL 前缀** HTTP 的 URL 前缀是 `http://`HTTPS 的 URL 前缀是 `https://`
- **安全性和资源消耗** HTTP 协议运行在 TCP 之上所有传输的内容都是明文客户端和服务器端都无法验证对方的身份。HTTPS 是运行在 SSL/TLS 之上的 HTTP 协议SSL/TLS 运行在 TCP 之上。所有传输的内容都经过加密加密采用对称加密但对称加密的密钥用服务器方的证书进行了非对称加密。所以说HTTP 安全性没有 HTTPS 高,但是 HTTPS 比 HTTP 耗费更多服务器资源。 - **安全性和资源消耗** HTTP 协议运行在 TCP 之上所有传输的内容都是明文客户端和服务器端都无法验证对方的身份。HTTPS 是运行在 SSL/TLS 之上的 HTTP 协议SSL/TLS 运行在 TCP 之上。所有传输的内容都经过加密加密采用对称加密但对称加密的密钥用服务器方的证书进行了非对称加密。所以说HTTP 安全性没有 HTTPS 高,但是 HTTPS 比 HTTP 耗费更多服务器资源。
- **SEO搜索引擎优化** 搜索引擎通常会更青睐使用HTTPS协议的网站因为HTTPS能够提供更高的安全性和用户隐私保护。使用HTTPS协议的网站在搜索结果中可能会被优先显示从而对SEO产生影响。 - **SEO搜索引擎优化** :搜索引擎通常会更青睐使用 HTTPS 协议的网站,因为 HTTPS 能够提供更高的安全性和用户隐私保护。使用 HTTPS 协议的网站在搜索结果中可能会被优先显示,从而对 SEO 产生影响。
关于 HTTP 和 HTTPS 更详细的对比总结,可以看我写的这篇文章:[HTTP vs HTTPS应用层](./http&https.md) 。 关于 HTTP 和 HTTPS 更详细的对比总结,可以看我写的这篇文章:[HTTP vs HTTPS应用层](./http&https.md) 。
### HTTP 1.0 和 HTTP 1.1 有什么区别? ### HTTP/1.0 和 HTTP/1.1 有什么区别?
![HTTP 1.0 和 HTTP 1.1 对比](https://oss.javaguide.cn/github/javaguide/cs-basics/network/http1.0-vs-http1.1.png) ![HTTP/1.0 和 HTTP/1.1 对比](https://oss.javaguide.cn/github/javaguide/cs-basics/network/http1.0-vs-http1.1.png)
- **连接方式** : HTTP 1.0 为短连接HTTP 1.1 支持长连接。 - **连接方式** : HTTP/1.0 为短连接HTTP/1.1 支持长连接。
- **状态响应码** : HTTP/1.1中新加入了大量的状态码光是错误响应状态码就新增了24种。比如说`100 (Continue)`——在请求大资源前的预热请求,`206 (Partial Content)`——范围请求的标识码,`409 (Conflict)`——请求与当前资源的规定冲突,`410 (Gone)`——资源已被永久转移,而且没有任何已知的转发地址。 - **状态响应码** : HTTP/1.1 中新加入了大量的状态码,光是错误响应状态码就新增了 24 种。比如说,`100 (Continue)`——在请求大资源前的预热请求,`206 (Partial Content)`——范围请求的标识码,`409 (Conflict)`——请求与当前资源的规定冲突,`410 (Gone)`——资源已被永久转移,而且没有任何已知的转发地址。
- **缓存机制** : 在 HTTP1.0 中主要使用 Header 里的 If-Modified-Since,Expires 来做为缓存判断的标准HTTP1.1 则引入了更多的缓存控制策略例如 Entity tagIf-Unmodified-Since, If-Match, If-None-Match 等更多可供选择的缓存头来控制缓存策略。 - **缓存机制** : 在 HTTP/1.0 中主要使用 Header 里的 If-Modified-Since,Expires 来做为缓存判断的标准HTTP/1.1 则引入了更多的缓存控制策略例如 Entity tagIf-Unmodified-Since, If-Match, If-None-Match 等更多可供选择的缓存头来控制缓存策略。
- **带宽** HTTP1.0 中存在一些浪费带宽的现象例如客户端只是需要某个对象的一部分而服务器却将整个对象送过来了并且不支持断点续传功能HTTP1.1 则在请求头引入了 range 头域,它允许只请求资源的某个部分,即返回码是 206Partial Content这样就方便了开发者自由的选择以便于充分利用带宽和连接。 - **带宽** HTTP/1.0 中存在一些浪费带宽的现象例如客户端只是需要某个对象的一部分而服务器却将整个对象送过来了并且不支持断点续传功能HTTP/1.1 则在请求头引入了 range 头域,它允许只请求资源的某个部分,即返回码是 206Partial Content这样就方便了开发者自由的选择以便于充分利用带宽和连接。
- **Host 头Host Header处理** :HTTP 1.1 引入了 Host 头字段,允许在同一 IP 地址上托管多个域名,从而支持虚拟主机的功能。而 HTTP 1.0 没有 Host 头字段,无法实现虚拟主机。 - **Host 头Host Header处理** :HTTP/1.1 引入了 Host 头字段,允许在同一 IP 地址上托管多个域名,从而支持虚拟主机的功能。而 HTTP/1.0 没有 Host 头字段,无法实现虚拟主机。
关于 HTTP 1.0 和 HTTP 1.1 更详细的对比总结,可以看我写的这篇文章:[HTTP 1.0 vs HTTP 1.1(应用层)](./http1.0&http1.1.md) 。 关于 HTTP/1.0 和 HTTP/1.1 更详细的对比总结,可以看我写的这篇文章:[HTTP/1.0 vs HTTP/1.1(应用层)](./http1.0&HTTP/1.1.md) 。
### HTTP 1.1 和 HTTP 2.0 有什么区别? ### HTTP/1.1 和 HTTP/2.0 有什么区别?
![HTTP 1.1 和 HTTP 2.0 对比](https://oss.javaguide.cn/github/javaguide/cs-basics/network/http1.1-vs-http2.0.png) ![HTTP/1.0 和 HTTP/1.1 对比](https://oss.javaguide.cn/github/javaguide/cs-basics/network/http1.1-vs-http2.0.png)
- **IO多路复用Multiplexing** HTTP2.0 在同一连接上可以同时传输多个请求和响应(可以看作是 HTTP 1.1 中长链接的升级版本。HTTP1.1 则使用串行方式,每个请求和响应都需要独立的连接。这使得 HTTP2 在处理多个请求时更加高效,减少了网络延迟和提高了性能。 - **IO 多路复用Multiplexing** HTTP/2.0 在同一连接上可以同时传输多个请求和响应(可以看作是 HTTP/1.1 中长链接的升级版本。HTTP/1.1 则使用串行方式,每个请求和响应都需要独立的连接。这使得 HTTP/2.0 在处理多个请求时更加高效,减少了网络延迟和提高了性能。
- **二进制帧Binary Frames** HTTP2 使用二进制帧进行数据传输,而 HTTP1.1 则使用文本格式的报文。二进制帧更加紧凑和高效,减少了传输的数据量和带宽消耗。 - **二进制帧Binary Frames** HTTP/2.0 使用二进制帧进行数据传输,而 HTTP/1.1 则使用文本格式的报文。二进制帧更加紧凑和高效,减少了传输的数据量和带宽消耗。
- **头部压缩Header Compression** HTTP 1.1支持`Body`压缩,`Header`不支持压缩。HTTP2.0 支持对`Header`压缩,减少了网络开销。 - **头部压缩Header Compression** HTTP/1.1 支持`Body`压缩,`Header`不支持压缩。HTTP/2.0 支持对`Header`压缩,减少了网络开销。
- **服务器推送Server Push**HTTP 2.0 支持服务器推送,可以在客户端请求一个资源时,将其他相关资源一并推送给客户端,从而减少了客户端的请求次数和延迟。而 HTTP1.1 需要客户端自己发送请求来获取相关资源。 - **服务器推送Server Push**HTTP/2.0 支持服务器推送,可以在客户端请求一个资源时,将其他相关资源一并推送给客户端,从而减少了客户端的请求次数和延迟。而 HTTP/1.1 需要客户端自己发送请求来获取相关资源。
### HTTP 2.0 和 HTTP 3.0 有什么区别? ### HTTP/2.0 和 HTTP/3.0 有什么区别?
![HTTP 2.0 和 HTTP 3.0 对比](https://oss.javaguide.cn/github/javaguide/cs-basics/network/http2.0-vs-http3.0.png) ![HTTP/2.0 和 HTTP/3.0 对比](https://oss.javaguide.cn/github/javaguide/cs-basics/network/http2.0-vs-http3.0.png)
- **传输协议** HTTP 2.0 是基于 TCP 协议实现的HTTP 3.0是基于 UDP协议实现的。 - **传输协议** HTTP/2.0 是基于 TCP 协议实现的HTTP/3.0 新增了 QUICQuick UDP Internet Connections 协议来实现可靠的传输,提供与 TLS/SSL 相当的安全性,具有较低的连接和传输延迟。你可以将 QUIC 看作是 UDP 的升级版本在其基础上新增了很多功能比如加密、重传等等。HTTP/3.0 之前名为 HTTP-over-QUIC从这个名字中我们也可以发现HTTP/3 最大的改造就是使用了 QUIC。
- **传输方式** HTTP3.0 新增了 QUICQuick UDP Internet Connections 协议来实现可靠的传输提供与TLS/SSL相当的安全性具有较低的连接和传输延迟。 - **连接建立** HTTP/2.0 需要经过经典的 TCP 三次握手过程(一般是 3 个 RTT。由于 QUIC 协议的特性HTTP/3.0 可以避免 TCP 三次握手的延迟允许在第一次连接时发送数据0 个 RTT ,零往返时间)。
- **错误恢复** HTTP3 具有更好的错误恢复机制,当出现丢包、延迟等网络问题时,可以更快地进行恢复和重传。而 HTTP2 则需要依赖于 TCP 的错误恢复机制。 - **队头阻塞** HTTP/2.0 多请求复用一个 TCP 连接,一旦发生丢包,就会阻塞住所有的 HTTP 请求。由于 QUIC 协议的特性HTTP/3.0 在一定程度上解决了队头阻塞Head-of-Line blocking, 简写HOL blocking问题一个连接建立多个不同的数据流这些数据流之间独立互不影响某个数据流发生丢包了其数据流不受影响本质上是多路复用+轮询)。
- **握手过程** HTTP3 的握手过程相较于 HTTP2 更加简洁,减少了握手次数和握手延迟,从而提高了连接建立速度和性能。 - **错误恢复** HTTP/3.0 具有更好的错误恢复机制,当出现丢包、延迟等网络问题时,可以更快地进行恢复和重传。而 HTTP/2.0 则需要依赖于 TCP 的错误恢复机制。
- **安全性** HTTP/2.0 和 HTTP/3.0 在安全性上都有较高的要求支持加密通信但在实现上有所不同。HTTP/2.0 使用 TLS 协议进行加密,而 HTTP/3.0 基于 QUIC 协议,包含了内置的加密和身份验证机制,可以提供更强的安全性。
### HTTP 是不保存状态的协议, 如何保存用户状态? ### HTTP 是不保存状态的协议, 如何保存用户状态?
@ -233,8 +176,8 @@ HTTP 是一种不保存状态即无状态stateless协议。也就是说
### URI 和 URL 的区别是什么? ### URI 和 URL 的区别是什么?
* URI(Uniform Resource Identifier) 是统一资源标志符,可以唯一标识一个资源。 - URI(Uniform Resource Identifier) 是统一资源标志符,可以唯一标识一个资源。
* URL(Uniform Resource Locator) 是统一资源定位符,可以提供该资源的路径。它是一种具体的 URI即 URL 可以用来标识一个资源,而且还指明了如何 locate 这个资源。 - URL(Uniform Resource Locator) 是统一资源定位符,可以提供该资源的路径。它是一种具体的 URI即 URL 可以用来标识一个资源,而且还指明了如何 locate 这个资源。
URI 的作用像身份证号一样URL 的作用更像家庭住址一样。URL 是一种具体的 URI它不仅唯一标识资源而且还提供了定位该资源的信息。 URI 的作用像身份证号一样URL 的作用更像家庭住址一样。URL 是一种具体的 URI它不仅唯一标识资源而且还提供了定位该资源的信息。
@ -244,9 +187,9 @@ URI 的作用像身份证号一样URL 的作用更像家庭住址一样。URL
## PING ## PING
### PING命令的作用是什么 ### PING 命令的作用是什么?
PING命令是一种常用的网络诊断工具经常用来测试网络中主机之间的连通性和网络延迟。 PING 命令是一种常用的网络诊断工具,经常用来测试网络中主机之间的连通性和网络延迟。
这里简单举一个例子,我们来 PING 一下百度。 这里简单举一个例子,我们来 PING 一下百度。
@ -268,25 +211,25 @@ round-trip min/avg/max/stddev = 27.571/27.938/28.732/0.474 ms
PING 命令的输出结果通常包括以下几部分信息: PING 命令的输出结果通常包括以下几部分信息:
1. **ICMP Echo Request请求报文信息** 序列号、TTLTime to Live值。 1. **ICMP Echo Request请求报文信息** 序列号、TTLTime to Live值。
2. **目标主机的域名或IP地址** :输出结果的第一行。 2. **目标主机的域名或 IP 地址** :输出结果的第一行。
3. **往返时间RTTRound-Trip Time** :从发送 ICMP Echo Request请求报文到接收到ICMP Echo Reply响应报文的总时间用来衡量网络连接的延迟。 3. **往返时间RTTRound-Trip Time** :从发送 ICMP Echo Request请求报文到接收到 ICMP Echo Reply响应报文的总时间用来衡量网络连接的延迟。
4. **统计结果Statistics** 包括发送的ICMP请求数据包数量、接收到的ICMP响应数据包数量、丢包率、往返时间RTT的最小、平均、最大和标准偏差值。 4. **统计结果Statistics** :包括发送的 ICMP 请求数据包数量、接收到的 ICMP 响应数据包数量、丢包率、往返时间RTT的最小、平均、最大和标准偏差值。
如果PING对应的目标主机无法得到正确的响应则表明这两个主机之间的连通性存在问题。如果往返时间RTT过高则表明网络延迟过高。 如果 PING 对应的目标主机无法得到正确的响应则表明这两个主机之间的连通性存在问题。如果往返时间RTT过高则表明网络延迟过高。
### PING命令的工作原理是什么 ### PING 命令的工作原理是什么?
PING 基于 **ICMPInternet Control Message Protocol互联网控制报文协议**,其主要原理就是通过在网络上发送和接收 ICMP 报文实现的。 PING 基于网络层的 **ICMPInternet Control Message Protocol互联网控制报文协议**,其主要原理就是通过在网络上发送和接收 ICMP 报文实现的。
ICMP 报文中包含了类型字段,用于标识 ICMP 报文类型。ICMP 报文的类型有很多种,但大致可以分为两类: ICMP 报文中包含了类型字段,用于标识 ICMP 报文类型。ICMP 报文的类型有很多种,但大致可以分为两类:
- **查询报文类型** :向目标主机发送请求并期望得到响应。 - **查询报文类型** :向目标主机发送请求并期望得到响应。
- **差错报文类型** :向源主机发送错误信息,用于报告网络中的错误情况。 - **差错报文类型** :向源主机发送错误信息,用于报告网络中的错误情况。
PING 用到的ICMP Echo Request类型为 8 和 ICMP Echo Reply类型为 0 属于查询报文类型 。 PING 用到的 ICMP Echo Request类型为 8 和 ICMP Echo Reply类型为 0 属于查询报文类型 。
- PING命令会向目标主机发送ICMP Echo Request。 - PING 命令会向目标主机发送 ICMP Echo Request。
- 如果两个主机的连通性正常目标主机会返回一个对应的ICMP Echo Reply。 - 如果两个主机的连通性正常,目标主机会返回一个对应的 ICMP Echo Reply。
## DNS ## DNS
@ -313,6 +256,124 @@ DNS 服务器自底向上可以依次分为以下几个层级(所有 DNS 服务
整个过程的步骤比较多,我单独写了一篇文章详细介绍:[DNS 域名系统详解(应用层)](./dns.md) 。 整个过程的步骤比较多,我单独写了一篇文章详细介绍:[DNS 域名系统详解(应用层)](./dns.md) 。
## TCP 与 UDP
### TCP 与 UDP 的区别(重要)
1. **是否面向连接** UDP 在传送数据之前不需要先建立连接。而 TCP 提供面向连接的服务,在传送数据之前必须先建立连接,数据传送结束后要释放连接。
2. **是否是可靠传输**:远地主机在收到 UDP 报文后不需要给出任何确认并且不保证数据不丢失不保证是否顺序到达。TCP 提供可靠的传输服务TCP 在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制。通过 TCP 连接传输的数据,无差错、不丢失、不重复、并且按序到达。
3. **是否有状态** 这个和上面的“是否可靠传输”相对应。TCP 传输是有状态的,这个有状态说的是 TCP 会去记录自己发送消息的状态比如消息是否发送了、是否被接收了等等。为此 TCP 需要维持复杂的连接状态表。而 UDP 是无状态服务,简单来说就是不管发出去之后的事情了(**这很渣男!**)。
4. **传输效率** :由于使用 TCP 进行传输的时候多了连接、确认、重传等机制,所以 TCP 的传输效率要比 UDP 低很多。
5. **传输形式** TCP 是面向字节流的UDP 是面向报文的。
6. **首部开销** TCP 首部开销20 60 字节)比 UDP 首部开销8 字节)要大。
7. **是否提供广播或多播服务** TCP 只支持点对点通信UDP 支持一对一、一对多、多对一、多对多;
8. ......
我把上面总结的内容通过表格形式展示出来了!确定不点个赞嘛?
| | TCP | UDP |
| ---------------------- | -------------- | ---------- |
| 是否面向连接 | 是 | 否 |
| 是否可靠 | 是 | 否 |
| 是否有状态 | 是 | 否 |
| 传输效率 | 较慢 | 较快 |
| 传输形式 | 字节流 | 数据报文段 |
| 首部开销 | 20 60 bytes | 8 bytes |
| 是否提供广播或多播服务 | 否 | 是 |
### 什么时候选择 TCP什么时候选 UDP?
- **UDP 一般用于即时通信**,比如: 语音、 视频 、直播等等。这些场景对传输数据的准确性要求不是特别高,比如你看视频即使少个一两帧,实际给人的感觉区别也不大。
- **TCP 用于对传输准确性要求特别高的场景**,比如文件传输、发送和接收邮件、远程登录等等。
### HTTP 基于 TCP 还是 UDP
~~**HTTP 协议是基于 TCP 协议的**,所以发送 HTTP 请求之前首先要建立 TCP 连接也就是要经历 3 次握手。~~
🐛 修正(参见 [issue#1915](https://github.com/Snailclimb/JavaGuide/issues/1915)HTTP/3.0 之前是基于 TCP 协议的,而 HTTP/3.0 将弃用 TCP改用 **基于 UDP 的 QUIC 协议** 。此变化解决了 HTTP/2 中存在的队头阻塞问题。由于 HTTP/2 在单个 TCP 连接上使用了多路复用,受到 TCP 拥塞控制的影响,少量的丢包就可能导致整个 TCP 连接上的所有流被阻塞。另外HTTP/2.0 需要经过经典的 TCP 三次握手过程(一般是 3 个 RTT。由于 QUIC 协议的特性HTTP/3.0 可以避免 TCP 三次握手的延迟允许在第一次连接时发送数据0 个 RTT ,零往返时间)。
相关证明可以参考下面这两个链接:
- https://zh.wikipedia.org/zh/HTTP/3
- https://datatracker.ietf.org/doc/rfc9114/
### 使用 TCP 的协议有哪些?使用 UDP 的协议有哪些?
**运行于 TCP 协议之上的协议**
1. **HTTP 协议** 超文本传输协议HTTPHyperText Transfer Protocol)是一种用于传输超文本和多媒体内容的协议,主要是为 Web 浏览器与 Web 服务器之间的通信而设计的。当我们使用浏览器浏览网页的时候,我们网页就是通过 HTTP 请求进行加载的。
2. **HTTPS 协议** :更安全的超文本传输协议(HTTPS,Hypertext Transfer Protocol Secure),身披 SSL 外衣的 HTTP 协议
3. **FTP 协议**:文件传输协议 FTPFile Transfer Protocol是一种用于在计算机之间传输文件的协议可以屏蔽操作系统和文件存储方式。注意 ⚠FTP 是一种不安全的协议,因为它在传输过程中不会对数据进行加密。建议在传输敏感数据时使用更安全的协议,如 SFTP。
4. **SMTP 协议**简单邮件传输协议SMTPSimple Mail Transfer Protocol的缩写是一种用于发送电子邮件的协议。注意 ⚠SMTP 协议只负责邮件的发送,而不是接收。要从邮件服务器接收邮件,需要使用 POP3 或 IMAP 协议。
5. **POP3/IMAP 协议** 两者都是负责邮件接收的协议。IMAP 协议是比 POP3 更新的协议它在功能和性能上都更加强大。IMAP 支持邮件搜索、标记、分类、归档等高级功能,而且可以在多个设备之间同步邮件状态。几乎所有现代电子邮件客户端和服务器都支持 IMAP。
6. **Telnet 协议**用于通过一个终端登陆到其他服务器。Telnet 协议的最大缺点之一是所有数据(包括用户名和密码)均以明文形式发送,这有潜在的安全风险。这就是为什么如今很少使用 Telnet而是使用一种称为 SSH 的非常安全的网络传输协议的主要原因。
7. **SSH 协议** : SSH Secure Shell是目前较可靠专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH 建立在可靠的传输协议 TCP 之上。
8. ......
**运行于 UDP 协议之上的协议**
1. **DHCP 协议**:动态主机配置协议,动态配置 IP 地址
2. **DNS** **域名系统DNSDomain Name System将人类可读的域名 (例如www.baidu.com) 转换为机器可读的 IP 地址 (例如220.181.38.148)。** 我们可以将其理解为专为互联网设计的电话薄。实际上 DNS 同时支持 UDP 和 TCP 协议。
3. ......
### TCP 三次握手和四次挥手(非常重要)
**相关面试题**
- 为什么要三次握手?
- 第 2 次握手传回了 ACK为什么还要传回 SYN
- 为什么要四次挥手?
- 为什么不能把服务器发送的 ACK 和 FIN 合并起来,变成三次挥手?
- 如果第二次挥手时服务器的 ACK 没有送达客户端,会怎样?
- 为什么第四次挥手客户端需要等待 2\*MSL报文段最长寿命时间后才进入 CLOSED 状态?
**参考答案** [TCP 三次握手和四次挥手(传输层)](./tcp-connection-and-disconnection.md) 。
### TCP 如何保证传输的可靠性?(重要)
[TCP 传输可靠性保障(传输层)](./tcp-reliability-guarantee.md)
## IP
### IP 协议的作用是什么?
**IPInternet Protocol网际协议** 是 TCP/IP 协议中最重要的协议之一,属于网络层的协议,主要作用是定义数据包的格式、对数据包进行路由和寻址,以便它们可以跨网络传播并到达正确的目的地。
目前 IP 协议主要分为两种,一种是过去的 IPv4另一种是较新的 IPv6目前这两种协议都在使用但后者已经被提议来取代前者。
### 什么是 IP 地址IP 寻址如何工作?
每个连入互联网的设备或域(如计算机、服务器、路由器等)都被分配一个 IP 地址,作为唯一标识符。每个 IP 地址都是一个字符序列,如 192.168.1.1。每个 IP 数据包都同时包含发送数据包的设备或域的 IP 地址以及预期接收方的 IP 地址,这与一封邮件中同时包含目的地地址和回邮地址一样。
![IP 地址使数据包到达其目的地](https://oss.javaguide.cn/github/javaguide/cs-basics/network/internet_protocol_ip_address_diagram.png)
### IPv4 和 IPv6 有什么区别?
**IPv4Internet Protocol version 4** 是目前广泛使用的 IP 地址版本其格式是四组由点分隔的数字例如123.89.46.72。IPv4 使用 32 位地址作为其 Internet 地址,这意味着共有约 42 亿( 2^32个可用 IP 地址。
![IPv4](https://oss.javaguide.cn/github/javaguide/cs-basics/network/Figure-1-IPv4Addressformatwithdotteddecimalnotation-29c824f6a451d48d8c27759799f0c995.png)
这么少当然不够用啦!为了解决 IP 地址耗尽的问题,最根本的办法是采用具有更大地址空间的新版本 IP 协议 - **IPv6Internet Protocol version 6**。IPv6 地址使用更复杂的格式该格式使用由单或双冒号分隔的一组数字和字母例如2001:0db8:85a3:0000:0000:8a2e:0370:7334 。IPv4 使用 128 位互联网地址,这意味着越有 2^1283 开头的 39 位数字,恐怖如斯) 个可用 IP 地址。
![IPv6](https://oss.javaguide.cn/github/javaguide/cs-basics/network/Figure-2-IPv6Addressformatwithhexadecimalnotation-7da3a419bd81627a9b2cef3b0efb4940.png)
除了更大的地址空间之外IPv6 的优势还包括:
- **无状态地址自动配置Stateless Address Autoconfiguration简称 SLAAC** :主机可以直接通过根据接口标识和网络前缀生成全局唯一的 IPv6 地址,而无需依赖 DHCPDynamic Host Configuration Protocol服务器简化了网络配置和管理。
- **NATNetwork Address Translation网络地址转换 成为可选项** IPv6 地址资源充足,可以给全球每个设备一个独立的地址。
- **对标头结构进行了改进** IPv6 标头结构相较于 IPv4 更加简化和高效,减少了处理开销,提高了网络性能。
- **可选的扩展头** :允许在 IPv6 标头中添加不同的扩展头Extension Headers用于实现不同类型的功能和选项。
- **ICMPv6Internet Control Message Protocol for IPv6** IPv6 中的 ICMPv6 相较于 IPv4 中的 ICMP 有了一些改进,如邻居发现、路径 MTU 发现等功能的改进,从而提升了网络的可靠性和性能。
- ......
### NAT 的作用是什么?
**NATNetwork Address Translation网络地址转换** 主要用于在不同网络之间转换 IP 地址。它允许将私有 IP 地址(如在局域网中使用的 IP 地址)映射为公有 IP 地址(在互联网中使用的 IP 地址)或者反向映射,从而实现局域网内的多个设备通过单一公有 IP 地址访问互联网。
NAT 不光可以缓解 IPv4 地址资源短缺的问题,还可以隐藏内部网络的实际拓扑结构,使得外部网络无法直接访问内部网络中的设备,从而提高了内部网络的安全性。
![NAT 实现 IP地址转换](https://oss.javaguide.cn/github/javaguide/cs-basics/network/network-address-translation.png)
## ARP ## ARP
### 什么是 Mac 地址? ### 什么是 Mac 地址?
@ -347,5 +408,7 @@ ARP 协议,全称 **地址解析协议Address Resolution Protocol**
- 《图解 HTTP》 - 《图解 HTTP》
- 《计算机网络自顶向下方法》(第七版) - 《计算机网络自顶向下方法》(第七版)
- 详解 HTTP2.0 及 HTTPS 协议https://juejin.cn/post/7034668672262242318 - 详解 HTTP/2.0 及 HTTPS 协议https://juejin.cn/post/7034668672262242318
- HTTP 请求头字段大全| HTTP Request Headershttps://www.flysnow.org/tools/table/http-request-headers/ - HTTP 请求头字段大全| HTTP Request Headershttps://www.flysnow.org/tools/table/http-request-headers/
- 什么是 Internet 协议IPhttps://www.cloudflare.com/zh-cn/learning/network-layer/internet-protocol/
- What Is NAT and What Are the Benefits of NAT Firewalls?https://community.fs.com/blog/what-is-nat-and-what-are-the-benefits-of-nat-firewalls.html

View File

@ -12,7 +12,7 @@ head:
content: 很多读者抱怨计算操作系统的知识点比较繁杂,自己也没有多少耐心去看,但是面试的时候又经常会遇到。所以,我带着我整理好的操作系统的常见问题来啦!这篇文章总结了一些我觉得比较重要的操作系统相关的问题比如进程管理、内存管理、虚拟内存等等。 content: 很多读者抱怨计算操作系统的知识点比较繁杂,自己也没有多少耐心去看,但是面试的时候又经常会遇到。所以,我带着我整理好的操作系统的常见问题来啦!这篇文章总结了一些我觉得比较重要的操作系统相关的问题比如进程管理、内存管理、虚拟内存等等。
--- ---
很多读者抱怨计算操作系统的知识点比较繁杂,自己也没有多少耐心去看,但是面试的时候又经常会遇到。所以,我带着我整理好的操作系统的常见问题来啦!这篇文章总结了一些我觉得比较重要的操作系统相关的问题比如**进程管理**、**内存管理**、**虚拟内存**等等。 很多读者抱怨计算操作系统的知识点比较繁杂,自己也没有多少耐心去看,但是面试的时候又经常会遇到。所以,我带着我整理好的操作系统的常见问题来啦!这篇文章总结了一些我觉得比较重要的操作系统相关的问题比如 **用户态和内核态、系统调用、进程和线程、死锁、内存管理、虚拟内存、文件系统**等等。
这篇文章只是对一些操作系统比较重要概念的一个概览,深入学习的话,建议大家还是老老实实地去看书。另外, 这篇文章的很多内容参考了《现代操作系统》第三版这本书,非常感谢。 这篇文章只是对一些操作系统比较重要概念的一个概览,深入学习的话,建议大家还是老老实实地去看书。另外, 这篇文章的很多内容参考了《现代操作系统》第三版这本书,非常感谢。
@ -201,7 +201,7 @@ _玩玩电脑游戏还是必须要有 Windows 的,所以我现在是一台 Win
下面是几种常见的线程同步的方式: 下面是几种常见的线程同步的方式:
1. **互斥锁(Mutex)**:采用互斥对象机制,只有拥有互斥对象的线程才有访问公共资源的权限。因为互斥对象只有一个,所以可以保证公共资源不会被多个线程同时访问。比如 Java 中的 `synchronized` 关键词和各种 `Lock` 都是这种机制。 1. **互斥锁(Mutex)** :采用互斥对象机制,只有拥有互斥对象的线程才有访问公共资源的权限。因为互斥对象只有一个,所以可以保证公共资源不会被多个线程同时访问。比如 Java 中的 `synchronized` 关键词和各种 `Lock` 都是这种机制。
2. **读写锁Read-Write Lock**:允许多个线程同时读取共享资源,但只有一个线程可以对共享资源进行写操作。 2. **读写锁Read-Write Lock**:允许多个线程同时读取共享资源,但只有一个线程可以对共享资源进行写操作。
3. **信号量(Semaphore)** :它允许同一时刻多个线程访问同一资源,但是需要控制同一时刻访问此资源的最大线程数量。 3. **信号量(Semaphore)** :它允许同一时刻多个线程访问同一资源,但是需要控制同一时刻访问此资源的最大线程数量。
4. **屏障Barrier** :屏障是一种同步原语,用于等待多个线程到达某个点再一起继续执行。当一个线程到达屏障时,它会停止执行并等待其他线程到达屏障,直到所有线程都到达屏障后,它们才会一起继续执行。比如 Java 中的 `CyclicBarrier` 是这种机制。 4. **屏障Barrier** :屏障是一种同步原语,用于等待多个线程到达某个点再一起继续执行。当一个线程到达屏障时,它会停止执行并等待其他线程到达屏障,直到所有线程都到达屏障后,它们才会一起继续执行。比如 Java 中的 `CyclicBarrier` 是这种机制。
@ -239,7 +239,7 @@ PCB 主要包含下面几部分的内容:
> 下面这部分总结参考了:[《进程间通信 IPC (InterProcess Communication)》](https://www.jianshu.com/p/c1015f5ffa74) 这篇文章,推荐阅读,总结的非常不错。 > 下面这部分总结参考了:[《进程间通信 IPC (InterProcess Communication)》](https://www.jianshu.com/p/c1015f5ffa74) 这篇文章,推荐阅读,总结的非常不错。
1. **管道/匿名管道(Pipes)** :用于具有亲缘关系的父子进程间或者兄弟进程之间的通信。 1. **管道/匿名管道(Pipes)** :用于具有亲缘关系的父子进程间或者兄弟进程之间的通信。
2. **有名管道(Named Pipes)** : 匿名管道由于没有名字,只能用于亲缘关系的进程间通信。为了克服这个缺点,提出了有名管道。有名管道严格遵循**先进先出(first in first out)**。有名管道以磁盘文件的方式存在,可以实现本机任意两个进程通信。 2. **有名管道(Named Pipes)** : 匿名管道由于没有名字,只能用于亲缘关系的进程间通信。为了克服这个缺点,提出了有名管道。有名管道严格遵循 **先进先出(First In First Out)** 。有名管道以磁盘文件的方式存在,可以实现本机任意两个进程通信。
3. **信号(Signal)** :信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生; 3. **信号(Signal)** :信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生;
4. **消息队列(Message Queuing)** :消息队列是消息的链表,具有特定的格式,存放在内存中并由消息队列标识符标识。管道和消息队列的通信数据都是先进先出的原则。与管道(无名管道:只存在于内存中的文件;命名管道:存在于实际的磁盘介质或者文件系统)不同的是消息队列存放在内核中,只有在内核重启(即,操作系统重启)或者显式地删除一个消息队列时,该消息队列才会被真正的删除。消息队列可以实现消息的随机查询,消息不一定要以先进先出的次序读取,也可以按消息的类型读取.比 FIFO 更有优势。**消息队列克服了信号承载信息量少,管道只能承载无格式字 节流以及缓冲区大小受限等缺点。** 4. **消息队列(Message Queuing)** :消息队列是消息的链表,具有特定的格式,存放在内存中并由消息队列标识符标识。管道和消息队列的通信数据都是先进先出的原则。与管道(无名管道:只存在于内存中的文件;命名管道:存在于实际的磁盘介质或者文件系统)不同的是消息队列存放在内核中,只有在内核重启(即,操作系统重启)或者显式地删除一个消息队列时,该消息队列才会被真正的删除。消息队列可以实现消息的随机查询,消息不一定要以先进先出的次序读取,也可以按消息的类型读取.比 FIFO 更有优势。**消息队列克服了信号承载信息量少,管道只能承载无格式字 节流以及缓冲区大小受限等缺点。**
5. **信号量(Semaphores)** :信号量是一个计数器,用于多进程对共享数据的访问,信号量的意图在于进程间同步。这种通信方式主要用于解决与同步相关的问题并避免竞争条件。 5. **信号量(Semaphores)** :信号量是一个计数器,用于多进程对共享数据的访问,信号量的意图在于进程间同步。这种通信方式主要用于解决与同步相关的问题并避免竞争条件。
@ -248,13 +248,15 @@ PCB 主要包含下面几部分的内容:
### 进程的调度算法有哪些? ### 进程的调度算法有哪些?
![常见进程调度算法](https://oss.javaguide.cn/github/javaguide/cs-basics/network/scheduling-algorithms-of-process.png)
这是一个很重要的知识点!为了确定首先执行哪个进程以及最后执行哪个进程以实现最大 CPU 利用率,计算机科学家已经定义了一些算法,它们是: 这是一个很重要的知识点!为了确定首先执行哪个进程以及最后执行哪个进程以实现最大 CPU 利用率,计算机科学家已经定义了一些算法,它们是:
- **先到先服务(FCFS)调度算法** : 从就绪队列中选择一个最先进入该队列的进程为之分配资源,使它立即执行并一直执行到完成或发生某事件而被阻塞放弃占用 CPU 时再重新调度。 - **先到先服务调度算法(FCFSFirst Come, First Served)** : 从就绪队列中选择一个最先进入该队列的进程为之分配资源,使它立即执行并一直执行到完成或发生某事件而被阻塞放弃占用 CPU 时再重新调度。
- **短作业优先(SJF)的调度算法** : 从就绪队列中选出一个估计运行时间最短的进程为之分配资源,使它立即执行并一直执行到完成或发生某事件而被阻塞放弃占用 CPU 时再重新调度。 - **短作业优先的调度算法(SJFShortest Job First)** : 从就绪队列中选出一个估计运行时间最短的进程为之分配资源,使它立即执行并一直执行到完成或发生某事件而被阻塞放弃占用 CPU 时再重新调度。
- **时间片轮转调度算法** : 时间片轮转调度是一种最古老,最简单,最公平且使用最广的算法,又称 RR(Round robin)调度。每个进程被分配一个时间段,称作它的时间片,即该进程允许运行的时间。 - **时间片轮转调度算法RRRound-Robin** : 时间片轮转调度是一种最古老,最简单,最公平且使用最广的算法。每个进程被分配一个时间段,称作它的时间片,即该进程允许运行的时间。
- **多级反馈队列调度算法** :前面介绍的几种进程调度的算法都有一定的局限性。如**短进程优先的调度算法,仅照顾了短进程而忽略了长进程** 。多级反馈队列调度算法既能使高优先级的作业得到响应又能使短作业(进程)迅速完成。,因而它是目前**被公认的一种较好的进程调度算法**UNIX 操作系统采取的便是这种调度算法。 - **多级反馈队列调度算法MFQMulti-level Feedback Queue** :前面介绍的几种进程调度的算法都有一定的局限性。如**短进程优先的调度算法,仅照顾了短进程而忽略了长进程** 。多级反馈队列调度算法既能使高优先级的作业得到响应又能使短作业(进程)迅速完成。,因而它是目前**被公认的一种较好的进程调度算法**UNIX 操作系统采取的便是这种调度算法。
- **优先级调度** 为每个流程分配优先级,首先执行具有最高优先级的进程,依此类推。具有相同优先级的进程以 FCFS 方式执行。可以根据内存要求,时间要求或任何其他资源要求来确定优先级。 - **优先级调度算法Priority** 为每个流程分配优先级,首先执行具有最高优先级的进程,依此类推。具有相同优先级的进程以 FCFS 方式执行。可以根据内存要求,时间要求或任何其他资源要求来确定优先级。
### 什么是僵尸进程和孤儿进程? ### 什么是僵尸进程和孤儿进程?

View File

@ -227,7 +227,7 @@ MMU 将虚拟地址翻译为物理地址的主要机制有 3 种:
#### TLB 有什么用?使用 TLB 之后的地址翻译流程是怎样的? #### TLB 有什么用?使用 TLB 之后的地址翻译流程是怎样的?
为了提高虚拟地址到物理地址的转换速度,操作系统在 **页表方案** 基础之上引入了 **转址旁路缓存(Translation Lookasjde BufferTLB也被称为快表) ** 。 为了提高虚拟地址到物理地址的转换速度,操作系统在 **页表方案** 基础之上引入了 **转址旁路缓存(Translation Lookasjde BufferTLB也被称为快表)** 。
![加入 TLB 之后的地址翻译](https://oss.javaguide.cn/github/javaguide/cs-basics/operating-system/physical-virtual-address-translation-mmu.png) ![加入 TLB 之后的地址翻译](https://oss.javaguide.cn/github/javaguide/cs-basics/operating-system/physical-virtual-address-translation-mmu.png)
@ -306,7 +306,6 @@ LRU 算法是实际使用中应用的比较多,也被认为是最接近 OPT
- 都是非连续内存管理的方式。 - 都是非连续内存管理的方式。
- 都采用了地址映射的方法,将虚拟地址映射到物理地址,以实现对内存的管理和保护。 - 都采用了地址映射的方法,将虚拟地址映射到物理地址,以实现对内存的管理和保护。
-
**区别** **区别**