Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

网络协议 —— 一名【合格】前端工程师的自检清单答案整理 #10

Open
akeymo opened this issue Feb 6, 2020 · 0 comments

Comments

@akeymo
Copy link
Owner

akeymo commented Feb 6, 2020

网络协议

理解什么是协议,了解TCP/IP网络协议族的构成,每层协议在应用程序中发挥的作用

协议

计算机与网络设备要相互通信,双方就必须基于相同的方法。不同的硬件、操作系统之间的通信,所有的这一切都需要一种规则,而我们就把这种规则称为协议。

TCP/IP网络协议族的构成及每层协议的作用

TCP/IP协议族按层次自上而下分别分为:应用层、传输层、网络层和数据链路层。

  • 应用层: 决定了向用户提供应用服务时的通信活动。FTP文件传输协议、DNS域名系统、HTTP协议就是属于该层的应用服务。
  • 传输层: 对上层应用层,提供处于网络连接中的两台计算机之间的数据传输。TCP传输控制协议和UDP用户数据报协议处于该层。
  • 网络协议: 处理在网络上流动的数据包。该层规定了通过怎样的路径(所谓的传输路线)到达对方计算机,并把数据包传送给对方。与对方计算机之间通过多台计算机或网络设备进行传输时,网络层所起的作用就是在众多的选项内选择一条传输路线。
  • 数据链路层: 用来处理连接网络的硬件部分。

三次握手和四次挥手详细原理,为什么要使用这种机制

三次握手

image

  • 第一次握手: 起初两端都处于CLOSED关闭状态,A(Client)将标志位SYN置为1,随机产生一个值seq=x,并将该数据包发送给B(Server),A(Client)进入SYN-SENT状态,等待B(Server)确认。
  • 第二次握手: B(Server)收到连接请求报文段后,如同意建立连接,则向A(Client)发送确认,在确认报文段中(SYN=1ACK=1,确认号ack=x+1,初始序号seq=y),B(Server)TCP服务器进程进入SYN-RCVD(同步收到)状态。
  • 第三次握手: TCP客户进程收到B(Server)的确认后,要向B(Server)给出确认报文段(ACK=1,确认号ack=y+1,序号seq=x+1)(初始为seq=x,第二个报文段所以要+1),ACK报文段可以携带数据,不携带数据则不消耗序号。TCP连接已经建立,A进入ESTABLISHED(已建立连接)。

四次挥手

image

  • A的应用进程先向其TCP发出连接释放报文段(FIN=1,序号seq=u),并停止再发送数据,主动关闭TCP连接,进入FIN-WAIT-1(终止等待1)状态,等待B的确认。
  • B收到连接释放报文段后即发出确认报文段,(ACK=1,确认号ack=u+1,序号seq=v),B进入CLOSE-WAIT(关闭等待)状态,此时的TCP处于半关闭状态,A到B的连接释放。
  • A收到B的确认后,进入FIN-WAIT-2(终止等待2)状态,等待B发出的连接释放报文段。
  • B没有要向A发出的数据,B发出连接释放报文段(FIN=1ACK=1,序号seq=w,确认号ack=u+1),B进入LAST-ACK(最后确认)状态,等待A的确认。
  • A收到B的连接释放报文段后,对此发出确认报文段(ACK=1seq=u+1ack=w+1),A进入TIME-WAIT(时间等待)状态。此时TCP未释放掉,需要经过时间等待计时器设置的时间2MSL后,A才进入CLOSED状态。

有哪些协议是可靠,TCP有哪些手段保证可靠交付

为位于传输层的TCP协议,为了保证数据的可靠交付,采用了三次握手策略。

DNS的作用、DNS解析的详细过程,DNS优化原理

作用

DNS协议提供通过域名查找IP地址,或逆向从IP地址反查域名的服务

