计算机网络

1. 网络分层结构

        计算机网络体系大致分为三种,OSI 七层模型、TCP/IP 四层模型和五层模型。一般面试的时候考察比较 多的是五层模型。
 

  1. OSI七层模型:

OSI模型是ISO组织制定的网络通信协议参考模型,包括七个层次:

  • 物理层(Physical layer):负责传输比特流,以及定义电缆、网卡等物理特性。
  • 数据链路层(Data Link layer):
    在两个相邻节点之间传送数据时, 数据链路层将网络层交下来的 IP 数据报组装成
    ,在两个相邻节点间的链路上传送帧。
  • 网络层(Network layer):负责实现网络间的路由和寻址,将数据包发送到目的地。
  • 传输层(Transport layer):负责提供端到端的可靠数据传输,包括TCP和UDP协议。
  • 会话层(Session layer):负责建立、维护和断开会话连接。
  • 表示层(Presentation layer):负责数据的编码、加密、解密和压缩。
  • 应用层(Application layer):提供应用程序与网络之间的接口,包括FTP、SMTP、HTTP等协议
  1. TCP/IP四层模型:

TCP/IP模型是互联网标准的网络协议参考模型,包括四个层次:

  • 网络接口层(Network Interface layer):负责处理物理层和数据链路层,包括ARP、RARP等协议。
  • 网络层(Internet layer):负责实现IP协议,处理数据包的路由和寻址。
  • 传输层(Transport layer):提供端到端的可靠数据传输,包括TCP和UDP协议。
  • 应用层(Application layer):提供应用程序与网络之间的接口,包括FTP、SMTP、HTTP等协议。

  1. 五层模型:

五层模型是在TCP/IP模型基础上发展起来的,将应用层分为两个层次:

  • 物理层(Physical layer):负责传输比特流,以及定义电缆、网卡等物理特性。
  • 数据链路层(Data Link layer):
    在两个相邻节点之间传送数据时, 数据链路层将网络层交下来的 IP 数据报组装成
    ,在两个相邻节点间的链路上传送帧。
  • 网络层(Internet layer):负责实现IP协议,处理数据包的路由和寻址。
  • 传输层(Transport layer):提供端到端的可靠数据传输,包括TCP和UDP协议。
  • 应用层(Application layer):提供应用程序与网络之间的接口,包括FTP、SMTP、HTTP等协议。

2. 三次握手 

三次握手是指在TCP/IP协议中,建立一个TCP连接时,需要客户端和服务器之间交换三个包(数据段)以确认连接的建立。这三个包分别是SYN(同步序列编号)、SYN-ACK(同步序列编号和确认编号)和ACK(确认)。

具体来说,建立TCP连接的过程如下:

  1. 客户端向服务器发送一个SYN包,表示请求建立连接,并随机生成一个初始序列号(ISN)。
  2. 服务器接收到SYN包后,发送一个SYN-ACK包作为响应,其中SYN位被设置为1,ACK位也被设置为1,确认号(ACK)为客户端的ISN+1,同时服务器也随机生成一个ISN。
  3. 客户端接收到服务器的SYN-ACK包后,发送一个ACK包,确认收到服务器的响应,并将确认号设置为服务器的ISN+1。

这样,客户端和服务器就完成了连接的建立,可以开始进行数据传输了。

三次握手的目的是确保双方的序列号和确认号都是对方期望的,并且可以防止已经失效的连接请求报文段突然又传送到了服务端,从而导致错误。

3. 两次握手可以吗?

第三次握手主要为了防止已失效的连接请求报文段突然又传输到了服务端,导致产生问题。
比如客户端 A 发出连接请求,可能因为网络阻塞原因, A 没有收到确认报文,于是 A 再重传一次连接
请求。
连接成功,等待数据传输完毕后,就释放了连接。
然后 A 发出的第一个连接请求等到连接释放以后的某个时间才到达服务端 B ,此时 B 误认为 A 又发出
一次新的连接请求,于是就向 A 发出确认报文段。
如果不采用三次握手,只要 B 发出确认,就建立新的连接了, 此时 A 不会响应 B 的确认且不发送数
据,则 B 一直等待 A 发送数据,浪费资源。

4. 四次挥手

"四次挥手"(Four-way handshake)是指TCP/IP协议中,终止一个已建立的连接的过程。

1当一方希望终止连接时,它会发送一个FIN报文段,表示数据传输完成。

2另一方接收到FIN报文段后,会发送一个ACK报文段,表示已经接收到FIN报文段。

3但是这个时候还不能直接关闭连接,因为还可能有未发送的数据,需要先将这些数据传输完成。当所有数据传输完成后,另一方会发送一个FIN报文段,表示数据传输完成。

4第一方接收到FIN报文段后,会发送一个ACK报文段,表示已经接收到FIN报文段,这个时候才能真正关闭连接。

因此,"四次挥手"指的是一方发送FIN报文段、另一方发送ACK报文段、另一方发送FIN报文段、第一方发送ACK报文段的这个过程。这个过程确保了数据能够完整地传输完成,并且双方都知道对方已经完成了数据传输,可以安全地关闭连接。

5. 第四次挥手为什么要等待2MSL?

在这个过程中,为了保证数据能够完全传输,需要等待一段时间,这段时间被称为 2MSL(Maximum Segment Lifetime),即最长报文段寿命。这是因为在网络中,数据包可能会因为各种原因丢失或延迟到达,如果在一方发送了最后一个 ACK 报文段后立即关闭连接,那么可能会出现对服务器端没有收到这个 ACK 报文段的情况,从而导致连接没有被完全关闭,这被称为“时钟偏移”问题。

为了避免这种问题,TCP 协议规定,在最后一个 ACK 报文段发送出去后,需要等待 2MSL 的时间,以确保在这段时间内,网络中所有可能的延迟报文都能够被接收方接收到。这样,即使存在时钟偏移问题,也能够保证连接能够完全关闭。

7. TCP有哪些特点?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值