awesome-interview/assets/js/e420c2e8.897e6361.js

1 line
28 KiB
JavaScript

"use strict";(self.webpackChunkjjbook=self.webpackChunkjjbook||[]).push([[3989],{3905:function(e,t,n){n.d(t,{Zo:function(){return k},kt:function(){return s}});var r=n(7294);function l(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){l(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function o(e,t){if(null==e)return{};var n,r,l=function(e,t){if(null==e)return{};var n,r,l={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(l[n]=e[n]);return l}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(l[n]=e[n])}return l}var p=r.createContext({}),u=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},k=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,l=e.mdxType,a=e.originalType,p=e.parentName,k=o(e,["components","mdxType","originalType","parentName"]),m=u(n),s=l,N=m["".concat(p,".").concat(s)]||m[s]||c[s]||a;return n?r.createElement(N,i(i({ref:t},k),{},{components:n})):r.createElement(N,i({ref:t},k))}));function s(e,t){var n=arguments,l=t&&t.mdxType;if("string"==typeof e||l){var a=n.length,i=new Array(a);i[0]=m;var o={};for(var p in t)hasOwnProperty.call(t,p)&&(o[p]=t[p]);o.originalType=e,o.mdxType="string"==typeof e?e:l,i[1]=o;for(var u=2;u<a;u++)i[u]=n[u];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},2174:function(e,t,n){n.r(t),n.d(t,{frontMatter:function(){return o},contentTitle:function(){return p},metadata:function(){return u},toc:function(){return k},default:function(){return m}});var r=n(7462),l=n(3366),a=(n(7294),n(3905)),i=["components"],o={sidebar_label:"\u7efc\u5408\uff1a\u6d4f\u89c8\u5668\u4ece\u8f93\u5165\u7f51\u5740\u5230\u9875\u9762\u5c55\u73b0\u7684\u8fc7\u7a0b",sidebar_position:12},p="\u6d4f\u89c8\u5668\u4ece\u8f93\u5165\u7f51\u5740\u5230\u9875\u9762\u5c55\u793a\u7684\u8fc7\u7a0b",u={unversionedId:"book1/topic-enter-url-display-xx",id:"book1/topic-enter-url-display-xx",isDocsHomePage:!1,title:"\u6d4f\u89c8\u5668\u4ece\u8f93\u5165\u7f51\u5740\u5230\u9875\u9762\u5c55\u793a\u7684\u8fc7\u7a0b",description:"\u56de\u7b54\u5173\u952e\u70b9",source:"@site/docs/book1/topic-enter-url-display-xx.md",sourceDirName:"book1",slug:"/book1/topic-enter-url-display-xx",permalink:"/awesome-interview/book1/topic-enter-url-display-xx",tags:[],version:"current",sidebarPosition:12,frontMatter:{sidebar_label:"\u7efc\u5408\uff1a\u6d4f\u89c8\u5668\u4ece\u8f93\u5165\u7f51\u5740\u5230\u9875\u9762\u5c55\u73b0\u7684\u8fc7\u7a0b",sidebar_position:12},sidebar:"tutorialSidebar",previous:{title:"\u7b97\u6cd5\uff1a\u5e73\u8861\u4e8c\u53c9\u6811",permalink:"/awesome-interview/book1/algorithm-balanced-binary-trees"},next:{title:"\u6d4f\u89c8\u5668\uff1a\u6d4f\u89c8\u5668\u6e32\u67d3\u673a\u5236",permalink:"/awesome-interview/book2/browser-render-mechanism"}},k=[{value:"\u56de\u7b54\u5173\u952e\u70b9",id:"\u56de\u7b54\u5173\u952e\u70b9",children:[]},{value:"\u77e5\u8bc6\u70b9\u6df1\u5165",id:"\u77e5\u8bc6\u70b9\u6df1\u5165",children:[{value:"1. URL \u8f93\u5165",id:"1-url-\u8f93\u5165",children:[]},{value:"2. DNS\uff08Domain Name System\uff09\u89e3\u6790",id:"2-dnsdomain-name-system\u89e3\u6790",children:[]},{value:"3. \u5efa\u7acb TCP \u8fde\u63a5",id:"3-\u5efa\u7acb-tcp-\u8fde\u63a5",children:[]},{value:"4. TLS \u534f\u5546",id:"4-tls-\u534f\u5546",children:[]},{value:"5. \u670d\u52a1\u5668\u54cd\u5e94",id:"5-\u670d\u52a1\u5668\u54cd\u5e94",children:[]},{value:"6. \u6d4f\u89c8\u5668\u89e3\u6790\u5e76\u7ed8\u5236",id:"6-\u6d4f\u89c8\u5668\u89e3\u6790\u5e76\u7ed8\u5236",children:[]},{value:"7. TCP \u65ad\u5f00\u8fde\u63a5",id:"7-tcp-\u65ad\u5f00\u8fde\u63a5",children:[]}]},{value:"\u53c2\u8003\u8d44\u6599",id:"\u53c2\u8003\u8d44\u6599",children:[]}],c={toc:k};function m(e){var t=e.components,n=(0,l.Z)(e,i);return(0,a.kt)("wrapper",(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"\u6d4f\u89c8\u5668\u4ece\u8f93\u5165\u7f51\u5740\u5230\u9875\u9762\u5c55\u793a\u7684\u8fc7\u7a0b"},"\u6d4f\u89c8\u5668\u4ece\u8f93\u5165\u7f51\u5740\u5230\u9875\u9762\u5c55\u793a\u7684\u8fc7\u7a0b"),(0,a.kt)("h2",{id:"\u56de\u7b54\u5173\u952e\u70b9"},"\u56de\u7b54\u5173\u952e\u70b9"),(0,a.kt)("p",null,(0,a.kt)("inlineCode",{parentName:"p"},"URL")," ",(0,a.kt)("inlineCode",{parentName:"p"},"DNS")," ",(0,a.kt)("inlineCode",{parentName:"p"},"TCP")," ",(0,a.kt)("inlineCode",{parentName:"p"},"\u6e32\u67d3")),(0,a.kt)("p",null,"\u6d4f\u89c8\u5668\u4ece\u8f93\u5165\u7f51\u5740\u5230\u6e32\u67d3\u9875\u9762\u4e3b\u8981\u5206\u4e3a\u4ee5\u4e0b\u51e0\u4e2a\u8fc7\u7a0b"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"URL \u8f93\u5165"),(0,a.kt)("li",{parentName:"ul"},"DNS \u89e3\u6790"),(0,a.kt)("li",{parentName:"ul"},"\u5efa\u7acb TCP \u8fde\u63a5"),(0,a.kt)("li",{parentName:"ul"},"\u53d1\u9001 HTTP / HTTPS \u8bf7\u6c42\uff08\u5efa\u7acb TLS \u8fde\u63a5\uff09"),(0,a.kt)("li",{parentName:"ul"},"\u670d\u52a1\u5668\u54cd\u5e94\u8bf7\u6c42"),(0,a.kt)("li",{parentName:"ul"},"\u6d4f\u89c8\u5668\u89e3\u6790\u6e32\u67d3\u9875\u9762"),(0,a.kt)("li",{parentName:"ul"},"HTTP \u8bf7\u6c42\u7ed3\u675f\uff0c\u65ad\u5f00 TCP \u8fde\u63a5")),(0,a.kt)("h2",{id:"\u77e5\u8bc6\u70b9\u6df1\u5165"},"\u77e5\u8bc6\u70b9\u6df1\u5165"),(0,a.kt)("h3",{id:"1-url-\u8f93\u5165"},"1. URL \u8f93\u5165"),(0,a.kt)("p",null,(0,a.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/15681693/131242120-9965c535-cc8b-41fe-8db1-b3aa228e9d04.png",alt:"URL\u5730\u5740"})),(0,a.kt)("p",null,"URL\uff08\u7edf\u4e00\u8d44\u6e90\u5b9a\u4f4d\u7b26\uff0cUniform Resource Locator\uff09\u7528\u4e8e\u5b9a\u4f4d\u4e92\u8054\u7f51\u4e0a\u8d44\u6e90\uff0c\u4fd7\u79f0\u7f51\u5740\u3002"),(0,a.kt)("p",null,"\u6211\u4eec\u5728\u5730\u5740\u680f\u8f93\u5165 HZFE \u5b98\u65b9\u7f51\u5740 hzfe.org \u540e\u6572\u4e0b\u56de\u8f66\uff0c\u6d4f\u89c8\u5668\u4f1a\u5bf9\u8f93\u5165\u7684\u4fe1\u606f\u8fdb\u884c\u4ee5\u4e0b\u5224\u65ad\uff1a"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"\u68c0\u67e5\u8f93\u5165\u7684\u5185\u5bb9\u662f\u5426\u662f\u4e00\u4e2a\u5408\u6cd5\u7684 URL \u94fe\u63a5\u3002"),(0,a.kt)("li",{parentName:"ol"},"\u662f\uff0c\u5219\u5224\u65ad\u8f93\u5165\u7684 URL \u662f\u5426\u5b8c\u6574\u3002\u5982\u679c\u4e0d\u5b8c\u6574\uff0c\u6d4f\u89c8\u5668\u53ef\u80fd\u4f1a\u5bf9\u57df\u8fdb\u884c\u731c\u6d4b\uff0c\u8865\u5168\u524d\u7f00\u6216\u8005\u540e\u7f00\u3002"),(0,a.kt)("li",{parentName:"ol"},"\u5426\uff0c\u5c06\u8f93\u5165\u5185\u5bb9\u4f5c\u4e3a\u641c\u7d22\u6761\u4ef6\uff0c\u4f7f\u7528\u7528\u6237\u8bbe\u7f6e\u7684\u9ed8\u8ba4\u641c\u7d22\u5f15\u64ce\u6765\u8fdb\u884c\u641c\u7d22\u3002")),(0,a.kt)("p",null,"\u5927\u90e8\u5206\u6d4f\u89c8\u5668\u4f1a\u4ece\u5386\u53f2\u8bb0\u5f55\u3001\u4e66\u7b7e\u7b49\u5730\u65b9\u5f00\u59cb\u67e5\u627e\u6211\u4eec\u8f93\u5165\u7684\u7f51\u5740\uff0c\u5e76\u7ed9\u51fa\u667a\u80fd\u63d0\u793a\u3002"),(0,a.kt)("h3",{id:"2-dnsdomain-name-system\u89e3\u6790"},"2. DNS\uff08Domain Name System\uff09\u89e3\u6790"),(0,a.kt)("p",null,"\u56e0\u4e3a\u6d4f\u89c8\u5668\u4e0d\u80fd\u76f4\u63a5\u901a\u8fc7\u57df\u540d\u627e\u5230\u5bf9\u5e94\u7684\u670d\u52a1\u5668 IP \u5730\u5740\uff0c\u6240\u4ee5\u9700\u8981\u8fdb\u884c DNS \u89e3\u6790\uff0c\u67e5\u627e\u5230\u5bf9\u5e94\u7684 IP \u5730\u5740\u8fdb\u884c\u8bbf\u95ee\u3002"),(0,a.kt)("p",null,"DNS \u89e3\u6790\u6d41\u7a0b\u5982\u4e0b\uff1a"),(0,a.kt)("p",null,(0,a.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/17002181/131223396-d385b4a9-1952-402f-90e8-ab98e5f3f5e6.png",alt:"DNS \u89e3\u6790"})),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"\u5728\u6d4f\u89c8\u5668\u4e2d\u8f93\u5165 hzfe.org \u57df\u540d\uff0c\u64cd\u4f5c\u7cfb\u7edf\u68c0\u67e5\u6d4f\u89c8\u5668\u7f13\u5b58\u548c\u672c\u5730\u7684 hosts \u6587\u4ef6\u4e2d\uff0c\u662f\u5426\u6709\u8fd9\u4e2a\u7f51\u5740\u8bb0\u5f55\uff0c\u6709\u5219\u4ece\u8bb0\u5f55\u91cc\u9762\u627e\u5230\u5bf9\u5e94\u7684 IP \u5730\u5740\uff0c\u5b8c\u6210\u57df\u540d\u89e3\u6790\u3002"),(0,a.kt)("li",{parentName:"ol"},"\u67e5\u627e\u672c\u5730 DNS \u89e3\u6790\u5668\u7f13\u5b58\u4e2d\uff0c\u662f\u5426\u6709\u8fd9\u4e2a\u7f51\u5740\u8bb0\u5f55\uff0c\u6709\u5219\u4ece\u8bb0\u5f55\u91cc\u9762\u627e\u5230\u5bf9\u5e94\u7684 IP \u5730\u5740\uff0c\u5b8c\u6210\u57df\u540d\u89e3\u6790\u3002"),(0,a.kt)("li",{parentName:"ol"},"\u4f7f\u7528 TCP/IP \u53c2\u6570\u4e2d\u8bbe\u7f6e\u7684 DNS \u670d\u52a1\u5668\u8fdb\u884c\u67e5\u8be2\u3002\u5982\u679c\u8981\u67e5\u8be2\u7684\u57df\u540d\u5305\u542b\u5728\u672c\u5730\u914d\u7f6e\u533a\u57df\u8d44\u6e90\u4e2d\uff0c\u5219\u8fd4\u56de\u89e3\u6790\u7ed3\u679c\uff0c\u5b8c\u6210\u57df\u540d\u89e3\u6790\u3002"),(0,a.kt)("li",{parentName:"ol"},"\u68c0\u67e5\u672c\u5730 DNS \u670d\u52a1\u5668\u662f\u5426\u7f13\u5b58\u8be5\u7f51\u5740\u8bb0\u5f55\uff0c\u6709\u5219\u8fd4\u56de\u89e3\u6790\u7ed3\u679c\uff0c\u5b8c\u6210\u57df\u540d\u89e3\u6790\u3002"),(0,a.kt)("li",{parentName:"ol"},"\u672c\u5730 DNS \u670d\u52a1\u5668\u53d1\u9001\u67e5\u8be2\u62a5\u6587\u81f3\u6839 DNS \u670d\u52a1\u5668\uff0c\u6839 DNS \u670d\u52a1\u5668\u6536\u5230\u8bf7\u6c42\u540e\uff0c\u7528\u9876\u7ea7\u57df DNS \u670d\u52a1\u5668\u5730\u5740\u8fdb\u884c\u54cd\u5e94\u3002"),(0,a.kt)("li",{parentName:"ol"},"\u672c\u5730 DNS \u670d\u52a1\u5668\u53d1\u9001\u67e5\u8be2\u62a5\u6587\u81f3\u9876\u7ea7\u57df DNS \u670d\u52a1\u5668\u3002\u9876\u7ea7\u57df DNS \u670d\u52a1\u5668\u6536\u5230\u8bf7\u6c42\u540e\uff0c\u7528\u6743\u5a01 DNS \u670d\u52a1\u5668\u5730\u5740\u8fdb\u884c\u54cd\u5e94\u3002"),(0,a.kt)("li",{parentName:"ol"},"\u672c\u5730 DNS \u670d\u52a1\u5668\u53d1\u9001\u67e5\u8be2\u62a5\u6587\u81f3\u6743\u5a01 DNS \u670d\u52a1\u5668\uff0c\u6743\u5a01 DNS \u670d\u52a1\u5668\u6536\u5230\u8bf7\u6c42\u540e\uff0c\u7528 hzfe.org \u7684 IP \u5730\u5740\u8fdb\u884c\u54cd\u5e94\uff0c\u5b8c\u6210\u57df\u540d\u89e3\u6790\u3002")),(0,a.kt)("p",null,"\u67e5\u8be2\u901a\u5e38\u9075\u5faa\u4ee5\u4e0a\u6d41\u7a0b\uff0c\u4ece\u8bf7\u6c42\u4e3b\u673a\u5230\u672c\u5730 DNS \u670d\u52a1\u5668\u7684\u67e5\u8be2\u662f\u9012\u5f52\u67e5\u8be2\uff0cDNS \u670d\u52a1\u5668\u83b7\u53d6\u5230\u6240\u9700\u6620\u5c04\u7684\u67e5\u8be2\u8fc7\u7a0b\u662f\u8fed\u4ee3\u67e5\u8be2\u3002"),(0,a.kt)("h3",{id:"3-\u5efa\u7acb-tcp-\u8fde\u63a5"},"3. \u5efa\u7acb TCP \u8fde\u63a5"),(0,a.kt)("blockquote",null,(0,a.kt)("p",{parentName:"blockquote"},"\u4e16\u754c\u4e0a\u51e0\u4e4e\u6240\u6709\u7684 HTTP \u901a\u4fe1\u90fd\u662f\u7531 TCP/IP \u627f\u8f7d\u7684\uff0cTCP/IP \u662f\u5168\u7403\u8ba1\u7b97\u673a\u53ca\u7f51\u7edc\u8bbe\u5907\u90fd\u5728\u4f7f\u7528\u7684\u4e00\u79cd\u5e38\u7528\u7684\u5206\u7ec4\u4ea4\u6362\u7f51\u7edc\u5206\u5c42\u3002 HTTP \u7684\u8fde\u63a5\u5b9e\u9645\u4e0a\u5c31\u662f TCP \u8fde\u63a5\u4ee5\u53ca\u5176\u4f7f\u7528\u89c4\u5219\u3002 \u2013\u300aHTTP \u6743\u5a01\u6307\u5357\u300b")),(0,a.kt)("p",null,"\u5f53\u6d4f\u89c8\u5668\u83b7\u53d6\u5230\u670d\u52a1\u5668\u7684 IP \u5730\u5740\u540e\uff0c\u6d4f\u89c8\u5668\u4f1a\u7528\u4e00\u4e2a\u968f\u673a\u7684\u7aef\u53e3\uff081024 < \u7aef\u53e3 < 65535\uff09\u5411\u670d\u52a1\u5668 80 \u7aef\u53e3\u53d1\u8d77 TCP \u8fde\u63a5\u8bf7\u6c42\uff08\u6ce8\uff1aHTTP \u9ed8\u8ba4\u7ea6\u5b9a 80 \u7aef\u53e3\uff0cHTTPS \u4e3a 443 \u7aef\u53e3\uff09\u3002\u8fd9\u4e2a\u8fde\u63a5\u8bf7\u6c42\u5230\u8fbe\u670d\u52a1\u7aef\u540e\uff0c\u901a\u8fc7 TCP \u4e09\u6b21\u63e1\u624b\uff0c\u5efa\u7acb TCP \u7684\u8fde\u63a5\u3002"),(0,a.kt)("h4",{id:"31-\u5206\u5c42\u6a21\u578b"},"3.1 \u5206\u5c42\u6a21\u578b"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"}," ----------------------------------\n 7| \u5e94\u7528\u5c42 | | HTTP |\n\n 6| \u8868\u793a\u5c42 | \u5e94\u7528\u5c42 |\n\n 5| \u4f1a\u8bdd\u5c42 | | |\n ---------------------------------\n 4| \u4f20\u8f93\u5c42 | \u4f20\u8f93\u5c42 | TCP TLS |\n ---------------------------------\n 3| \u7f51\u7edc\u5c42 | \u7f51\u7edc\u5c42 | IP |\n ---------------------------------\n 2| \u6570\u636e\u94fe\u8def\u5c42\n | \u94fe\u8def\u5c42\n 1| \u7269\u7406\u5c42\n --------------------------------\n \xa0 [OSI] | [TCP/IP]\n")),(0,a.kt)("h4",{id:"32-tcp-\u4e09\u6b21\u63e1\u624b"},"3.2 TCP \u4e09\u6b21\u63e1\u624b"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"# SYN \u662f\u5efa\u7acb\u8fde\u63a5\u65f6\u7684\u63e1\u624b\u4fe1\u53f7\uff0cTCP \u4e2d\u53d1\u9001\u7b2c\u4e00\u4e2a SYN \u5305\u7684\u4e3a\u5ba2\u6237\u7aef\uff0c\u63a5\u6536\u7684\u4e3a\u670d\u52a1\u7aef\n# TCP \u4e2d\uff0c\u5f53\u53d1\u9001\u7aef\u6570\u636e\u5230\u8fbe\u63a5\u6536\u7aef\u65f6\uff0c\u63a5\u6536\u7aef\u8fd4\u56de\u4e00\u4e2a\u5df2\u6536\u5230\u6d88\u606f\u7684\u901a\u77e5\u3002\u8fd9\u4e2a\u6d88\u606f\u53eb\u505a\u786e\u8ba4\u5e94\u7b54 ACK\n\n \u5047\u8bbe\u6709\u5ba2\u6237\u7aefA\uff0c\u670d\u52a1\u7aefB\u3002\u6211\u4eec\u8981\u5efa\u7acb\u53ef\u9760\u7684\u6570\u636e\u4f20\u8f93\u3002\n SYN(=j) // SYN: A \u8bf7\u6c42\u5efa\u7acb\u8fde\u63a5\n A ----------\x3e B\n |\n SYN(=j+1) | // ACK: B \u786e\u8ba4\u5e94\u7b54 A \u7684 SYN\n SYN(=k) | // SYN: B \u53d1\u9001\u4e00\u4e2a SYN\n A <-----------\n |\n | ACK(=k+1)\n -----------\x3e B // ACK: A \u786e\u8ba4\u5e94\u7b54 B \u7684\u5305\n\n")),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"\u5ba2\u6237\u7aef\u53d1\u9001 SYN \u5305\uff08seq = j\uff09\u5230\u670d\u52a1\u5668\uff0c\u5e76\u8fdb\u5165 SYN_SEND \u72b6\u6001\uff0c\u7b49\u5f85\u670d\u52a1\u5668\u786e\u8ba4\u3002"),(0,a.kt)("li",{parentName:"ol"},"\u670d\u52a1\u5668\u6536\u5230 SYN \u5305\uff0c\u5fc5\u987b\u786e\u8ba4\u5ba2\u6237\u7684 SYN\uff08ACK = k + 1\uff09\uff0c\u540c\u65f6\u81ea\u5df1\u4e5f\u53d1\u9001\u4e00\u4e2a SYN \u5305\uff08seq = k\uff09\uff0c\u5373 SYN+ACK \u5305\uff0c\u6b64\u65f6\u670d\u52a1\u5668\u8fdb\u5165 SYN_RECV \u72b6\u6001\u3002"),(0,a.kt)("li",{parentName:"ol"},"\u5ba2\u6237\u7aef\u6536\u5230\u670d\u52a1\u5668\u7684 SYN+ACK \u5305\uff0c\u5411\u670d\u52a1\u5668\u53d1\u9001\u786e\u8ba4\u5305 ACK\uff08ACK = k + 1\uff09\uff0c\u6b64\u5305\u53d1\u9001\u5b8c\u6bd5\uff0c\u5ba2\u6237\u7aef\u548c\u670d\u52a1\u5668\u8fdb\u5165 ESTABLISHED \u72b6\u6001\uff0c\u5b8c\u6210\u4e09\u6b21\u63e1\u624b\u3002")),(0,a.kt)("h3",{id:"4-tls-\u534f\u5546"},"4. TLS \u534f\u5546"),(0,a.kt)("p",null,(0,a.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/15681693/125198502-bbe02c00-e294-11eb-8764-1e4674977b40.png",alt:"TLS\u534f\u5546"})),(0,a.kt)("p",null,"\u5efa\u7acb\u8fde\u63a5\u540e\u5c31\u53ef\u4ee5\u901a\u8fc7 HTTP \u8fdb\u884c\u6570\u636e\u4f20\u8f93\u3002\u5982\u679c\u4f7f\u7528 HTTPS\uff0c\u4f1a\u5728 TCP \u4e0e HTTP \u4e4b\u95f4\u591a\u6dfb\u52a0\u4e00\u5c42\u534f\u8bae\u505a\u52a0\u5bc6\u53ca\u8ba4\u8bc1\u7684\u670d\u52a1\u3002HTTPS \u4f7f\u7528 SSL\uff08Secure Socket Layer\uff09 \u548c TLS\uff08Transport Layer Security\uff09 \u534f\u8bae\uff0c\u4fdd\u969c\u4e86\u4fe1\u606f\u7684\u5b89\u5168\u3002"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"SSL"),(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"\u8ba4\u8bc1\u7528\u6237\u548c\u670d\u52a1\u5668\uff0c\u786e\u4fdd\u6570\u636e\u53d1\u9001\u5230\u6b63\u786e\u7684\u5ba2\u6237\u7aef\u548c\u670d\u52a1\u5668\u3002"),(0,a.kt)("li",{parentName:"ul"},"\u52a0\u5bc6\u6570\u636e\u9632\u6b62\u6570\u636e\u4e2d\u9014\u88ab\u7a83\u53d6\u3002"),(0,a.kt)("li",{parentName:"ul"},"\u7ef4\u62a4\u6570\u636e\u7684\u5b8c\u6574\u6027\uff0c\u786e\u4fdd\u6570\u636e\u5728\u4f20\u8f93\u8fc7\u7a0b\u4e2d\u4e0d\u88ab\u6539\u53d8\u3002"))),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"TLS"),(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"\u7528\u4e8e\u5728\u4e24\u4e2a\u901a\u4fe1\u5e94\u7528\u7a0b\u5e8f\u4e4b\u95f4\u63d0\u4f9b\u4fdd\u5bc6\u6027\u548c\u6570\u636e\u5b8c\u6574\u6027\u3002\u8be5\u534f\u8bae\u7531\u4e24\u5c42\u7ec4\u6210\uff1aTLS \u8bb0\u5f55\u534f\u8bae\uff08TLS Record\uff09\u548c TLS \u63e1\u624b\u534f\u8bae\uff08TLS Handshake\uff09\u3002\u8f83\u4f4e\u7684\u5c42\u4e3a TLS \u8bb0\u5f55\u534f\u8bae\uff0c\u4f4d\u4e8e\u67d0\u4e2a\u53ef\u9760\u7684\u4f20\u8f93\u534f\u8bae\uff08\u4f8b\u5982 TCP\uff09\u4e0a\u9762\u3002")))),(0,a.kt)("h4",{id:"41-tls-\u63e1\u624b\u534f\u8bae"},"4.1 TLS \u63e1\u624b\u534f\u8bae"),(0,a.kt)("p",null,(0,a.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/17002181/131222941-02fc347d-32c1-41ff-80b1-4f47a23f833f.png",alt:"TLS\u63e1\u624b\u534f\u8bae"})),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"\u5ba2\u6237\u7aef\u53d1\u51fa\u4e00\u4e2a client hello \u6d88\u606f\uff0c\u643a\u5e26\u7684\u4fe1\u606f\u5305\u62ec\uff1a\u6240\u652f\u6301\u7684 SSL/TLS \u7248\u672c\u5217\u8868\uff1b\u652f\u6301\u7684\u4e0e\u52a0\u5bc6\u7b97\u6cd5\uff1b\u6240\u652f\u6301\u7684\u6570\u636e\u538b\u7f29\u65b9\u6cd5\uff1b\u968f\u673a\u6570 A\u3002"),(0,a.kt)("li",{parentName:"ol"},"\u670d\u52a1\u7aef\u54cd\u5e94\u4e00\u4e2a server hello \u6d88\u606f\uff0c\u643a\u5e26\u7684\u4fe1\u606f\u5305\u62ec\uff1a\u534f\u5546\u91c7\u7528\u7684 SSL/TLS \u7248\u672c\u53f7\uff1b\u4f1a\u8bdd ID\uff1b\u968f\u673a\u6570 B\uff1b\u670d\u52a1\u7aef\u6570\u5b57\u8bc1\u4e66 serverCA\uff1b\u7531\u4e8e\u53cc\u5411\u8ba4\u8bc1\u9700\u6c42\uff0c\u670d\u52a1\u7aef\u9700\u8981\u5bf9\u5ba2\u6237\u7aef\u8fdb\u884c\u8ba4\u8bc1\uff0c\u4f1a\u540c\u65f6\u53d1\u9001\u4e00\u4e2a client certificate request\uff0c\u8868\u793a\u8bf7\u6c42\u5ba2\u6237\u7aef\u7684\u8bc1\u4e66\u3002"),(0,a.kt)("li",{parentName:"ol"},"\u5ba2\u6237\u7aef\u6821\u9a8c\u670d\u52a1\u7aef\u7684\u6570\u5b57\u8bc1\u4e66\uff1b\u6821\u9a8c\u901a\u8fc7\u4e4b\u540e\u53d1\u9001\u968f\u673a\u6570 C\uff0c\u8be5\u968f\u673a\u6570\u79f0\u4e3a pre-master-key\uff0c\u4f7f\u7528\u6570\u5b57\u8bc1\u4e66\u4e2d\u7684\u516c\u94a5\u52a0\u5bc6\u540e\u53d1\u51fa\uff1b\u7531\u4e8e\u670d\u52a1\u7aef\u53d1\u8d77\u4e86 client certificate request\uff0c\u5ba2\u6237\u7aef\u4f7f\u7528\u79c1\u94a5\u52a0\u5bc6\u4e00\u4e2a\u968f\u673a\u6570 clientRandom \u968f\u5ba2\u6237\u7aef\u7684\u8bc1\u4e66 clientCA \u4e00\u5e76\u53d1\u51fa\u3002"),(0,a.kt)("li",{parentName:"ol"},"\u670d\u52a1\u7aef\u6821\u9a8c\u5ba2\u6237\u7aef\u7684\u8bc1\u4e66\uff0c\u5e76\u6210\u529f\u5c06\u5ba2\u6237\u7aef\u52a0\u5bc6\u7684\u968f\u673a\u6570 clientRandom \u89e3\u5bc6\uff1b\u6839\u636e\u968f\u673a\u6570 A/\u968f\u673a\u6570 B/\u968f\u673a\u6570 C\uff08pre-master-key\uff09 \u4ea7\u751f\u52a8\u6001\u5bc6\u94a5 master-key\uff0c\u52a0\u5bc6\u4e00\u4e2a finish \u6d88\u606f\u53d1\u81f3\u5ba2\u6237\u7aef\u3002"),(0,a.kt)("li",{parentName:"ol"},"\u5ba2\u6237\u7aef\u6839\u636e\u540c\u6837\u7684\u968f\u673a\u6570\u548c\u7b97\u6cd5\u751f\u6210 master-key\uff0c\u52a0\u5bc6\u4e00\u4e2a finish \u6d88\u606f\u53d1\u9001\u81f3\u670d\u52a1\u7aef\u3002"),(0,a.kt)("li",{parentName:"ol"},"\u670d\u52a1\u7aef\u548c\u5ba2\u6237\u7aef\u5206\u522b\u89e3\u5bc6\u6210\u529f\uff0c\u81f3\u6b64\u63e1\u624b\u5b8c\u6210\uff0c\u4e4b\u540e\u7684\u6570\u636e\u5305\u5747\u91c7\u7528 master-key \u8fdb\u884c\u52a0\u5bc6\u4f20\u8f93\u3002")),(0,a.kt)("h3",{id:"5-\u670d\u52a1\u5668\u54cd\u5e94"},"5. \u670d\u52a1\u5668\u54cd\u5e94"),(0,a.kt)("p",null,"\u5f53\u6d4f\u89c8\u5668\u5230 web \u670d\u52a1\u5668\u7684\u8fde\u63a5\u5efa\u7acb\u540e\uff0c\u6d4f\u89c8\u5668\u4f1a\u53d1\u9001\u4e00\u4e2a\u521d\u59cb\u7684 HTTP GET \u8bf7\u6c42\uff0c\u8bf7\u6c42\u76ee\u6807\u901a\u5e38\u662f\u4e00\u4e2a HTML \u6587\u4ef6\u3002\u670d\u52a1\u5668\u6536\u5230\u8bf7\u6c42\u540e\uff0c\u5c06\u53d1\u56de\u4e00\u4e2a HTTP \u54cd\u5e94\u62a5\u6587\uff0c\u5185\u5bb9\u5305\u62ec\u76f8\u5173\u54cd\u5e94\u5934\u548c HTML \u6b63\u6587\u3002"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-HTML"},'<html>\n <head>\n <meta charset="UTF-8"/>\n <title>\u6211\u7684\u535a\u5ba2</title>\n <link rel="stylesheet" src="styles.css"/>\n <scrIPt src="index.js"><\/scrIPt>\n</head>\n<body>\n <h1 class="heading">\u9996\u9875</h1>\n <p>A paragraph with a <a href="https://hzfe.org/">link</a></p>\n <scrIPt src="index.js"><\/scrIPt>\n</body>\n</html>\n')),(0,a.kt)("h4",{id:"51-\u72b6\u6001\u7801"},"5.1 \u72b6\u6001\u7801"),(0,a.kt)("p",null,"\u72b6\u6001\u7801\u662f\u7531 3 \u4f4d\u6570\u7ec4\u6210\uff0c\u7b2c\u4e00\u4e2a\u6570\u5b57\u5b9a\u4e49\u4e86\u54cd\u5e94\u7684\u7c7b\u522b\uff0c\u4e14\u6709\u4e94\u7c7b\u53ef\u80fd\u53d6\u503c"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"1xx\uff1a\u6307\u793a\u4fe1\u606f\u2014\u2014\u8868\u793a\u8bf7\u6c42\u5df2\u63a5\u6536\uff0c\u7ee7\u7eed\u5904\u7406"),(0,a.kt)("li",{parentName:"ul"},"2xx\uff1a\u6210\u529f\u2014\u2014\u8868\u793a\u8bf7\u6c42\u5df2\u88ab\u6210\u529f\u63a5\u6536\u3001\u7406\u89e3\u3001\u63a5\u53d7"),(0,a.kt)("li",{parentName:"ul"},"3xx\uff1a\u91cd\u5b9a\u5411\u2014\u2014\u8981\u5b8c\u6210\u8bf7\u6c42\u5fc5\u987b\u8fdb\u884c\u66f4\u8fdb\u4e00\u6b65\u7684\u64cd\u4f5c"),(0,a.kt)("li",{parentName:"ul"},"4xx\uff1a\u5ba2\u6237\u7aef\u9519\u8bef\u2014\u2014\u8bf7\u6c42\u6709\u8bed\u6cd5\u9519\u8bef\u6216\u8bf7\u6c42\u65e0\u6cd5\u5b9e\u73b0"),(0,a.kt)("li",{parentName:"ul"},"5xx\uff1a\u670d\u52a1\u5668\u7aef\u9519\u8bef\u2014\u2014\u670d\u52a1\u5668\u672a\u80fd\u5b9e\u73b0\u5408\u6cd5\u7684\u8bf7\u6c42")),(0,a.kt)("h4",{id:"52-\u5e38\u89c1\u7684\u8bf7\u6c42\u5934\u548c\u5b57\u6bb5"},"5.2 \u5e38\u89c1\u7684\u8bf7\u6c42\u5934\u548c\u5b57\u6bb5"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Cache-Control\uff1amust-revalidate\u3001no-cache\u3001private\uff08\u662f\u5426\u9700\u8981\u7f13\u5b58\u8d44\u6e90\uff09"),(0,a.kt)("li",{parentName:"ul"},"Connection\uff1akeep-alive\uff08\u4fdd\u6301\u8fde\u63a5\uff09"),(0,a.kt)("li",{parentName:"ul"},"Content-Encoding\uff1agzip\uff08web \u670d\u52a1\u5668\u652f\u6301\u7684\u8fd4\u56de\u5185\u5bb9\u538b\u7f29\u7f16\u7801\u7c7b\u578b\uff09"),(0,a.kt)("li",{parentName:"ul"},"Content-Type\uff1atext/html\uff1bcharset=UTF-8\uff08\u6587\u4ef6\u7c7b\u578b\u548c\u5b57\u7b26\u7f16\u7801\u683c\u5f0f\uff09"),(0,a.kt)("li",{parentName:"ul"},"Date\uff1aSun\uff0c 21 Sep 2021 06:18:21 GMT\uff08\u670d\u52a1\u5668\u6d88\u606f\u53d1\u51fa\u7684\u65f6\u95f4\uff09"),(0,a.kt)("li",{parentName:"ul"},"Transfer-Encoding\uff1achunked\uff08\u670d\u52a1\u5668\u53d1\u9001\u7684\u8d44\u6e90\u7684\u65b9\u5f0f\u662f\u5206\u5757\u53d1\u9001\uff09")),(0,a.kt)("h4",{id:"53-http-\u54cd\u5e94\u62a5\u6587"},"5.3 HTTP \u54cd\u5e94\u62a5\u6587"),(0,a.kt)("p",null,"\u54cd\u5e94\u62a5\u6587\u7531\u56db\u90e8\u5206\u7ec4\u6210\uff08\u54cd\u5e94\u884c + \u54cd\u5e94\u5934 + \u7a7a\u884c + \u54cd\u5e94\u4f53\uff09"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"\u72b6\u6001\u884c\uff1aHTTP \u7248\u672c + \u7a7a\u683c + \u72b6\u6001\u7801 + \u7a7a\u683c + \u72b6\u6001\u7801\u63cf\u8ff0 + \u56de\u8f66\u7b26\uff08CR\uff09 + \u6362\u884c\u7b26\uff08LF\uff09"),(0,a.kt)("li",{parentName:"ul"},"\u54cd\u5e94\u5934\uff1a\u5b57\u6bb5\u540d + \u5192\u53f7 + \u503c + \u56de\u8f66\u7b26 + \u6362\u884c\u7b26"),(0,a.kt)("li",{parentName:"ul"},"\u7a7a\u884c\uff1a\u56de\u8f66\u7b26 + \u6362\u884c\u7b26"),(0,a.kt)("li",{parentName:"ul"},"\u54cd\u5e94\u4f53\uff1a\u7531\u7528\u6237\u81ea\u5b9a\u4e49\u6dfb\u52a0\uff0c\u5982 post \u7684 body \u7b49")),(0,a.kt)("h3",{id:"6-\u6d4f\u89c8\u5668\u89e3\u6790\u5e76\u7ed8\u5236"},"6. \u6d4f\u89c8\u5668\u89e3\u6790\u5e76\u7ed8\u5236"),(0,a.kt)("p",null,"\u4e0d\u540c\u7684\u6d4f\u89c8\u5668\u5f15\u64ce\u6e32\u67d3\u8fc7\u7a0b\u90fd\u4e0d\u592a\u4e00\u6837\uff0c\u8fd9\u91cc\u4ee5 Chrome \u6d4f\u89c8\u5668\u6e32\u67d3\u65b9\u5f0f\u4e3a\u4f8b\u3002"),(0,a.kt)("p",null,(0,a.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/15681693/131242132-b299c8ec-1c61-4dc0-86b8-62b3bbdae612.png",alt:"webkit render"})),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"\u5904\u7406 HTML \u6807\u8bb0\u5e76\u6784\u5efa DOM \u6811\u3002"),(0,a.kt)("li",{parentName:"ol"},"\u5904\u7406 CSS \u6807\u8bb0\u5e76\u6784\u5efa CSSOM \u6811\u3002"),(0,a.kt)("li",{parentName:"ol"},"\u5c06 DOM \u4e0e CSSOM \u5408\u5e76\u6210\u4e00\u4e2a\u6e32\u67d3\u6811\u3002"),(0,a.kt)("li",{parentName:"ol"},"\u6839\u636e\u6e32\u67d3\u6811\u6765\u5e03\u5c40\uff0c\u4ee5\u8ba1\u7b97\u6bcf\u4e2a\u8282\u70b9\u7684\u51e0\u4f55\u4fe1\u606f\u3002"),(0,a.kt)("li",{parentName:"ol"},"\u5c06\u5404\u4e2a\u8282\u70b9\u7ed8\u5236\u5230\u5c4f\u5e55\u4e0a\u3002")),(0,a.kt)("h3",{id:"7-tcp-\u65ad\u5f00\u8fde\u63a5"},"7. TCP \u65ad\u5f00\u8fde\u63a5"),(0,a.kt)("p",null,"\u73b0\u5728\u7684\u9875\u9762\u4e3a\u4e86\u4f18\u5316\u8bf7\u6c42\u7684\u8017\u65f6\uff0c\u9ed8\u8ba4\u90fd\u4f1a\u5f00\u542f\u6301\u4e45\u8fde\u63a5\uff08keep-alive\uff09\uff0c\u90a3\u4e48\u4e00\u4e2a TCP \u8fde\u63a5\u786e\u5207\u5173\u95ed\u7684\u65f6\u673a\uff0c\u662f\u8fd9\u4e2a tab \u6807\u7b7e\u9875\u5173\u95ed\u7684\u65f6\u5019\u3002\u8fd9\u4e2a\u5173\u95ed\u7684\u8fc7\u7a0b\u5c31\u662f",(0,a.kt)("strong",{parentName:"p"},"\u56db\u6b21\u6325\u624b"),"\u3002\u5173\u95ed\u662f\u4e00\u4e2a\u5168\u53cc\u5de5\u7684\u8fc7\u7a0b\uff0c\u53d1\u5305\u7684\u987a\u5e8f\u662f\u4e0d\u4e00\u5b9a\u7684\u3002\u4e00\u822c\u6765\u8bf4\u662f\u5ba2\u6237\u7aef\u4e3b\u52a8\u53d1\u8d77\u7684\u5173\u95ed\uff0c\u8fc7\u7a0b\u5982\u4e0b\u56fe\u6240\u793a\uff1a\n",(0,a.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/15681693/131242424-462d98ac-3e6b-4004-b494-8e29efc584c3.png",alt:"TCP \u56db\u6b21\u6325\u624b"})),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"\u4e3b\u52a8\u5173\u95ed\u65b9\u53d1\u9001\u4e00\u4e2a FIN\uff0c\u7528\u6765\u5173\u95ed\u4e3b\u52a8\u65b9\u5230\u88ab\u52a8\u5173\u95ed\u65b9\u7684\u6570\u636e\u4f20\u9001\uff0c\u4e5f\u5c31\u662f\u4e3b\u52a8\u5173\u95ed\u65b9\u544a\u8bc9\u88ab\u52a8\u5173\u95ed\u65b9\uff1a\u6211\u5df2\u7ecf\u4e0d\u4f1a\u518d\u7ed9\u4f60\u53d1\u6570\u636e\u4e86\uff08\u5728 FIN \u5305\u4e4b\u524d\u53d1\u9001\u51fa\u53bb\u7684\u6570\u636e\uff0c\u5982\u679c\u6ca1\u6709\u6536\u5230\u5bf9\u5e94\u7684 ACK \u786e\u8ba4\u62a5\u6587\uff0c\u4e3b\u52a8\u5173\u95ed\u65b9\u4f9d\u7136\u4f1a\u91cd\u53d1\u8fd9\u4e9b\u6570\u636e\uff09\uff0c\u4f46\u6b64\u65f6\u4e3b\u52a8\u5173\u95ed\u65b9\u8fd8\u53ef\u4ee5\u63a5\u53d7\u6570\u636e\u3002"),(0,a.kt)("li",{parentName:"ol"},"\u88ab\u52a8\u5173\u95ed\u65b9\u6536\u5230 FIN \u5305\u540e\uff0c\u53d1\u9001\u4e00\u4e2a ACK \u7ed9\u5bf9\u65b9\uff0c\u786e\u8ba4\u5e8f\u53f7\u4e3a\u6536\u5230\u5e8f\u53f7+1\uff08\u4e0e SYN \u76f8\u540c\uff0c\u4e00\u4e2a FIN \u5360\u7528\u4e00\u4e2a\u5e8f\u53f7\uff09\u3002"),(0,a.kt)("li",{parentName:"ol"},"\u88ab\u52a8\u5173\u95ed\u65b9\u53d1\u9001\u4e00\u4e2a FIN\uff0c\u7528\u6765\u5173\u95ed\u88ab\u52a8\u5173\u95ed\u65b9\u5230\u4e3b\u52a8\u5173\u95ed\u65b9\u7684\u6570\u636e\u4f20\u9001\uff0c\u4e5f\u5c31\u662f\u544a\u8bc9\u4e3b\u52a8\u5173\u95ed\u65b9\uff0c\u6211\u7684\u6570\u636e\u4e5f\u53d1\u9001\u5b8c\u4e86\uff0c\u4e0d\u4f1a\u518d\u7ed9\u4f60\u53d1\u6570\u636e\u4e86\u3002"),(0,a.kt)("li",{parentName:"ol"},"\u4e3b\u52a8\u5173\u95ed\u65b9\u6536\u5230 FIN \u540e\uff0c\u53d1\u9001\u4e00\u4e2a ACK \u7ed9\u88ab\u52a8\u5173\u95ed\u65b9\uff0c\u786e\u8ba4\u5e8f\u53f7\u4e3a\u6536\u5230\u5e8f\u53f7+1\uff0c\u81f3\u6b64\uff0c\u5b8c\u6210\u56db\u6b21\u6325\u624b\u3002")),(0,a.kt)("h2",{id:"\u53c2\u8003\u8d44\u6599"},"\u53c2\u8003\u8d44\u6599"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("a",{parentName:"li",href:"HTTPS://developer.mozilla.org/en-US/docs/Web/Performance/How_browsers_work"},"How_browsers_work")),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("a",{parentName:"li",href:"HTTPS://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList"},"DOMTokenList")),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("a",{parentName:"li",href:"HTTP://www.ruanyifeng.com/blog/2014/09/illustration-ssl.html"},"\u56fe\u89e3 SSL/TLS \u534f\u8bae ")),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("a",{parentName:"li",href:"HTTPS://zh.wikIPedia.org/wiki/%E5%9F%9F%E5%90%8D%E7%B3%BB%E7%BB%9F"},"DNS \u57df\u540d\u7cfb\u7edf"))))}m.isMDXComponent=!0}}]);