02_测开八股文

1.linux的常用命令,十个以上

  • cd:切换目录,..(两个点)代表上级目录,~:home目录
  • head/tail -n  10 /etc/profile :查看/etc/profile 的前、后10行内容
  • pwd:查看当前路径
  • ls -al :列出当前目录中的所有目录和文件,包含隐藏文件
  • mkdir/rmdir:创建文件或目录/删除空目录
  • touch:创建空文件
  • cp:复制文件或目录
  • chmod:修改文件或目录的权限 ,其中rwx:r可读:4 ,w可写:2,x可执行:1,第一段的三位:代表拥有者权限,第二段的三位:拥有者所在组的组员的权限,第三段的三位:代表其他用户的权限。
  • find:在文件系统中查找文件
  • rm -rf 文件名:递归删除文件或目录,且不询问
  • cat:查看文件内容
  • tar -zcvf  压缩文件名:压缩文件
  • ps -ef:显示当前正在运行的进程
  • top:显示系统资源的使用情况
  • kill -9 pid:强制终止一个进程
  • netstat -anp:显示网络连接状态
  • ifconfig:显示网络接口配置信息,ip地址
  • ping IP:测试网络连接
  • df -h:显示磁盘空间
  • clear:清屏
  • su 用户名:切换用户名
  •  | :管道符,左侧的命令的结果查找右侧的字符
  • >> :将左侧的命令结果输出到右侧的文件中

2.HTTP的常见状态码

一般分为5大类:

  • 1xx:传递信息,服务器收到请求,需要请求者继续执行操作;
  • 2xx:请求被服务器成功接收并处理
    • 200:客户请求成功;
    • 201:请求成功并创建了新资源;
  • 3xx:重定向,需要客户端进一步操作来完成请求
    • 301:永久重定向,说明请求的资源被永久的移动到新的URL,返回信息会包括新的URL;
    • 302:临时重定向,资源只是临时移动,客户端应继续使用原有的URL;
    • 304:资源自上次请求后未发生变化;
  • 4xx:客户端出现错误,导致请求失败
    • 400:客户端请求的语法错误,服务器无法理解;
    • 401:当前请求需要用户身份验证;
    • 403:服务器已经理解请求,但是拒绝执行它;
    • 404:请求资源不存在,服务器无法根据客户端请求找到资源;
  • 5xx:服务器发生错误,服务器在处理请求的过程中发生了错误
    • 500:服务器内部错误,无法完成请求;
    • 501:服务器不支持该请求方法,无法完成请求;
    • 502:错误网关,从上游服务器收到无效响应;
    • 503:由于超载或者系统维护,服务器无法处理客户端的请求;

3.地址栏输入URL后发生了什么?

会经过DNS解析、TCP连接、HTTP请求、响应数据接收、页面渲染、TCP连接断开等过程。

主要经历:

1.URL解析:浏览器会将用户输入的URL解析为IP地址,首先查询本地HOST,看是否有对应的IP地址,没有就通过DNS服务器查询得到目标服务器的IP地址;

2.建立TCP连接:浏览器向服务器发送请求之前,需要先与服务器建立TCP连接,进行三次握手,确保双方都能够正常通信;

3.发送HTTP请求:浏览器向服务器发送HTTP请求,包括请求行、请求头和请求体等信息,接收响应数据,服务器接收到请求之后,回访响应数据,包括响应行(状态码)、响应头和响应体等信息。

3.渲染页面:当浏览器接收到响应数据后,或根据页面内容,CSS样式和js代码等渲染出可视化页面。

4.断开TCP连接:当浏览器完成页面渲染后,会断开与服务器的TCP连接,释放资源。

4.tcp三次握手,四次挥手的过程

三次握手:本质就是为了保证在不可靠的网络链路中,建立起可靠的连接。

①当客户端向服务端发起连接的时候,会先发syn包连接请求数据,进行询问,能否建立连接;

②如果服务端同意连接,则回复syn+ack包;

③客户端收到之后回复ack包,建立连接。

为什么不是两次握手?

服务端回复完syn+ack之后就建立连接,是为了防止因为已失效的请求报文突然又传到服务端引起错误。

