计算机网络面试题总结(一)

1. TCP 和 UDP 的区别及应用场景?

简易回答:

        UDP 协议和 TCP 协议都是传输层协议,都是为应用层程序服务,都具有复用(不同的应用层协议可以共用 UDP 协议和 TCP 协议)和分用(将数据报解析之后分发给不同的应用层程序)的功能。

        UDP 提供面向无连接基于数据报的不可靠传输,TCP 提供面向连接基于字节流的可靠传输。UDP 在很多实时性要求高的场景有很好的表现,而 TCP 在要求数据准确、对速度没有硬性要求的场景有很好的表现。

详细回答:

 - UDP协议:

        面向无连接(不需要三次握手和四次挥手)、尽最大努力交付、面向报文(每次收发都是一整个报文段)、没有拥塞控制不可靠(只管发不管过程和结果)、支持一对一、一对多、多对一和多对多的通信方式、首部开销很小(8字节)。优点是快,没有TCP各种机制,少了很多首部信息和重复确认的过程,节省了大量的网络资源。缺点是不可靠不稳定,只管数据的发送不管过程和结果,网络不好的时候很容易造成数据丢失。又因为网络不好的时候不会影响到主机数据报的发送速率,这对很多实时的应用程序很重要,因为像语音通话、视频会议等要求源主机要以恒定的速率发送数据报,允许网络不好的时候丢失一些数据,但不允许太大的延迟,UDP很适合这种要求。

- TCP协议:

        是TCP/IP体系中非常复杂的一个协议,面向连接(需要三次握手四次挥手)、单播(只能端对端的连接)、可靠交付(有大量的机制保护TCP连接数据的可靠性)、全双工通讯(允许双方同时发送信息,也是四次挥手的原由)、面向字节流(不保留数据报边界的情况下以字节流的方式进行传输,这也是长连接的由来。)、头部开销大(最少20字节)。优点是可靠、稳定,有确认、窗口、重传、拥塞控制机制,在数据传完之后,还会断开连接用来节约系统资源。缺点是慢,效率低,占用系统资源高,在传递数据之前要先建立连接,这会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞机制等都会消耗大量的时间,而且要在每台设备上维护所有的传输连接。在要求数据准确、对速度没有硬性要求的场景有很好的表现,比如在FTP(文件传输)、HTTP/HTTPS(超文本传输),TCP很适合这种要求。

2. HTTP 和 HTTPS 的区别?

1. HTTP是基于TCP的,而HTTPS是基于TLS的;

2. HTTP的往返时间为1RTT,而HTTPS的往返时间为3RTT ;(HTTPS比HTTP往返时间要长)

3. HTTP只需要创建一次TCP连接,而HTTPS需要创建两次TCP连接 ;

4. HTTP的默认端口号为80,而HTTPS的默认端口号为443;(两者的默认端口不一样)

5.  HTTP的安全性很差,而HTTPS的安全性很强 。

(加分:HTTPS虽然在安全方面有很大的优势,但是缺点也很明显,如下: - HTTPS握手阶段耗费时间,几乎是HTTP的数倍,会延长页面的首次绘制时间和增加耗电 - HTTPS的效率没有HTTP高,如果部分数据内容实际上并不需要加密,会平白浪费计算机资源 - HTTPS的证书需要购买,功能越强大的证书价格更高 - HTTPS的加密并不能阻止某些网络攻击,如黑客攻击、拒绝服务攻击等)

3. TCP 三次握手四次挥手过程

三次握手过程:

        第一次握手:客户端向服务器端发送连接请求报文段,包含自身数据通讯初始序号,进入SYN-SENT状态。

        第二次握手:服务器端收到连接请求报文段后,如果同意,发送应答,包含自身数据通讯初始序号,进入SYN-RECEIVED状态。

        第三次握手:客户端收到应答,最后向服务器端发送确认报文,进入ESTABLISHED状态,此时成功建立长连接。 

