计算机网络面试题

运输层

TCP与UDP的区别

         TCP:面向连接的,可靠的,点到点通信,面向字节流,全双工通信

              TCP实现可靠传输的机制:校验、序号、确认、重传

         UDP:无连接,不可靠,支持一对一、一对多、多对多通信,较好的实时性

          

          

TCP协议的三次握手(建立连接)

1.连接请求:client首先发送一个连接试探(SYN=1,seq=x),SYN = 1 表示这是一个连接请求或连接接受报文,同时表示这个数据报不能携带数据,seq = x 表示Client自己的初始序号(seq = 0 就代表这是第0号包),这时候Client进入syn_sent状态,表示客户端等待服务器的回复(注:TCP报文中仅当ACK=1时确认号才有效)

2.确认连接:Server监听到连接请求报文后,如同意建立连接,则向Client发送确认(ACK=1,SYN=1,ack=x+1,seq=y):ack = x + 1表示期望收到对方下一个报文段的第一个数据字节序号是x+1,同时表明x为止的所有数据都已正确收到(ack=1其实是ack=0+1,也就是期望客户端的第1个包),seq = y 表示Server 自己的初始序号(seq=0就代表这是服务器这边发出的第0号包)。这时服务器进入syn_rcvd,表示服务器已经收到Client的连接请求,等待client的确认。

3.再次确认:Client收到确认后还需再次发送确认(ACK=1,ack=y+1,seq=x+1)同时携带要发送给Server的数据。ACK 置1 表示确认号ack= y + 1 有效(代表期望收到服务器的第1个包),Client自己的序号seq= x + 1(表示这就是我的第1个包,相对于第0个包来说的),一旦收到Client的确认之后,这个TCP连接就进入Established状态,就可以发起http请求了。

问题1:TCP 为什么需要3次握手?
防止已失效的连接请求报文段又重新传送到Server方,从而浪费Server的资源。

问题2:为什么HTTP协议要基于TCP来实现?
TCP是一个端到端的可靠的面向连接的协议,所以HTTP基于传输层TCP协议不用担心数据的传输的各种问题。

TCP的四次挥手(释放连接)

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

          答:虽然按道理,四个报文都发送完毕,我们可以直接进入CLOSE状态了,但是我们必须假设网络是不可靠的,有可能最后一个ACK丢失。所以TIME_WAIT状态一方面是保证A发送的最后一个ACK报文能够到达B;另一方面防止“已失效的连接请求报文段”出现在本连接中。

TCP为什么要建立连接

保证可靠传输。

TCP是怎么保证可靠传输的

三次握手,超时重传,滑动窗口,拥塞控制

TCP的拥塞控制机制是什么?

注意:拥塞控制与流量控制的区别 
       拥塞控制:防止过多的数据注入到网络中,可以使网络中的路由器或链路不致过载,是一个全局性的过程。 
       流量控制:点对点通信量的控制,是一个端到端的问题,主要就是抑制发送端发送数据的速率,以便接收端来得及接收。

        

为了在发送端调节所要发送的数据量,定义了一个“拥塞窗口”(Congestion Window),在发送数据时,将拥塞窗口的大小与接收端ack的窗口大小做比较,取较小者作为发送数据量的上限。 
拥塞控制主要是四个算法: 
1.慢开始:意思是刚刚加入网络的连接,一点一点地提速,不要一上来就把路占满。 
连接建好的开始先初始化cwnd = 1,表明可以传一个MSS大小的数据。 
每当收到一个ACK,cwnd++; 呈线性上升 
每当过了一个RTT,cwnd = cwnd*2; 呈指数让升 
阈值ssthresh(slow start threshold),是一个上限,当cwnd >= ssthresh时,就会进入“拥塞避免算法” 
2.拥塞避免:当拥塞窗口 cwnd 达到一个阈值时,窗口大小不再呈指数上升,而是以线性上升,避免增长过快导致网络拥塞。 
每当收到一个ACK,cwnd = cwnd + 1/cwnd 
每当过了一个RTT(往返时间),cwnd = cwnd + 1 
拥塞发生:当发生丢包进行数据包重传时,表示网络已经拥塞。分两种情况进行处理: 
等到RTO超时,重传数据包 
sshthresh = cwnd /2 
cwnd 重置为 1 
3.进入慢启动过程 
在收到3个duplicate ACK时就开启快重传,而不用等到RTO超时 
sshthresh = cwnd 
进入快速恢复算法——Fast Recovery 
4.快恢复:至少收到了3个Duplicated Acks,说明网络也不那么糟糕,可以快速恢复。 
cwnd = sshthresh + 3 * MSS (3的意思是确认有3个数据包被收到了) 
重传Duplicated ACKs指定的数据包 
如果再收到 duplicated Acks,那么cwnd = cwnd +1 
如果收到了新的Ack,那么,cwnd = sshthresh ,然后就进入了拥塞避免的算法了。

 

 

 

