面试题:TCP协议与UDP协议

一、谈谈对OSI七层模型和TCP/IP四层模型的理解

OSI七层模型包括应用层、表示层、会话层、传输层、网络层、数据链路层以及物理层,他们分别的作用为:

  • 物理层:解决两个硬件之间怎么通信的问题,它的主要作用是传输比特流。
  • 数据链路层:通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路,它接收来自物理层的位流形式的数据并封装成帧,传送到上一层,同时,也将来自上层的数据帧,拆装为位流形式的数据转发到物理层;
  • 网络层:通过路由选择算法,为报文选择最合适的路径;
  • 传输层:监控数据传输服务的质量,确保报文的正确传输;
  • 会话层:创建和管理应用程序之间的通信;
  • 表示层:负责数据格式的转换,将应用处理的信息转换为适合网络传输的格式,或者将来自下一层的数据转换成上一层能处理的格式;
  • 应用层:直接向用户提供服务。

 TCP/IP四层模型包括应用层、传输层、网络层以及数据链路层,四层模型相当于是对OSI模型的简化,他们分别的作用为:

  • 应用层:包含OSI模型的应用层、表示层、会话层,提供了一些常用的协议规范,比如FTP、SMTP、SNMP、HTTP、DNS等;
  • 传输层:提供应用程序间的通信,可以格式化信息流,提供可靠传输,传输层提供了TCP和UDP等常用协议;
  • 网络层:网络层用于把数据从源主机经过若干个中间节点传送到目标主机,并向传输层提供最基础的数据传输服务,提供路由和选址的工作,网络层定义了IP协议,主要包括IP、ICMP、ARP等;
  • 数据链路层:他包含了OSI模型的物理层和数据链路层,用来处理连接网络的硬件部分,包括操作系统、网络适配器等。

二、谈谈TCP协议的3次握手过程

TCP协议通过3次握手建立服务器Server与客户端Client之间的TCP连接,在进行业务通信前必须先建立好连接。

  • 第一次握手服务器收到客户端发送的第一个TCP数据包,首部格式内容为:SYN=1,ACK=0,表示这是一个请求建立连接的数据包;
  • 第二次握手:服务器收到客户端发送的第一个数据包后,根据SYN=1与ACK=0,判断出为主动建立连接的数据包;若服务同意连接,则服务器向客户端发送一个数据包进行回应,首部格式内容为:SYN=1,ACK=1。ACK=1代表服务器同意连接;
  • 第三次握手:客户端收到服务器的确认之后,再给服务器发送一个数据包,首部格式内容为:SYN=0,ACK=1。SYN=0代表双方已同意建立连接,ACK=1代表客户端收到服务器的确认数据包。

三、TCP协议为什么要3次握手?2次,4次不行吗?

  • 3次握手可以避免重复的连接,防止旧的重复连接引起混乱问题;通过三次连接可以得到一个确认的可靠初始化序列号seq,用于进行可靠性传输。
  • 2次握手无法初始化序列号seq,所=所以2次握手不可以。
  • 4次当然可以,或者5次也可以,实现了TCP连接的稳定性,但TCP协议最少只需要通过3次握手建立连接,所以3次握手是最节省资源的连接方式

四、谈谈TCP协议的四次挥手过程

  • 第一次挥手:首先客户端向服务器发送连接释放的请求数据包,并停止发送数据。首部格式内容为:FIN=1,ACK=0。FIN=1意味着客户端要主动释放TCP连接;
  • 第二次挥手:服务器收到连接释放的报文之后,给客户端发送确认数据包,首部格式内容为:FIN=0,ACK=1。ACK=1表示服务器收到了客户端发送的数据包,同意客户端释放连接。此时,客户端已经无法发送数据给服务器,但是服务器还可以发送数据给客户端,客户端仍然可以接收;
  • 第三次挥手:若服务器已经没有向客户端发送数据了,此时应用进程就可以通知TCP释放连接了,并向客户端发送确认报文
  • 第四次挥手:客户端收到服务器的连接释放报文段后,向服务器发出确认报文段

五、什么是流量控制

  • 流量控制的作用:流量控制是为了控制发送方发送速率,保证接收方来得及接收。
  • 流量控制的发生:TCP连接的每一方都有固定大小的缓冲空间,TCP的接收端只允许发送端发送接收端缓冲区能接纳的数据。当接收方来不及处理发送方的数据,能提示发送方降低发送速率,防止包丢失,从而实现流量控制。
  • 流量控制的实现:利用滑动窗口实现;接收方发送的确认报文中的窗口字段可以用来控制发送方窗口大小,从而影响发送方的发送速率。将窗口字段设置为0,则发送发方不能发送数据。

六、什么是滑动窗口

滑动窗口的定义:滑动窗口是TCP协议用于实现流量控制的一种机制。

窗口的定义:发送方和接收方分别维护各自的缓冲区,这个缓冲区就是窗口。发送方的窗口大小由接收方的TCP首部的窗口字段决定。

发送方将窗口内容分为:

  • 已发送并确认;
  • 已发送未确认;
  • 未发送未超出接收方窗口范围;
  • 未发送但超出接收方窗口范围。随着接收方的确认,发送方将不断在窗口内向前滑动。

接收方将窗口内容分为:

  • 接收已确认;
  • 未收到但可以接受。接收方读取窗口内容,并不断确认通知发送方,窗口向前滑动。

七、什么是拥塞控制

拥塞控制的目的:避免发送方的数据填满整个网络,控制发送方的数据发送量。

TCP主要通过四个算法来进行拥塞控制:慢开始、拥塞避免、快重传、快恢复。

  • 慢开始:拥塞窗口从1开始,采用加倍计算方式,由小到大逐渐增大。
  • 拥塞避免:慢开始每个轮次都将cwnd(拥塞窗口)加倍,这样会让cwnd增长速度非常快,从而使得发送方的发送速度增长过快,网络拥塞的可能性也就更高。设置一个慢开始门限ssthresh,当cwnd >= ssthresh时,进入拥塞避免,每个轮次只将cwnd加1,降低拥塞窗口的增长速度。
  • 快重传:当接收方发现数据包丢失的时候,会连续发送三次 ACK确认数据包,于是发送端就会快速地重传,不必等待超时再重传。
  • 快恢复:快恢复是配套快重传使用,当执行快重传时,就执行“乘法减小(ssthresh×0.5)”算法,把慢开始门限ssthresh减半,同时执行拥塞避免,使拥塞窗口缓慢的线性增大。

八、TCP和UDP有什么区别 

面向连接可靠传输性能效率首部格式
TCP协议

需要建立连接

仅支持一对一通信

确认应答、连接管理、流量控制、拥塞控制慢,资源开销较多20-60个字节
UDP协议

无需建立连接

支持一对一、一对多、多对一和多对多的交互通信

不保证快,资源开销较少8个字节
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值