假设采用两次握手建立连接:

  • 客户端向服务端发送了一个syn包,来请求建立连接,因为某些未知的原因并没有到达服务器,在中间某个网络节点产生了滞留,为了建立连接,客户端会重发syn包,这次的数据包正常送达,服务端回复syn+ack之后建立连接;

  • 第一包数据阻塞的网络节点突然恢复,第一包syn包又送达服务端,这时服务端会误认为是客户端又发起了一个新的连接,从而在两次握手之后,进入等待数据状态,服务端认为是两个连接,而客户端认为是一个连接,而造成状态不一致;

  • 如果在三次握手的情况下,服务端收不到最后的ack包,不会认为连接成功。

四次挥手:处于连接状态的客户端和服务端,都可以发起关闭连接请求,这就需要四次挥手来进行连接关闭。

①第一次挥手:假设客户端主动发起连接关闭请求,需要向服务端发起一包FIN包,表示要关闭连接,自己进入终止等待1 状态;

②第二次挥手:服务端收到FIN包之后,发送ACK包,表示自己进入了关闭等待状态,客户端进行终止等待2状态;

③第三次挥手:这时客户端还可以发送未发送的数据,客户端还可以接收数据,待客户端发送完数据之后,服务端发送FIN包,进入最后确认状态;

④第四次挥手:客户端收到之后回复ACK包,进入超时等待状态,经过超时时间后关闭连接,而服务端收到ACK包后,立即关闭连接。

 为什么客户端需要等待超时时间?

为了保证服务端已收到ACK包。保证在不可靠的网络链路中,进行可靠的连接断开确认。

  • 假设客户端发送完最后一包ack后就释放了连接,一旦ack包在网络中丢失,服务端将一直停留在最后确认状态;

  • 假设客户端发送完最后一包ack后,等待一段时间,这时服务端因为没有收到ack包,会重发fin包,客户端会响应这个fin包,重发ack包并刷新超时时间;

为什么要四次挥手?

  • 由于tcp的半关闭特性,任何一方都可以在数据传送结束后,发出连接关闭通知,待对方确认后进入半关闭状态。当另一方也没有数据再发送时,则发出连接关闭的通知,对方确认后就完全关闭了tcp连接。

  • 两次挥手就可以释放一端到另一端的tcp连接,完全释放连接一共需要四次挥手。

5.HTTPS和HTTP的区别?

介绍 :

http:超文本传输协议,被用于web浏览器和网站服务器之间传递信息。

https:安全套接字层超文本传输协议。

主要作用:

①对数据加密,建立信息安全通道保证数据传输的安全。②对网站服务器进行真实身份认证。

两者主要区别:

 ①安全:http是明文传输,不提供任何方式的数据加密,不适合传输一些敏感信息。而https属于“加密传输协议”,在http和TCP之间添加了一个安全协议层(SSL/TLS),来对服务器的身份进行验证并为浏览器和服务器之间的通信加密。https比http更安全。

 ②加密与证书:http协议使用明文传输数据,不进行加密处理,不需要向服务端申请证书;https协议在TCP三次握手阶段之后,需要向认证机构(CA)申请证书,需要费用,协商加密使用的对称加密密钥,浏览器安装对应的证书。

 ③端口:http的端口是80,https的端口是443。

 ④http基于应用层,https基于传输层。

https实现原理:

①客服端使用https的url访问服务器端,请求与服务器建立连接;

②服务器端接收到客户端的请求后,将公钥证书返回给客户端;

③客户端验证公钥证书是否有效,无效显示警告信息,有效则客户端利用伪随机数生成会话密钥,再用服务器端传过来的公钥加密会话密钥,发送给服务器端;

④服务器端利用自己的私钥解密,得到会话密钥,再用会话密钥加密明文内容A发送给了客户端;

⑤客户端使用会话密钥解密发送过来的秘文。

⑥客户端再次发起https请求,使用会话密钥加密请求的内容B,然后服务端使用会话密钥解密。 这样都收到对称密钥以后SSL层连接建立成功。

http的结构:

一个http请求由请求行、请求头、空行、请求数据四部分组成

请求行:请求方法(get/post/head/delete/options/put/trace/connect),请求url,http协议版本号

请求头:user-agent、accept、content-type、host

 

posted on 2023-05-29 11:27  我不想一直当菜鸟  阅读(327)  评论(0编辑  收藏  举报