ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

面试基础-计算机网络篇

2021-04-12 22:03:23  阅读:131  来源: 互联网

标签:协议 http 请求 报文 基础 计算机网络 面试 服务器 连接


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 超时那么强烈。

标签:协议,http,请求,报文,基础,计算机网络,面试,服务器,连接
来源: https://www.cnblogs.com/Superorange/p/14650518.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有