计算机网络复习

计算机网络复习

1、请简要介绍一下计算机网络五层模型

2、在浏览器中输入一个网址,到页面显示出来都发生了什么?请尽可能详细的进行说明。

在浏览器中输入一个网址,首先要做的就是域名的解析,也就是域名到ip的解析,依次查看了浏览器缓存,系统缓存,hosts文件,路由器缓存,递归搜索根域名服务器,直到找到最终的ip地址。

然后就是TCP协议的三次握手建立连接,过程就是:由浏览器发送一个HTTP请求;经过路由器的转发,然后通过服务器的防火墙,该HTTP请求到达了服务器;服务器处理该HTTP请求,返回一个HTML文件,浏览器解析该HTML文件,并且渲染显示在浏览器端。

3、get和post的区别

  • get一般用来从服务器上查询获取资源,post一般用来更新服务器上的资源
  • get方法将参数直接拼接在了URL后边,明文显示,可以通过浏览器地址栏直接访问
  • post请求用于提交表单,数据不是明文的,安全性更高
  • get请求有长度限制,post请求没有

4、TCP和UDP的区别是什么?

  • TCP协议进行数据通信之前需要三次握手建立连接,UDP协议不需要建立连接即可发送数据
  • TCP有确认机制,丢包可以重发,保证数据的正确性;UDP不保证正确性,只是单纯的进行发包
  • TCP协议可能会对大数据包进行拆分,并且在接收方进行重组数据包操作;UDP协议是面向报文的,不会进行分片和重组,所以需要注意传输的报文大小
  • 网络包中的TCP头部为20个字节;UDP头部只有8个字节

5、请简要介绍一下TCP三次握手和四次挥手的过程

![image-20220316142917845](/Users/weiyifeng/Library/Application Support/typora-user-images/image-20220316142917845.png)

![image-20220316142851332](/Users/weiyifeng/Library/Application Support/typora-user-images/image-20220316142851332.png)

6、请简要介绍一下TCP拥塞控制机制

当网络中的资源供应不足,网络的性能就会明显的变坏,整个网络的吞吐量随着负荷的增大而下降。也就是说对资源的需求超过了可用的资源,因为传输数据是需要资源的。

拥塞控制:防止过多的数据注入到网络中,使得网络中的路由器或链路不至于过载

拥塞避免算法主要有如下两种:

  • 慢启动+拥塞避免
  • 快重传+快恢复

8、TCP如何实现可靠的数据传输?

9、请简要介绍一下OSI七层模型,各层都有哪些协议?

10、TCP粘包现象原因及解决办法

TCP粘包是指一种发送方发送的数据包在接收方的缓冲区中粘成了一包,也就是出现了数据包首尾相接的现象。产生这种现象的原因主要是发送方使用了Nagle算法,或者接收方的处理速度小于数据包的接受速度,导致接受缓冲区中消息堆积。

可以通过关闭Nagle算法或者规定每个数据包的具体格式和长度,在接收方的应用层来进行判断;

还有UDP是不会产生粘包现象的,因为数据包之间具有明确的消息保护边界。

11、TCP三次握手过程以及每次握手后的状态改变,为什么三次?为什么两次不行?

第一步:首先客户端发出一个SYN包,然后进入SYN_SENT(同步已发送)状态,等待服务器端的回应;

第二步:服务器端的TCP收到连接请求报文段之后,如果同意建立连接,则向客户机发送确认,SYN+ACK,这时服务器进入SYN_RCVD(同步收到)状态;

第三步:当客户机收到确认报文之后,还要向服务器发送确认数据,即确认报文段ACK,客户机就会进入ESTABLISHED(已建立连接)状态,当服务器端收到该确认报文之后,则由STV_RCVD状态转换为ESTABLISHED(已建立连接)状态。

加入只有前面两次握手,那么服务端收到SYN并且发出SYN+ACK的包之后就会处于工作状态。但是这个包可能已经卡了很久或者被客户端抛弃了,如果服务端突然收到了一个来自客户端的SYN包,那么服务端发出了一个SYN+ACK包后就处于了工作,客户端收到了SYN+ACk之后表示这是什么东西,情绪淡定,但是服务端这个时候已经处于工作状态了,这样就会造成资源的浪费。

12、TCP四次挥手过程以及状态改变,为什么四次?CLOSE-WAIT和TIME-WAIT存在的意义?如何查看TIME-WAIT状态的链接数量?为什么会TIME-WAIT过多?解决方法是怎样的?

第一步:当客户机打算关闭连接的时候,向其TCP发送连接释放报文段,并停止发送数据,客户机发送了一条FIN报文,并且从ESTABLISHED状态转换为FINWAIT-1状态

第二步:服务器收到连接报文之后发送ACK数据包,然后服务器进入CLOSE-WAIT(关闭等待)状态

第三步:若服务器已经没有要想客户机发送的数据,就通知TCP释放连接,此时其发出FIN的连接释放报文段。这时服务器进入LAST-ACK(最后确认)状态

第四步:客户机收到连接释放报文段之后,必须发出确认,把确认报文段内的ACK置1,此时TCP还未释放,必须经过时间等待器设置的时间2MSL(最长报文段寿命)后,客户机才进入CLOSED(连接关闭)状态。


根据状态流程图,我们可以看出服务器端响应断开连接的请求时,其ACK和FIN包不是一起发送给客户端的,因为第一次由客户端到服务器端的FIN信号表示的是客户端想要断开连接。服务器端先给出ACK确认信号,表示已经收到了FIN请求,然后当自己也可以结束的时候,再次放松FIN信号,所以需要四次挥手操作。


后面的三个问题还没补全>

14、HTTP和HTTPS的区别

1⃣️ http 和 https的主要区别可以总结如下:

  • http是超文本传输协议,数据明文传输,https在http的基础上加入了ssl协议,实现数据的加密传输
  • https需要区申请证书,一般是收费的
  • http默认使用80端口,https默认使用443端口
posted @ 2022-03-22 09:46  yfwei  阅读(39)  评论(0编辑  收藏  举报