计算机网络【java面试题】

1、计算机网络中的七层模型以及每一层的作用?

在这里插入图片描述
在这里插入图片描述

OSI七层模型 功能 对应的网络协议
应用层 应用层是网络体系中最高的一层,也是唯一面向用户的一层,也可视为为用户提供常用的应用程序,每个网络应用都对应着不同的协议 HTTP、TFTP, FTP, NFS, WAIS、SMTP
表示层 主要负责数据格式的转换,确保一个系统的应用层发送的消息可以被另一个系统的应用层读取,编码转换,数据解析,管理数据的解密和加密,同时也对应用层的协议进行翻译 Telnet, Rlogin, SNMP, Gopher
会话层 负责网络中两节点的建立,在数据传输中维护计算机网络中两台计算机之间的通信连接,并决定何时终止通信 SMTP, DNS
传输层 是整个网络关键的部分,是实现两个用户进程间端到端的可靠通信,处理数据包的错误等传输问题。是向下通信服务最高层,向上用户功能最底层。即向网络层提供服务,向会话层提供独立于网络层的传送服务和可靠的透明数据传输。 TCP, UDP
网络层 进行逻辑地址寻址,实现不同网络之间的路径选择,IP就在网络层 IP, ICMP, ARP, RARP, AKP, UUCP
数据链路层 物理地址(MAC地址),网络设备的唯一身份标识。建立逻辑连接、进行硬件地址寻址,相邻的两个设备间的互相通信 FDDI, Ethernet, Arpanet, PDN, SLIP, PPP,STP。HDLC,SDLC,帧中继
物理层 七层模型中的最底层,主要是物理介质传输媒介(网线或者是无线),在不同设备中传输比特,将0/1信号与电信号或者光信号互相转化 IEEE 802.1A, IEEE 802.2到IEEE 802

2、TCP、UDP、HTTP首部包括哪些字段

TCP首部包括固定的20个字节以及可变长的部分
UDP首部只有8个字节
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3、TCP三次握手

在这里插入图片描述

(1)第一次握手: Client 将标志位 SYN 置为 1, 随机产生一个值 seq=x, 并将该数据包发送给 Server,Client 进入 SYN_SENT 状态, 等待 Server 确认
(2)第二次握手: Server 收到数据包后由标志位 SYN=1 知道 Client 请求建立连接, Server 将标志位 SYN 和 ACK 都置为 1,ack=x+1, 随机产生一个值 seq=y, 并将该数据包发送给 Client 以确认连接请求, Server 进入 SYN_RCVD 状态
(3)第三次握手: Client 收到确认后, 检查 ack 是否为 x+1,ACK 是否为 1, 如果正确则将标志位 ACK 置为 1,ack=y+1, 并将该数据包发送给 Server,Server 检查 ack 是否为 y+1,ACK 是否为 1, 如果正确则连接建立成功, Client 和 Server 进入 ESTABLISHED 状态, 完成三次握手, 随后 Client 与 Server 之间可以开始传输数据了。

seq是序列号,这是为了连接以后传送数据用的,ack是对收到的数据包的确认,值是等待接收的数据包的序列号。在第一次消息发送中,A随机选取一个序列号作为自己的初始序号发送给B;第二次消息B使用ack对A的数据包进行确认,因为已经收到了序列号为x的数据包,准备接收序列号为x+1的包,所以ack=x+1,同时B告诉A自己的初始序列号,就是seq=y;第三条消息A告诉B收到了B的确认消息并准备建立连接,A自己此条消息的序列号是x+1,所以seq=x+1,而ack=y+1是表示A正准备接收B序列号为y+1的数据包。seq是数据包本身的序列号;ack是期望对方继续发送的那个数据包的序列号。

4、第三次握手的作用,为什么不是两次握手?(为了解决网络信道不可靠的问题)

最后一次握手是为了防止已失效的请求报文突然又传到服务器引起错误。
假设采用两次握手建立连接,客户端向服务器发送一个SYN包请求建立连接,因为某些未知的原因没有到达服务器,在某个网络节点产生了滞留,为了建立连接客户端会重发SYN包,这次的数据包正常送达,服务器回复SYN+ACK后建立了连接。但是第一包数据阻塞的网络节点突然恢复,第一包SYN包又送达到服务端,这次服务端会误认为客户端又发起了新的连接,从而在两次握手后进入了等待数据状态。这种情况多了,就可能会导致服务器瘫痪。【此时进入了死锁状态】服务器认为是两个连接,而客户端认为只有一个连接,造成了状态不一致。
如果是三次握手,服务端收不到最后的ACK包,自然就不会认为连接建立成功,所以三次握手本质上来说,就是为了解决网络信道不可靠的问题。

5、TCP四次挥手

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值