应用层

http与https的区别 

           http        https
CA申请证书          不需要         需要
  连接方式          80          334
  传输方式     明文传输    SSL加密传输
   安全性 连接简单,无状态        更安全

http请求过程

  1. 客户端发送请求
  2. 浏览器查找域名的ip地址

            浏览器缓存-->hosts文件是否有对应的域名及ip地址-->路由器缓存-->DNS缓存

            -->浏览器域名服务器向根域名服务器(baidu.com)查找域名对应IP

     3.与服务器建立连接(TCP的三次握手)

     4.向服务器发送http请求

                 请求方法+请求头+请求正文

      5.服务器处理请求,响应到客户端

 https请求过程

       1. 客户端发起HTTPS请求

       2. 服务端的配置

         采用HTTPS协议的服务器必须要有一套数字证书,可以是自己制作或者CA证书。区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用CA证书则不会弹出提示页面。这套证书其实就是一对公钥和私钥。公钥给别人加密使用,私钥给自己解密使用。

     3. 传送证书

      这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间等。

     4. 客户端解析证书

      这部分工作是有客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等,如果发现异常,则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么就生成一个随即值,然后用证书对该随机值进行加密

      5. 传送加密信息

       这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。

     6. 服务端解密信息

       服务端用私钥解密后,得到了客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密。所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全。

     7. 传输加密后的信息

     这部分信息是服务段用私钥加密后的信息,可以在客户端被还原。

     8. 客户端解密信息

     客户端用之前生成的私钥解密服务段传过来的信息,于是获取了解密后的内容。

http协议,http header,http请求码、状态码

     http状态码:

       200 OK                        //客户端请求成功
       400 Bad Request               //客户端请求有语法错误,不能被服务器所理解
       401 Unauthorized              //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用 
       403 Forbidden                 //服务器收到请求,但是拒绝提供服务
       404 Not Found                 //请求资源不存在,eg:输入了错误的URL
       500 Internal Server Error     //服务器发生不可预期的错误
       503 Server Unavailable        //服务器当前不能处理客户端的请求,一段时间后可能恢复正常

 

  •  OSI与TCP/IP各层的结构与功能,都有哪些协议

          

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
计算机网络计算机科学中的一个重要领域,面试中常常会涉及到计算机网络的基础知识。以下是一些常见的计算机网络面试基础: 1. 什么是计算机网络计算机网络是指将多台计算机通过通信设备连接起来,实现信息交换和资源共享的系统。 2. OSI七层模型是什么? OSI七层模型是一种将计算机网络通信过程划分为七个不同层次的模型,分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。 3. TCP/IP协议族包括哪些协议? TCP/IP协议族包括IP协议、TCP协议、UDP协议、HTTP协议、FTP协议等。 4. 什么是IP地址和MAC地址? IP地址是用于在网络中唯一标识一个设备的地址,分为IPv4和IPv6两种格式。MAC地址是网卡的物理地址,用于在局域网中唯一标识一个设备。 5. TCP和UDP的区别是什么? TCP是面向连接的可靠传输协议,提供数据传输的可靠性和顺序性;UDP是无连接的不可靠传输协议,提供数据传输的快速性和实时性。 6. 什么是HTTP协议? HTTP协议是一种用于传输超文本的应用层协议,常用于Web浏览器和Web服务器之间的通信。 7. 什么是DNS? DNS(Domain Name System)是用于将域名转换为IP地址的分布式数据库系统,实现域名解析功能。 8. 什么是网络拓扑结构? 网络拓扑结构指的是计算机网络中各个节点之间连接的方式,常见的拓扑结构有总线型、星型、环型、树型等。 9. 什么是路由器和交换机? 路由器是一种网络设备,用于在不同网络之间转发数据包;交换机是一种网络设备,用于在局域网内转发数据包。 10. 什么是网络安全? 网络安全是指保护计算机网络及其资源不受未经授权的访问、使用、披露、破坏、修改或干扰的能力。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值