解析过程

  1. 请求信息: 当你要求计算机解析一个主机名,你的电脑首先看到的是它的本地DNS缓存, 该缓存存储计算机最近检索到的信息。如果你的计算机还是不知道答案, 那就需要执行一个DNS查询来找出答案。
  2. 询问递归式DNS服务器: 如果信息不存储在本地, 计算机联系你的ISP(网络服务提供商)的递归DNS服务器,递归服务器有它们自己的缓存,这些专用计算机为你执行一个DNS查询工作,并将信息返回给用户。
  3. 询问根域名服务器: 如果递归服务器没有答案, 他们就会查询根域名服务器。 根域名服务器是一种计算机,它可以回答相关域名的问题, 如IP地址。 13个根域名服务器扮演着一种DNS的电话接线员的角色。他们不知道答案, 但可以将我们的疑问指向知道在哪里可以找到答案的人。
  4. 询问TLD域名服务器: 根域名服务器将查看请求的第一部分, 按从右到左的顺序,从www.baidu.com找到.com, 并将请求指向.com对应的顶级域服务器(TLD).com,每个TLD, 例如.com.org,拥有自己的顶级域名服务器,就像每个TLD的接线员。 这些服务器没有我们需要的信息, 但是他们可以直接将我们引导到有信息的服务器。
  5. 询问权威的DNS服务器: TLD域名服务器会继续检查请求的下一部分(baidu)www.baidu.com,并将查询指向负责此特定域名的服务器。 这些权威的服务器将负责了解关于特定域的所有信息,并将信息存储在DNS记录中。
  6. 找回记录: 递归服务器从权威服务器中检索baidu.com的记录,并将记录存储在本地缓存中。 如果其他任何人请求baidu.com的主机记录,递归服务器将已经有了答案,并且不需要再次进行查找。 所有的记录都有一个时间到现场的价值,这就像一个过期日期。 一段时间后,递归服务器将需要要求一个新的记录副本,以确保信息不会过时。
  7. 接受答案: 有了这个答案, 递归服务器将记录返回到计算机。 你的计算机将记录存储在其缓存中,从记录中读取IP地址,然后将这些信息传递给浏览器。 然后浏览器打开一个连接到网络服务器并接收网站。

CDN的作用和原理

作用

CDN即内容分发网络。它通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络边缘,使用户可以就近取得所需的内容,解决Internet网络拥塞状况,提高用户访问网站的响应速度。

原理

  • 用户输入访问的域名,操作系统查询本地DNS
  • 假设本地DNS没有缓存记录,向根DNS查询
  • 根DNS根据域名指向对应的顶级DNS
  • 顶级DNS根据域名查找对应的权威DNS
  • 权威DNS返回CNAME给本地DNS
  • 本地DNS向智能调度DNS查询域名的IP地址
  • 智能调度DNS根据一定的算法和策略,将最适合的CDN节点IP地址返回给本地DNS
  • 本地DNS返回IP给客户端
  • 用户得到IP地址后,访问站点服务器
  • CDN节点服务器应答请求,将内容返回给客户端。缓存服务器一方面在本地进行保存,以备以后使用,另一方面把获取的数据返回给客户端,完成数据服务过程

HTTP请求报文和响应报文的具体组成,能理解常见请求头的含义,有几种请求方式,区别是什么

请求报文的具体组成

  • 请求行:包含用于请求的方法、请求URIHTTP版本
  • 首部字段:包含表示请求的各种条件和属性的各类首部。一般有通用首部、请求首部、实体首部
  • 其他:可能包含HTTPRFC里未定义的首部

响应报文的具体组成

  • 状态行:包含表示响应结果的状态码、原因短语和HTTP版本
  • 首部字段:包含表示响应的各种条件和属性的各类首部。一般有通用首部、响应首部、实体首部
  • 其他:可能包含HTTPRFC里未定义的首部

请求方式

  • GET:请求一个指定资源的表示形式。只被用于获取数据
  • HEAD:请求一个与GET请求的响应相同的响应,但没有响应体
  • POST:用于将实体提交到指定的资源,通常导致在服务器上的状态变化或副作用
  • PUT:用请求有效载荷替换目标资源的所有当前表示
  • DELETE:删除指定的资源
  • CONNECT:建立一个到由目标资源标识的服务器的隧道
  • OPTIONS:用于描述目标资源的通信选项
  • TRACE:沿着到目标资源的路径执行一个消息环回测试
  • PATCH:用于对资源应用部分修改

HTTP所有状态码的具体含义,看到异常状态码能快速定位问题

image

HTTPS的加密原理

HTTPS是在HTTP协议的基础上,将通信接口部分用SSL(安全套接层)和TLS(安全层传输协议)代替,HTTP先和SSL通信,再由SSLTCP通信。

  • 客户端申请HTTPS通信
  • 服务器响应并向客户端传递证书
  • 客户端验证证书,获取公钥,生成对称加密密钥,用公钥加密后传给服务器
  • 服务器收到消息,用私钥解密,拿出对称密钥,并通知客户端。SSL通道建立完成,HTTPS通信也建立完成
  • 共享密钥交换成功,HTTPS通信建立后,客户端和服务器利用共享密钥加密通信

理解WebSocket协议的底层原理、与HTTP的区别

区别

  • HTTP协议必须经过三次握手才能建立连接。分为短连接和长连接,短连接每次请求都需要经过三次握手才能发送自己的信息;长连接是在一定的期限内保持连接。客户端与服务器通信,必须由客户端发起服务器返回结果。
  • WebSocket是全双工通信,客户端和服务端可以同时发送信息,服务端也有主动权。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant