计算机网络面试题

一、TCP三次握手和四次断开

在这里插入图片描述
三次握手

  • 客户端发送syn包(传输控制协议)到服务器,等待服务器确认
  • 服务器端收到syn包,需要发送ack确认客户端发来的syn,同时自己也发送syn,即syn+ack
  • 客户端收到服务器的syn+ack后,像服务器发送ack,完成三次握手
    握手过程传输的包里不含数据,三次握手完毕后客户端才和服务器正式开始传送数据。

为什么是三次握手,两次不行吗?
\quad 假设是两次握手,客户端发送syn包的时候,可能由于网络阻塞等异常情况导致很久之后服务器段才收到这个已经收效的请求报文段,于是服务器端就向客户端发出确认报文段,同意建立连接。但此时客户端早已断开链接,因此不会理财服务器端的确认,服务器会一直等待着,浪费资源。

四次断开

  • 主动关闭方发送一个FIN,用于被动关闭方:我不会再发给你数据了
  • 被动关闭方收到FIN包,发送ACK给对方
  • 被动关闭方发送一个FIN,用来关闭被动关闭放和主动关闭方的数据传送
  • 主动关闭方收到FIN后发送一个ACK给被动关闭方,完成四次断开

为什么是四次断开?
\quad 因为TCP有个半关闭状态,假设A.B要释放连接,那么A发送一个释放连接报文给B,B收到后发送确认,这个时候A不发数据,但是B如果发数据A还是要接受,这叫半关闭。然后B还要发给A连接释放报文,然后A发确认,所以是4次。

二、TCP和UDP区别

TCPUDP
是否连接面向连接无需连接
传输可靠性可靠不可靠
应用场合传输大量数据少量数据
速度
开销首部20字节8个字节
有无流量控制,数据检验等可靠功能

三、TCP/IP的流量控制

\quad 流量控制就是让发送方的发送速率不要太快,让接收方来得及接受。利用滑动窗口机制可以很方便的在TCP连接上实现对发送方的流量控制。
在这里插入图片描述
\quad 如上图如所示,发送方和接收方维护一个窗口,只有在窗口里面的数据才允许发送方发送到接收端。滑动窗口的大小由接收端缓存大小决定。在上图中,窗口大小为6,1,2,3已被发送并被确认,则窗口向右滑动3格;4,5,6被发送出去,但未收到ACK,此时还可发送7,8,9,但不能发送窗口以外的数据;等到4,5,6被发送出去后窗口继续向右移动

四、TCP拥塞控制

\quad 拥塞控制是指为了防止过多的数据注入网络中造成网络过载。几种常见的拥塞控制方法:慢启动和拥塞避免,快速重传,快速回复。

慢启动和拥塞避免

在这里插入图片描述
\quad 维护拥塞窗口。慢启动,即开始发送数据时,因为不清楚网络负荷怎么样,先发送少量数据进行试探,再逐渐增加,拥塞窗口呈指数倍增长。增长到阈值时进入拥塞避免状态,窗口线性增加。若网络出现拥塞,则把阈值设置为当前窗口的一半,并将窗口大小设置为1重新开始慢启动,拥塞避免…

快速重传和快速恢复

\quad 接收方收到3个相同的ACK时,表明数据包发生丢失,此时需要重新传递数据。快速重传走的是拥塞控制而不是慢启动,因此叫快速重传。具体过程如下:

  • 将阈值ssthresh设置为当前窗口的一半
  • 将当前窗口设置为ssthresh
  • 重新进入拥塞避免状态

五、cookie和session联系和区别

cookie

\quad 在网站中,http请求是无状态的。也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户。cookie的出现就是为了解决这个问题,第一次登录后服务器返回一些数据(cookie)给浏览器,然后浏览器保存在本地,当该用户发送第二次请求的时候,就会自动的把上次请求存储的cookie数据自动的携带给服务器,服务器通过浏览器携带的数据就能判断当前用户是哪个了。cookie存储的数据量有限,不同的浏览器有不同的存储大小,但一般不超过4KB。因此使用cookie只能存储一些小量的数据。

session

\quad session和cookie的作用有点类似,都是为了存储用户相关的信息。不同的是,cookie是存储在本地浏览器,而session存储在服务器。存储在服务器的数据会更加的安全,不容易被窃取。但存储在服务器也有一定的弊端,就是会占用服务器的资源,但现在服务器已经发展至今,一些session信息还是绰绰有余的。

联系和区别

  • 1、cookie数据存放在客户的浏览器上, session数据放在服务器上
  • 2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗 ,考虑到安全应当使用session
  • 3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能 ,考虑到减轻服务器性能方面,应当使用COOKIE
  • 4、单个cookie在客户端的限制是3K,就是说一个站点在客户端存放的COOKIE不能3K

建议:

  • 将登陆信息等重要信息存放为SESSION
  • 其他信息如果需要保留,可以放在COOKIE中
相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页