四次挥手过程:

        第一次挥手:客户端认为数据发送完毕,需要向服务器端发送连接释放请求。

        第二次挥手:服务器收到连接释放请求,告诉应用层释放TCP连接。然后发送ACK包,进入CLOSE-WT状态,此时表明客户端到服务器端的连接已经释放,不再接受客户端的数据。因为TCP是全双工的,所以服务器仍可以发送数据。

        第三次挥手:当服务器端数据发送完毕,向客户端发送连接释放请求,进入LAST-ACK状态。

        第四次挥手:客户端收到连接释放请求,向服务器端发送确认应答报文,此时客户端进入TIME-WT状态,持续2倍的MSL(最长报文段寿命),若期间没有收到服务器端的数据报文,进入CLOSED状态。服务器端收到确认应答后,也进入CLOSED状态。 

4. TCP 如何实现可靠传输

        可靠传输就是通过TCP连接传送的数据是没有差错、不会丢失、不重复并且按序到达的。TCP是通过序列号、检验和、确认应答信号、重发机制、连接管理、窗口控制、流量控制、拥塞控制一起保证TCP传输的可靠性的。

(扩展:可靠传输的具体实现是: - 应用层的数据会被分割成TCP认为最适合发送的数据块。 - 序列号:TCP给发送的每一个包都进行编号,接收方对数据包进行排序,把有序数据传送给应用层,TCP的接收端会丢弃重复的数据。 - 检验和:TCP将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。 - 确认应答:如果收到的数据报报文段的检验和没有差错,就确认收到,如果有差错,TCP就丢弃这个报文段和不确认收到此报文段。 - 流量控制:TCP 连接的每一方都有固定大小的缓冲空间,TCP的接收端只允许发送端发送接收端缓冲区能接纳的数据。当接收方来不及处理发送方的数据,能提示发送方降低发送的速率,防止包丢失。TCP 使用的流量控制协议是可变大小的滑动窗口协议。 - 拥塞控制:当网络拥塞时,减少数据的发送。 - 停止等待协议:它的基本原理就是每发完一个分组就停止发送,等待对方确认。在收到确认后再发下一个分组。 - 超时重传: 当 TCP 发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。)

5. TCP 和 UDP 的使用场景

         UDP的优点是快,没有TCP各种机制,少了很多首部信息和重复确认的过程,节省了大量的网络资源。缺点是不可靠不稳定,只管数据的发送不管过程和结果,网络不好的时候很容易造成数据丢失。因为网络不好的时候不会影响到主机数据报的发送速率,这对很多实时的应用程序很重要,像语音通话、视频会议等要求源主机要以恒定的速率发送数据报,允许网络不好的时候丢失一些数据,但不允许太大的延迟。所以UDP在语音、视频、寻址、游戏、广播等方面有很好的应用前景,实时性高,允许部分的数据丢失。

        TCP的优点是面向连接提供可靠交付,即对数据有保证、无差错的进行运输。当需要数据准确无误的运输给对方时,需要保证文件准确、无差错。所以TCP适用于邮件、远程登陆、超文本、文件、身份信息等重要内容。 

6. UDP 怎么样可以实现可靠的传输?

        UDP不是面向连接的协议,因此资源消耗小,处理速度快的优点,所以通常音频、视频和普通数据在传送时使用UDP较多,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。如果想要使用UDP还要保证数据的可靠传输,就只能通过应用层来做文章。实现的方式可以参考TCP的可靠传输机制,差别就是将TCP传输层功能,如确认机制、重传功能、流量控制、拥塞控制等功能实现在了应用层。

7. tcp中序号的单位是什么?

        序号字段和确认号字段是TCP报文段首部中两个最重要的字段,这两个字段是TCP可靠传输服务的关键部分。TCP把数据看成一个无结构的、有序的字节流。序号是建立在传送的字符流之上的,而不是建立在传送的报文段的序列之上。序号的单位是bit。序号32bit  确认号也是32bit。

8. TCP/ip四层模型,及每一层协议

TCP/IP四层模型各层主要协议详述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值