• 面试基础-计算机网络篇



    1.输入 url 到页面呈现的过程

    1)域名解析:www.baidu.com.cn 是网址也是域名,需要对应到iP地址:

    2)浏览器发起HTTP请求;

    3)到了传输层,选择传输协议,TCP或者UDP,TCP是可靠的传输控制协议,对HTTP请求进行封装,加入了端口号等信息;服务器指定端口(HTTP协议80/8080, HTTPS协议443);

    4)通过IP协议将IP地址封装为IP数据报;

    5)ARP协议,主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址,找到目的MAC地址;

    6)数据链路层,把网络层交下来的IP数据报添加首部和尾部,封装为MAC帧,现在根据目的mac开始建立TCP连接,三次握手;

    7)服务器响应请求并请求客户端要的资源,传回给客户端;浏览器解析html代码,并请求HTML代码中的资源;

    8)断开TCP连接;

    9)浏览器对页面进行渲染呈现给用户。



    2.拿到 http 响应后,怎么渲染页面

    浏览器内核拿到内容后,渲染大致分为以下几步:

    (1)解析html,构建DOM树;同时解析CSS,生成CSS规则树。

    (2)合并DOM树和CSS规则树,生成Render树。

    (3)布局Render树(layout/reflow),负责各元素的尺寸,位置计算。

    (4)绘制render树(paint),绘制页面像素信息。

    (5)浏览器会将各层的信息发给GPU。GPU会将各层合成(composite),显示在屏幕上。

    html 的组成,js、css 这些静态文件是存在哪里?

    HTML文档结构一般包括包括标记(Html)、头部(Head)、主体bai(Body)三部分。
    服务器发送请求得到的静态资源是相同的。所以我们可以把静态资源缓存在浏览器



    3.服务端怎么知道发的是 http 请求

    浏览器会向服务器发送请求行,它包括了请求方法、请求 URI(Uniform Resource Identifier)和 HTTP 版本协议。

    如:GET /index.html HTTP1.1

    ftp的格式时: ftp://用户名:密码@FTP服务器IP或域名:FTP命令端口/路径/文件名

    如:ftp://list:list@foolish.6600.org:2003/soft/list.txt



    4.有没有了解高并发

    高并发场景有:淘宝的双11、春运时的抢票、微博大V的热点新闻

    目标:高性能,高可靠,高扩展

    性能也反映了用户体验,响应时间分别是100毫秒
    方法:

    1)提升单机的处理能力:通过增加内存、CPU核数、存储容量、或者将磁盘升级成SSD等堆硬件的方式来提升。

    2)一般会用到架构分层和服务拆分,通过分层做隔离,通过微服务解耦。

    3)把负载(request)均衡分配到不同的服务实例,利用集群的能力去对抗高并发;

    需要做分库分表 + 读写分离。就是把一个库分成多个库,部署在多个数据库服务上,主库承载写请求,从库承载读请求。从库可以挂载多个,因为很多场景写的请求远少于读的请求。



    5.TCP长连接短连接

    长连接:client方与server方先建立连接,连接建立后不断开,然后再进行报文发送和接收。
    这种方式下由于通讯连接一直存在。此种方式常用于P2P通信。

    短连接:Client方与server每进行一次报文收发交易时才进行通讯连接,交易完毕后立即断开连接。
    此方式常用于一点对多点通讯。C/S通信。



    6.cookie和session区别

    Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份.

    禁用cookie:

    如果客户端禁用了cookie,通常有两种方法实现session而不依赖cookie。

    1)URL重写,就是把sessionId直接附加在URL路径的后面。

    2)表单隐藏字段。就是服务器会自动修改表单,添加一个隐藏字段,以便在表单提交时能够把session id传递回服务器。



    7.get和post区别

    从本质上讲,get和post都是http请求,都是tcp连接,是无区别的。

    但是由于get请求的参数位于url中,而post请求的参数位于request body中。

    一是get请求的安全性不如post请求;

    二是get的参数有长度限制,而post没有;

    三是get的参数只允许ASCII字符,post没有限制。

    点击回退或刷新时,post请求会再次提交表单,而get请求不会。所以post是回退有害的,get回退无害。



    8.幂等性什么地方需要用到

    PUT被定义为幂等(idempotent)的方法,POST则不是。

    如果一个网络重复执行多次,产生的效果是一样的,那就是幂等(idempotent)。

    如修改用户密码,虽然提交的还是账户名跟用户密码这个俩个必填参数,但是每次提交都只是更新该用户密码,每次请求都只是覆盖原先的值。此时就该用PUT。

    重复充值,该实现并不能100%保证幂等。

    列举三种改进方式:

    1、悲观锁,select for update,整个执行过程中锁定该订单对应的记录。

    2、乐观锁,affectrows = db.update("update payorder set state='已支付' where orderid=$orderid and state='未支付' "),如果affectrows=1,执行充值,否则返回已处理。

    3、定义notifylog表,orderid为unique key或者primary key,执行前,先insert,若insert成功则执行充值,否则返回已处理。



    9.对web的攻击有什么了解

    SQL注入攻击就是把SQL命令伪装成正常的http请求参数,传递到服务端,欺骗服务器最终执行恶意的SQL命令.



    10.计算机网络的4层结构,每一层的作用以及一些协议

    数据链路层是物理传输通道,可使用多种传输介质传输,可建立在任何物理传输网上。比如光纤、双绞线等;数据链路层包括了硬件接口和协议ARP

    网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。

    传输层:其主要任务是向上一层提供可靠的端到端(End-to-End)服务,确保“报文”无差错、有序、不丢失、无重复地传输。
    TCP :负责数据的可靠传输(“三次握手”-建立连接、数据传送、关闭连接)。
    UDP:和TCP相比,数据传输的可靠性低,适合少量的可靠性要求不高的数据传输。

    应用层:应用层确定进程间通信的性质,以满足用户的需要。
    FTP(File Transfer Protocol):文件传输协议;
    HTTP(Hyper Text Transfer Protocol):超文本传输协议



    11.https连接过程

    http与https的区别

    1)http协议:是超文本传输协议,信息是明文传输。如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息。

    https协议:是具有安全性的ssl加密传输协议,为浏览器和服务器之间的通信加密,确保数据传输的安全。

    2)http协议:使用的端口是80。

    https协议:使用的端口是443.

    3)证书申请方式不同。

    http协议:免费申请。

    https协议:需要到ca申请证书,一般免费证书很少,需要交费。



    12.CA证书是怎么保证可靠性的

    1.JPG



    13.为什么对话密钥要用对称密钥

    对称加密实质上指的就是加、解密使用的同是一串密钥,所以被称做对称加密。对称加密只有一个密钥作为私钥。



    14.http的无状态

    每一个访问都是无连接,服务器挨个处理访问队列里的访问,处理完一个就关闭连接;

    无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。

    web=http协议+状态机制+其他机制



    15.介绍http协议

    http(超文本传输协议)就是在多台网络设备之间传输 文字、图片、音视频 等超文本内容的具体规范和约定。



    http响应报文/请求报文格式

    • 请求报文格式

    请求行、请求头部、空行 和 请求包体4 个部分组成,

    请求行:方法字段、URL 字段 和HTTP 协议版本字段

    请求头部:Cookie,Host:请求的主机名等等

    • 响应报文

    状态行:状态行由 HTTP 协议版本字段、状态码和状态码的描述文本 3 个部分组成,他们之间使用空格隔开;

    状态码由三位数字组成,第一位数字表示响应的类型,常用的状态码有五大类如下所示:

    1xx:表示服务器已接收了客户端请求,客户端可继续发送请求;

    2xx:表示服务器已成功接收到请求并进行处理;

    3xx:表示服务器要求客户端重定向;

    4xx:表示客户端的请求有非法内容;

    5xx:表示服务器未能正常处理客户端的请求而出现意外错误;



    16.IP地址和MAC地址

    MAC地址是物理地址,IP地址是逻辑地址。MAC地址是不可改变的,IP地址是可以更改的;

    IP地址的分配是基于网络拓扑,MAC地址的分配是基于制造商;



    17.tcp流量控制

    对发送方发送速率的控制,我们称之为流量控制。接收方每次收到数据包,可以在发送确定报文的时候,同时告诉发送方自己的缓存区还剩余多少是空闲的,我们也把缓存区的剩余大小称之为接收窗口大小,当发送方收到接受窗口 win = 0 时,这时发送方停止发送报文,并且同时开启一个定时器,每隔一段时间就发个测试报文去询问接收方,打听是否可以继续发送数据了.



    18.tcp拥塞控制

    拥塞控制,控制的目的就是避免「发送方」的数据填满整个网络。

    (1)TCP 在刚建立连接完成后,首先是有个慢启动的过程,这个慢启动的意思就是一点一点的提高发送数据包的数量,即加大拥塞窗口;

    (2)当拥塞窗口 cwnd 「超过」慢启动门限 ssthresh 就会进入拥塞避免算法;每当收到一个 ACK 时,cwnd 增加 1/cwnd;

    (3)数据量增长以后,网络可能出现拥塞,当网络出现拥塞,也就是会发生数据包重传,当触发了重传机制,也就进入了「拥塞发生算法」
    快速重传,当接收方发现丢了一个中间包的时候,发送三次前一个包的 ACK,于是发送端就会快速地重传, 其实也是修改门限值和拥塞窗口ssthresh 和 cwnd,让他们变小;

    快速重传和快速恢复算法一般同时使用,快速恢复算法是认为,你还能收到 3 个重复 ACK 说明网络也不那么糟糕,所以没有必要像 RTO 超时那么强烈。

  • 相关阅读:
    Anytime Stereo Image Depth Estimation on Mobile Devices论文阅读笔记
    PSPNet论文阅读笔记
    阅读笔记Underexposed Photo Enhancement using Deep Illumination Estimation
    论文阅读笔记之Replacing Mobile Camera ISP with a Single Deep Learning Model
    Learning to See in the Dark论文阅读笔记
    机器安装不同版本的cuda
    Cycle-GAN论文阅读笔记
    EnlightenGAN: Deep Light Enhancement without Paired Supervision论文阅读笔记
    Homography Based Egomotion Estimation with a Common Direction论文解读
    homography分解为R和t的matlab实现
  • 原文地址:https://www.cnblogs.com/Superorange/p/14650518.html
Copyright © 2020-2023  润新知