Java教程

计算机网络汇总

本文主要是介绍计算机网络汇总,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

面试题汇总

计算机网络

1、OSI七层模型分别是什么?各自功能是什么?TCP/IP四层模型?

OSI七层:

物理层---底层数据传输,如网线;网卡标准

数据链路层---定义数据的基本格式,如何传输,如何标识;如网卡MAC地址

网络层---定义IP编址,定义路由功能;如不同设备的数据转发

传输层---端到端传输数据的基本功能;如TCP UDP

会话层---控制应用程序之间会话能力;如不同软件数据分发给不同软件

表示层---数据格式标识,基本压缩加密功能

应用层---各种应用软件;包括web应用

TCP/IP四层:

数据链路层、网络层、传输层、应用层

总结

网络七层模型是一个标准,而非实现。

网络四层模型是一个实现的应用模型。

网络四层模型有七层模型简化合并而来。

2、三次握手(建立TCP连接)

三次握手

【作用是为了确认双方的接受与发送能力是否正常】

刚开始客户端处于closed的状态,服务端处于listen状态。

1、第一次握手:客户端给服务端发送一个SYN报文,并指明客户端的初始化序列号ISN,此时客户端处于SYN_send状态。

2、第二次握手:服务端接口到客户端的SYN报文之后,会以自己的SYN报文作为应答,并且也指定了自己的初始化序列号ISN,同时会把客户端的ISN+1作为ACK的值,表示已经接收到了客户端的SYN,此时服务端处于SYN_RCVD的状态。

3、第三次握手:客户端收到服务端的SYN后,会发送一个ACK报文,当然也是把服务器的ISN+1作为ACK的值,表示已经收到了服务端的SYN报文,此时客户端处于established状态。

4、服务器收到ACK报文之后,也处于established状态,此时,双方建立起连接

三次握手作用

  • 确认双方的接收和发送功能正常
  • 指定初始化序列号,为后面的可靠性传输做准备

ISN固定吗?

ISN是动态生成的

固定容易暴露确认号,不安全,容易受到攻击

半连接队列?全连接队列?

半连接队列:服务器第一次收到客户端的SYN,处于SYN_RCVD状态,此时双方还没完全建立连接,服务器会把此种状态下的请求连接放在一个队列中,此队列称之为半连接队列

全连接队列:已经完成三次握手,建立起的连接就会放在全连接队列中。如果全连接队列满了,会存在丢包的状态

SYN+ACK重传:服务器发送SYN+ACK后,未收到客户端的确认包,会有等待重试机制,当重试超多规定次数,系统将该连接信息从半连接队列中删除

三次握手过程中可以携带数据吗?

第一次和第二次不可以,容易受到攻击,

第三次可以携带数据,从客户端的角度 双方的接收与发送工能正常,所以携带数据页应该没啥问题

3、四次挥手(释放TCP连接)

刚开始双方都处于 establised 状态,假如是客户端先发起关闭请求,则:

1、第一次挥手:客户端发送一个 FIN 报文,报文中会指定一个序列号。此时客户端处于FIN_WAIT1状态。

2、第二次挥手:服务端收到 FIN 之后,会发送 ACK 报文,且把客户端的序列号值 + 1 作为 ACK 报文的序列号值,表明已经收到客户端的报文了,此时服务端处于 CLOSE_WAIT状态。

3、第三次挥手:如果服务端也想断开连接了,和客户端的第一次挥手一样,发给 FIN 报文,且指定一个序列号。此时服务端处于 LAST_ACK 的状态。

4、第四次挥手:客户端收到 FIN 之后,一样发送一个 ACK 报文作为应答,且把服务端的序列号值 + 1 作为自己 ACK 报文的序列号值,此时客户端处于 TIME_WAIT 状态。需要过一阵子以确保服务端收到自己的 ACK 报文之后才会进入 CLOSED 状态

5、服务端收到 ACK 报文之后,就处于关闭连接了,处于 CLOSED 状态。

  • TIME_wait状态

    客户端发送ACK之后不直接关闭,而是要等一会关闭,一般等待时间至少是一个报文的来回时间

    等待原因:要确保服务器是否已经收到客户端的ACK报文,如果没有收到,服务端会重发FIN报文,客户端收到FIN报文之后知道之前ACK丢失,重发ACK

4、TCP和UDP区别,应用场景

区别:

TCP是可靠传输,UDP是不可靠传输

TCP面向连接 UDP无连接

TCP传输数据有序 UDP不保证数据的有序性

TCP传输速度相对UDP较慢

TCP有流量控制和拥塞控制 UDP没有

TCP重量级协议 UDP是轻量级协议

TCP不保存数据边界 UDP保存数据边界

TCP首部较长20字节 UDP首部较短8字节

TCP应用场景

效率要求相对低,但对准确性要求相对搞的场景。

e.g.文件传输、远程登录等

UDP应用场景

效率要求相对到,对准确性要求相对低的场景。

e.g.在线视频、网络语音通话、qq聊天等

TCP可靠性原理

  • 首先,采用三次握手建立TCP连接,四次挥手释放TCP连接,从而保证建立的传输通道是可靠的
  • 其次,TCP采用了连续ARQ协议(回退N,go-back-N;超时自动重传)来保证数据传输正确性,使用滑动窗口协议来保证接方能够及时处理所接受到的数据,进行流量控制。
  • 最后,TCP使用慢开始、拥塞避免、快重传和快恢复来进行拥塞控制,避免网络拥塞

ARP协议工作原理

网络层的APR协议完成了IP地址与物理地址MAC地址的映射。

每天主机都会在自己ARP缓冲区建立一个ARP列表,表示IP地址和MAC地址的对应关系。当源主机将一个数据包发送给目的主机时,先检查自己的ARP列表是否存在这个IP,存在直接将数据包发送到这个MAC地址;如果没有,就向本地网段发起一个ARP请求的广播,查询此目的主机的MAC地址。网络中所有的主机收到这个ARP请求后,会检查数据包中IP是否和自己IP地址一致,如果不想通就忽略此数据包,如果相同,先添加到自己的ARP列表中,若之前此IP存在则直接覆盖,然后给源主机发送一个ARP响应数据包。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。

5、cookie和session区别?

这篇关于计算机网络汇总的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!