Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

锋哥开始收Java学员啦!

java面试题及答案细心整理 PDF 下载


分享到:
时间:2020-06-27 00:04来源:http://www.java1234.com 作者:小锋  侵权举报
java面试题及答案细心整理 PDF 下载
失效链接处理
java面试题及答案细心整理 PDF 下载

下载地址:


相关截图:


主要内容:

2.常见应用层协议:SMTP,HTTP,SNMP,TELENT,FTP,TFTP,DNS,NFS(网络文件系统)
传输层协议:TCP,UDP
网络层协议:IP,ICMP,ARP,RARP,BOOTP
3.硬件工作的层次:
运输层:四层交换机
网络层:路由器,三层交换机
数据链路层:网桥(现在已经很少使用),网卡(其实是一半工作在数据链路层,一半工作在物理层),二层交换机
物理层:中继器,集线器,双绞线
4.基于TCP的协议有哪些:HTTP,SMTP.TELENT,FTP,SSH(安全外壳协议)
5.基于UDP的协议有哪些:SNMP,TFTP,DNS,RIP,IGMP,NFS(初期只支持udp,后期udptcp都支持),DHCP
6.TCP和UDP区别和应用场景:
区别:TCP提供面向连接的服务,在传送数据之前必须先建立连接,数据传送之后要释放连接。TCP不提供广播或者多播服务。由于TCP要提供可靠的,面向连接的服务,因此不可避免的增加了许多的开销,如确认,流量控制,计时器以及连接管理,拥塞控制等,这不仅使得协议数据单元的首部增大很多,还要占用许多的处理机资源。UDP在传送数据之前不需要先建立连接。远地主机的传输层在收到数据报后不需要给出任何确认,虽然UDP不提供可靠交付,但在某些情况下UDP却是一种最有效的工作方式。另外TCP的报文是面向字节流的,而UDP是面向报文的。TCP是全双工的,而UDP是一对一,一对多,多对一,多对多。TCP传输速度慢,UDP传输速度快。
 
应用场景:
TCP:TCP适用于对效率要求比较低,但对准确性要求相对高,或者是有连接的场景。
一般用于:(1)文件传输(FTP,HTTP对数据的准确性要求高,速度可以相对慢)
(2)发送或者接收邮件(POP3,IMAP,SMTP)对数据的准确性要求高,非紧急应用)
(3)远程登录(TELENT,SSH对数据准确性有一定要求,有连接概念)
 
UDP:UDP用于对效率要求相对高,对准确性要求相对地的场景
一般用于:(1)即时通信(qq聊天,对数据准确性和丢包要求比较低,但速度必须快)
(2)在线视频(速度一定要快,保证视频连续,但是偶尔花了一个图像帧,人们还是能接受的)
(3)网络语音通话(语音数据报一般比较小,需要高速发送,偶尔断音或者串音也没有问题哦)
 
7.TCP可靠传输的保证?
什么是可靠传输?首先,可靠传输是指传输的数据包没有错误,传输的数据包不丢失,传输的数据包顺序要保证正确的交付。
如何保证?
(1)差错检测:TCP报文中有一个检验和字段。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文段(希望发送端超时并重发)
(2)超时重发和确认机制。当TCP发出一个报文段后,它将启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。当TCP收到发自TCP连接另一端的数据,,它将发送一个确认。
(3)缓存机制。每个分组都会有一个序列号,对于后一个序列号分组先到的情况,接收端会先进行缓存,等待前一个序号到达,然后一起交付上层。
 
8.拥塞控制的目的和过程
目的:我们知道tcp通过一个定时器采样RTT(Round Trip Time:一个连接的往返时间)和RTO(Rrtransmission Time Out:重传超时时间),但是,如果网络上的时延突然增加,那么,tcp对这个事做出的应对只有重传数据,然而重传会导致网络的负担更重,于是会导致更大的延迟以及更多的丢包,这就导致了恶性循环,最终形成网络风暴,tcp的拥塞控制就是为了应对这种情况。
 
过程:首先需要了解一个概念,为了在发送端调节所要发送的数据量,定义了一个“拥塞窗口”,在发送数据时,将拥塞窗口的大小与接收端ack的窗口大小做比较,取较小者作为发送数据量的上限。拥塞控制主要是四个算法:
(1)慢启动:意思是刚刚加入网络的连接,一点一点地提速,不要一上来就把路占满。连接建好的开始先初始化cwnd=1,表明可以传一个MSS大小的数据。
每当收到一个ACK,cwnd++,呈线性上升,因此每当过了一个RTT,cwnd=cwnd*2,cwnd就变为了原来的两倍,呈指数增长。需要设置一个慢开始们先阀值ssthresh,当cwnd>=ssthresh就会进入拥塞避免算法。
(2)拥塞避免:当拥塞窗口cwnd达到一个阀值时,窗口大小不再呈指数上升,而是以线性上升,避免增长过快导致网络拥塞。
思路是让拥塞窗口cwnd缓慢地增大,即每经过一个往返时间RTT就把发送方的拥塞窗口cwnd加一,而不是加倍。这样一直持续下去直到当拥塞发生,发生丢包重传时,表示网络已经拥塞,此时就将慢开始门限sshthresh设置为当前cwnd窗口的一半,以大大减少注入到网络中的分组,并且cwnd重新设置为1,然后重新开始慢启动算法
(3)如果使用的是快重传快恢复算法,快重传算法是指要求接收方每收到一个失序的报文段后就立刻发出重复确认,为的是让发送方及早知道报文段有没有到达对方,而不要等到自己发送数据的时候才捎带确认。快重传规定,发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段,而不必等待为报文设置的重传计时器到期。 因此当发送方连续收到三个重复确认,就执行快恢复算法,将慢开始门限sshresh设置为当前cwnd的一般,将cwnd设置为当前ssthresh,但是接下去不执行慢开始算法,而是执行拥塞避免算法,使窗口缓慢地线性增大。因为发送方现在认为网络现在很可能没有发生拥塞,如果发生了严重的拥塞,就不会一连有好几个报文连续到达接收方。
 
------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