计算机网络面试总结

时延

排队时延+处理时延+传输时延+传播时延

OSI 开放式系统互联

应用层
表示层 数据压缩、加密以及数据描述
会话层 建议及管理会话
传输层 网络层 链路层 物理层

五层协议

应用层 为特定应用程序提供数据传输服务 HTTP DNS
运输层 TCP可靠的 报文段 完整性 |UDP 无连接 尽最大努力 用户数据报 及时性
为主机中的进程提供数据传输服务
网络层 为主机提供数据传输服务
链路层 同一链路的主机提供数据传输服务 循环冗余检验CRC
物理层 传输媒体上传输数据比特流

TCP/IP

应用层 运输层 网际层 网络接口层
TCP 传输控制协议(一种面相连接的、可靠的基于字节流的传输层通信协议)
UDP 用户数据报协议(无需建立连接可以发送封装的IP数据包的方法)
IP 网络层协议 (提高网络的可扩展性 1、 异构网络的互联互通 2、 分割顶层底层网络的耦合关系 )

TCP报文段的首部格式

序号:用于对字节流进行编号
确认号:期望收到的下一个报文段的序号
数据偏移: 首部的长度
确认ACK ACK=1 确认号段有效 TCP规定在连接建议后所有传送的报文段都必须报ACK=1
同步SYN:用于同步序号,SYN=1 ACK=0 连接请求报文段 若同意 则ACK=1
终止FIN :用于释放连接 FIN=1表示此报文段的发送方数据已发送完毕
窗口:作为接收方让发送方设置其发送窗口的依据

TCP 三次握手

1、 服务器处于监听状态,等待客户的连接请求
2、 客户端向服务器发送连接请求报文 SYN=1,ACK=0,选择一个初始序号x
3、 服务器收到连接请求报文,如果同意,向客户端发送确认报文,SYN=1ACK=1,确认号x+1,序号y
4、 客户端收到连接确认报文,还要向B发出确认,确认号y+1,序号为x+1
5、 B收到A确认后 连接确立
三次握手的原因
第三次握手是为了防止失效的连接请求到达服务器,让服务器错误打开连接。同时两次握手,另一方的序列号得不到确认,为了实现可靠的数据传输。

四次挥手

1、客户端发送连接释放报文 FIN=1
2、当服务器收到之后发出确认,此时TCP出于半关闭状态。即服务器可以向客户端发送数据但客户端不能向服务器发送。
3、当服务器不再需要连接时,发送连接释放报文FIN=1
4、当客户端收到后发出确认,进入TIME-WAIT状态(确保最后一个确认报文能够到达、最大报文存活时间)
5、服务器收到确认后释放连接

拥塞控制

TCP 四个算法进行拥塞控制:慢开始、拥塞避免、快重传、快恢复

HTTP请求过程

域名解析 --> 发起TCP的3次握手 --> 建立TCP连接后发起http请求 --> 服务器响应http请求,浏览器得到html代码 --> 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等) --> 浏览器对页面进行渲染呈现给用户

HTTP状态码

在这里插入图片描述
1 请求正在处理
2 请求处理完毕
3 请求重定向需要额外操作
4 服务器无法处理
5 服务器处理出错

Cookie & Session

Cookie 是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器之后向同一服务器再次发起请求时被携带上,用于告知服务端两个请求是否来自同意浏览器。
Session 存储在服务器上的文件、数据库或者内存中,更加安全,也可存储在Redis这种内存型数据库中

HTTP & HTTPS

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。。
HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。
HTTPS:让HTTP先和SSL(Secure Sockets Layer)通信,再由SSL和TCP通信,即使用了隧道进行通信

HTTP 有以下安全性问题:
使用明文进行通信,内容可能会被窃听;
不验证通信方的身份,通信方的身份有可能遭遇伪装;
无法证明报文的完整性,报文有可能遭篡改。

HTTP/1.x & /2.0

HTTP/1.x 实现简单是以牺牲性能为代价的:
客户端需要使用多个连接才能实现并发和缩短延迟;
不会压缩请求和响应首部,从而导致不必要的网络流量;
不支持有效的资源优先级,致使底层 TCP 连接的利用率低下。

HTTP/2.0的优势
HTTP/2.0 在客户端请求一个资源时,会把相关的资源一起发送给客户端,客户端就不需要再次发起请求了。
HTTP/2.0 要求客户端和服务器同时维护和更新一个包含之前见过的首部字段表,从而避免了重复传输。

GET & POST

GET和POST
GET 用于获取资源,而 POST 用于传输实体主体。
GET 和 POST 的请求都能使用额外的参数,但是 GET 的参数是以查询字符串出现在 URL 中,而 POST 的参数存储在实体主体中。由于HTTP是明文传输,只要在网络节点上抓包,就能获取完整的数据报文。
url长度限制仅仅是某些浏览器和服务器的限制,和HTTP协议本身没有关系
GET和POST都是HTTP协议中两种请求方式,而HTTP协议是基于TCP/IP的应用层协议,无论GET和POST,用的都是同一个传输层协议,所以在传输上没有区别
与 POST 相比,GET 更简单也更快,并且在大部分情况下都能用。
然而,在以下情况中,请使用 POST 请求:
无法使用缓存文件(更新服务器上的文件或数据库)
向服务器发送大量数据(POST 没有数据量限制)
发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值