面试网络方向总结

TCP与UDP的区别
  1. TCP是面向连接的,传输数据的时候需要三次握手建立连接,udp是面向无连接的,发送数据不需要建立连接
  2. tcp通过确定和重传机制,提供可靠的连接,可以保证无差错,无重复,而udp只是尽力的保证可以交付,tcp保证了稳定性,udp保证了实时性
  3. tcp是面向字节流的,及可将数据看成一串无结构的字节流,udp是面向报文的,udp没用拥塞控制,因此在网络出现拥塞的时候发送效率很低
  4. tcp是一对一,udp可以多对多
TCP为什么要三次握手

为了实现可靠的数据传输,tcp协议双方都必须维持一个序列号,以标识发送出去的数据包中,那些是被对方收到的,三次握手过程及是双方互相告知的起始号,并确定已经收到序列号的起始步骤
如果是两次握手,至多只有连接方的起始号能被确定,另一方不能被确定

还有一些原因原因就是,因为tcp是可靠连接,所以在传输的过程中会出现丢包和延迟的现象,服务器收到一个包,就开始分配资源,客户端却不知道已经开始连接,会浪费大量的资源

TCP为什么要四次挥手

因为当server收到的收到client的请求后,可以直接发送SYN+ACK报文,其中ack是用来应答的,syn是用来同步的,但是当关闭连接时,server不一定立即关闭socket,而是将他的他的报文发送完以后才关闭FIN报文,所以先发送一个ack报文说我知道了,之后等待报文都发完了再发送fin,固需要四次挥手

为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态?

虽然按道理,四个报文都发送完毕,我们可以直接进入CLOSE状态了,但是我们必须假象网络是不可靠的,有可能最后一个ACK丢失。所以TIME_WAIT状态就是用来重发可能丢失的ACK报文。在Client发送出最后的ACK回复,但该ACK可能丢失。Server如果没有收到ACK,将不断重复发送FIN片段。所以Client不能立即关闭,它必须确认Server接收到了该ACK。Client会在发送出ACK之后进入到TIME_WAIT状态。Client会设置一个计时器,等待2MSL的时间。如果在该时间内再次收到FIN,那么Client会重发ACK并再次等待2MSL。所谓的2MSL是两倍的MSL(Maximum Segment Lifetime)。MSL指一个片段在网络中最大的存活时间,2MSL就是一个发送和一个回复所需的最大时间。如果直到2MSL,Client都没有再次收到FIN,那么Client推断ACK已经被成功接收,则结束TCP连接。

TCP流量控制

原因:如果发送者发送数据过快,接受着来不及接受,那么就会有分组的丢失,流量控制就是控制发送者的发送速度,使接收者来得及接收,达到不丢失分组的目的,有时候会出现死锁现象,所以我们一般都会加一个定时器,到达一定时间就会自动推出

TCP拥塞控制

拥塞的概念:在某段时间,对网络中的某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变化,这种情况叫拥塞。

拥塞控制:防止过多的数据注入到网络,导致网络中的路由器或链路过载。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值