常见Java笔面试题集(六)

本文深入探讨了HTTP与HTTPS的区别,三次握手与四次挥手的原理,TCP与UDP的特性对比,以及TCP如何确保传输可靠性。同时,文章还介绍了TCP的拥塞控制机制,TCP与UDP对应的协议,ICMP与DHCP协议的基本概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

常见Java笔面试题集(六)

1.Http和Https的区别是什么?

答:Http协议运行在TCP之上,明文传输,客户端与服务器都无法验证对方的身份;Https是身披SSL(Secure Socket Layer)外壳的Http,运行于SSL上,SSL运行在TCP之上,是添加了加密认证和认证机制的Http。二者区别如下:

       端口不同:Http和Https使用不同的连接方式,使用的端口也不一样,Http端口是80,Https端口是443。

       资源消耗:和Http相比,Https通信会由于加密处理消耗更多的CPU和内存资源。Https的加密机制是一种共享密钥加密和公开密钥加密并用的混合加密机制。Https需要证书,而证书一般需要向认证机构购买。

2.解释下三次握手与四次挥手

答:三次握手:

       第一次握手:客户端将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给服务器端,客户端进入SYN_SENT状态,等待服务器端确认。

       第二次握手:服务器端收到数据包后由标志位SYN=1,知道客户端请求建立连接,服务器端将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将数据包发送给客户端以确认连接请求,服务器端进入SYN_RCVD状态。

       第三次握手:客户端收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给服务器端,服务器端检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,客户端与服务器端进入ESTABLISHED状态。完成三次握手。

四次挥手:

  • 第一次挥手,客户端发送一个FIN,用来关闭客户端与服务器端的数据传送,客户端进入FIN_WAIT_1状态。
  • 第二次挥手,服务器端收到FIN后,发送一个ACK给客户端,服务器端进入CLOSE_WAIT状态。此时TCP连接处于半关闭状态,及客户端不在发送数据,但若服务器端要发送数据,客户端仍要接收。
  • 第三次挥手,服务器端发送一个FIN,用来关闭服务器端到客户端的连接,服务器端进入LAST_ACK状态。
  • 第四次挥手,客户端收到FIN后,客户端进入TIME_WAIT状态,接着发送一个ACK给服务器端,服务器端进入CLOSED状态,完成四次挥手。

3.为什么TCP需要三次握手才能建立连接?

答:为了防止已失效的连接请求报文突然又传送到服务器端,因而产生错误连接。客户端发出的连接请求报文并未丢失,而是在某个网络节点长时间滞留,以致延误到链接释放以后的某个时间才到的服务器端,此时,服务器端会误以为是客户端发出的一个新的链接请求,于是就向客户端发送了确认数据包,同意建立连接,若不采用“三次握手”,那么只要服务器端发出确认数据包,那么新的链接就建立了,由于此时客户端并未发出建立链接的请求,所有不会理会服务器端的确认,并不会与服务器端进行通信,而这时服务器端一直在等待客户端的请求,这样服务器端就会浪费一定的资源。若采用“三次握手”,由于服务器端并未收到来自客户端的确认,就会知道客户端并没有要求建立请求,也就不会建立链接。

4.为什么是四次挥手?

答:因为TCP有个半关闭状态,假设A与B要释放连接,那么A发送一个释放连接的请求报文给B,B收到后发送确认,这时候TCP就处于半关闭状态,A不在发送数据,但仍能够接收到B发送的数据。然后B还要发送一个释放连接报文给A,然后A发送确认,A与B的链接释放,所以说是四次挥手。

5.TCP如何保证传输的可靠性

答:TCP的传输可靠性通过以下方式保证:

  • 数据包检验:目的是检查数据在传输过程中的任何变化,若检验包有错,则丢弃报文段并且不给出响应。这时TCP发送数据端超时后会重新发送数据。
  • 对丢失数据包重排序:既然TCP报文端作为IP数据报来传输,而IP数据报到达时可能会失序,因此TCP报文段的到达也可能会失序,TCP将对失序的数据进行重排序,然后再交给应用层。
  • 丢弃重复数据:对于重复数据会选择性丢掉。
  • 应答机制:当TCP收到发自TCP连接另一端的数据时,它将发送一个确认,这个确认不是立即发送,通常将推迟几分之一秒
  • 超时重发:当TCP发出一个报文段后,它启动一个定时器,等待目的端确认收到这个报文段,如果不能及时收到一个确认,将重发这个报文段。
  • 流量控制:TCP连接的每一方都有固定大小的缓冲空间,TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据,可以防止较快的主机致使较慢主机的缓冲区溢出。

6.TCP与UDP的区别?

答:TCP和UDP均属于传输层协议。

        TCP是面向连接的,UDP是无连接的;TCP是可靠性传输,UDP是不可靠性传输;TCP只支持点对点通信,UDP支持一对一,一对多,多对一,多对多的通信模式;TCP是面向字节流的,UDP是面向报文的;TCP有拥塞控制机制,UDP没有拥塞控制机制,适合媒体通信。

7.TCP的拥塞处理机制

答:计算机网络中的宽带、交换节点中的缓存及处理机等都是网络的资源。在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就会变坏,这种情况就叫做拥塞。拥塞控制就是防止过多的数据注入网络中,这样就可以使网络中路由器或链路不至于过载。

8.TCP和UDP分别对应的协议是什么?

答:TCP对应的协议:

  • FTP:定义了文本传输协议,使用21端口。
  • Telnet:它是一种远程登录的端口,用户可以用自己的身份远程连接到计算机上,通过这种端口可以提供一种基于DOS模式下的通信服务。
  • SMTP:定义了简单的邮件传送协议,用于发送邮件。
  • POP3:它是和SMTP对应,用于接收邮件。
  • Http:是从web服务器传输超文本到本地浏览器的传送协议。

      UDP对应的协议:

  • DNS:用于域名解析服务,将域名地址转换为IP地址,端口号53.
  • SNMP:简单网络管理协议。端口号161,用来管理网络设备。
  • TFTP:简单文本传输协议,端口号69.

9.简单介绍下ICMP协议和DHCP协议

答:ICMP协议是因特网控制报文协议,它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制信息。

       DHCP协议是动态主机配置协议,是一种让系统得以连接到网络上,并获取所需要的配置参数手段,主要作用是集中的管理,分配IP地址,使网络环境中的主机动态的获取IP地址、Gateway地址、DNS服务器地址等信息。

10.Http的短链接和长链接

        短链接:浏览器和服务器每进行一次Http操作,就建立一次链接,任务结束后就中断链接。

        长链接:当一个网页打开完成后,客户端和服务器端之间用于传输的Http数据的TCP连接不会关闭,如果客户端再次访问服务器上的网页,会继续使用这一条已经建立的连接。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值