校招面试之计算机网络高频面试题

本文总结了计算机网络在Java面试中常见的高频问题,包括TCP的三次握手和四次挥手、TCP与UDP的区别、TCP的可靠传输机制、HTTP状态码、HTTP报文结构以及HTTPS的密钥交换等。还探讨了HTTP和HTTPS的区别、HTTP缓存机制以及URL跳转网页的过程等知识点,是准备面试的重要参考资料。
摘要由CSDN通过智能技术生成

面试总结

计算机网络是面试Java开发工程师中的常客,平均下来基本上每次面试都会问个三五个,下面这些问题都是一些高频问题了,如果还要说一个更高频的话可能就是TCP的三次握手和四次挥手,URL网页跳转过程以及涉及到的相关协议,HTTPS的密钥交换过程
总的来说计算机网络的问题基本就涵盖在这一块,还是建议有个全面的了解

问题总结与答案整理(仅供参考)

1. TCP三次握手和四次挥手

1.1 TCP三次握手和四次挥手的过程

三次握手:

  • 客户端向服务端发送一个SYN=1的请求报文
  • 服务端向客户端发送一个ACK=1,SYN=1的确认报文
  • 客户端向服务端发送一个ACK=1的确认报文

四次挥手:

  • 客户端发送一个FIN=1的报文,并且停止发送数据
  • 服务端收到报文后,向客户端发送一个ACK=1的确认报文
  • 服务端最后的数据发送完毕后,向客户端发送一个FIN=1的报文,并且停止发送数据
  • 客户端收到后,发回一个ACK=1的确认报文

1.2 为什么TCP建立连接需要三次握手,断开连接需要四次挥手

TCP建立连接需要三次握手的原因在于只有经过三次握手之后客户端与服务端才能都确认自己的发送与接收是正常的

第一次握手:客户端无法确认任何东西,服务端能够确认客户端发送正常,自己接收正常
第二次握手:客户端能够确认自己和服务端均收发正常,服务端依然只能怪确认客户端发送正常,自己接收正常
第三次握手:双方都能确认自己和对方收发正常

断开连接需要四次挥手的原因在于客户端或者服务端在发出连接释放的通知后,只能代表自己没有数据要发送了,而对方有可能还有数据要发送

前两次挥手:只能表明客户端没有数据要发送了,但服务端可能还有数据要发送,所以客户端处于一个半关闭状态
后两次挥手:代表服务端也没有数据要发送了,待客户端确认后即可断开连接

1.3 TCP四次挥手为什么有Time-Wait(等待2MSL)过程

这是为了保证客户端发送的最后一个ACK报文能够到达服务器,因为这个ACK报文可能丢失,站在服务器的角度看来,我已经发送了FIN=1报文请求断开了,客户端还没有给我回应,应该是我发送的请求断开报文它没有收到,于是服务器又会重新发送一次,而客户端就能在这个2MSL(maximum segment lifetime)时间段内收到这个重传的报文,接着给出回应报文,并且会重启2MSL计时器

1.4 TCP如果没有完成第四次挥手会发生什么

服务端发送FIN数据包并携带ACK至客户端之后直接断开连接,如果客户端没有收到这个FIN数据包,那么客户端会一直处于等待关闭状态

1.5 TCP第三次握手可以传输数据吗

可以传输数据,但是会消耗序列号

上述几个问题推荐通过两张动图-彻底明白TCP的三次握手与四次挥手

  • 1
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

miraclewk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值