计算机网络面试题

一、计算机网络模型

TCP/IP 与 OSI 都是为了使网络中的两台计算机能够互相连接并实现通信与回应,但他们最大的不同在于,OSI 是一个理论上的网络通信模型,而 TCP/IP 则是实际上的网络通信标准。在这里插入图片描述

1、物理层:

实现计算机节点之间比特流的透明传输,规定传输媒体接口的标准,屏蔽掉具体传输介质和物理设备的差异,使数据链路层不必关心网络的具体传输介质,按照物理层规定的标准传输数据就行

2、数据链路层:

通过差错控制、流量控制等方法,使有差错的物理线路变为无差错的数据链路。

数据链路层的几个基本方法:数据封装成桢、透明传输、差错控制、流量控制。
封装成桢:把网络层数据报加头和尾,封装成帧,帧头中包括源MAC地址和目的MAC地址。
透明传输:零比特填充、转义字符。
差错控制:接收者检测错误,如果发现差错,丢弃该帧,差错控制方法有 CRC 循环冗余码
流量控制:控制发送的传输速度,使得接收方来得及接收。传输层TCP也有流量控制功能,但TCP是端到端的流量控制,链路层是点到点(比如一个路由器到下一个路由器)

3、网络层:

实现网络地址与物理地址的转换,并通过路由选择算法为分组通过通信子网选择最适当的路径

网络层最重要的一个功能就是:路由选择。路由一般包括路由表和路由算法两个方面。每个路由器都必须建立和维护自身的路由表,一种是静态维护,也就是人工设置,适用于小型网络;另一种就是动态维护,是在运行过程中根据网络情况自动地动态维护路由表。

4、传输层:

提供源端与目的端之间提供可靠的透明数据传输,传输层协议为不同主机上运行的进程提供逻辑通信。

网络层协议负责的是提供主机间的逻辑通信;
传输层协议负责的是提供进程间的逻辑通信。

5、会话层:

是用户应用程序和网络之间的接口,负责在网络中的两节点之间建立、维持、终止通信。

6、表示层:

处理用户数据的表示问题,如数据的编码、格式转换、加密和解密、压缩和解压缩。

7、应用层:

为用户的应用进程提供网络通信服务,完成和实现用户请求的各种服务。

二、传输控制协议TCP和用户数据报协议UDP的区别?

  1. TCP是面向字节流的,基本传输单位是TCP报文段;UDP是面向报文的,基本传输单位是是用户数据报;

面向字节流:应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序看成是一连串的无结构的字节流。TCP有一个缓冲,当应用程序传送的数据块太长,TCP就可以把它划分短一些再传送。
面向报文:面向报文的传输方式是应用层交给UDP多长的报文,UDP就照样发送。因此,应用程序必须选择合适大小的报文。

  1. TCP 注重安全可靠性,连接双方在进行通信前,需进行三次握手建立连接。UDP 是无连接的,使用最大努力交付,即不保证可靠交付。
  2. UDP 不需要连接等待,所以数据传输快,而 TCP 传输效率相对较低
  3. TCP首部开销是20个字节;UDP的首部开销是8个字节,这也是减少网络传输开销的一方面
  4. TCP有拥塞控制和流量控制,而UDP没有拥塞控制和流量控制
  5. TCP支持点对点通信,提供全双工通信,不提供广播或多播服务;UDP支持一对一、一对多、多对一、多对多的通信模式。

三、TCP 和 UDP 的适用场景:

  • 当对网络通讯质量要求不高时,并且要求网络通讯速度能尽量的快,这时就可以使用UDP。比如即使通信: 语音、 视频 、直播等
  • 当对网络通讯质量有要求时,要求整个数据准确无误可靠的传递给对方,这时就适用使用 TCP协议,一般用于文件传输、发送和接收邮件等场景。比如HTTP、HTTPS、FTP等传输文件的协议,POP、SMTP等邮件传输的协议都是使用TCP协议

① TCP对应的协议:

  • FTP:文件传输协议,使用21端口
  • Telnet:远程终端接入,使用23端口,用户可以以自己的身份远程连接到计算机上,可提供基于DOS模式下的通信服务。
  • SMTP:邮件传送协议,用于发送邮件,使用25端口
  • POP3:邮件传送协议,P用于接收邮件。使用110端口
  • HTTP:万维网超文本传输协议,是从Web服务器传输超文本到本地浏览器的传送协议

② UDP对应的协议:

  • DNS:域名解析服务,将域名地址转换为IP地址,使用53号端口;
  • SNMP:网络管理协议,用来管理网络设备,使用161号端口
  • TFTP:简单文件传输协议,提供不复杂、开销不大的文件传输服务,使用 69端口;
  • NFS:远程文件服务器
  • RIP:路由信息协议
  • DHCP:动态主机配置协议
  • IGMP:网际组管理协议

四、TCP建立连接的三次握手

在这里插入图片描述
第一次握手: 客户端向服务端发送一个SYN 报文(SYN = 1),并指明客户端初始化序列号ISN,即seq =x,表示本报文所发送的第一个字节的序号。此时客户端处于 SYN_Sent 状态,等待服务端确认。

三次握手的一个重要功能是客户端和服务端交换ISN,以便让对方知道接下来接收数据时如何按序列号组装数据。ISN是动态生成的,并非固定,因此每个连接都将具有不同的ISN。如果 ISN 是固定的,攻击者很容易猜出后续的确认号。

第二次握手: 服务端收到数据包后,由 SYN = 1 知道客户端请求建立连接,那么就会对这个TCP连接分配缓存和变量(缓存指的是一个字节流队列),接着返回一个确认报文:设置 SYN = 1,ACK = 1,同时指定自己的初始化序列号ISN,即图中的 seq = y,并把客户端的 ISN + 1 作为确认号 ack 的值,表示已经收到了客户端发来的的 SYN报文,希望收到的下一个数据的第一个字节的序号是 x + 1,此时服务端进入SYN _REVD状态。
第三次握手: 客户端收到确认后,检查ACK是否为1,ack是否为 x +1,如果正确,则给服务端发送一个 ACK 报文:设置 ACK= 1,把服务端的 ISN + 1 作为 ack 的值,表示已经收到了服务端发来的 SYN 报文,希望收到的下一个数据的第一个字节的序号是 y + 1,并指明此时客户端的序列号 seq = x + 1,此时客户端和服务器端都进入 ESTABLISHED状态。完成三次握手,随后Client与Server之间可以开始传输数据了。

此时 SYN 控制位变为 0,表示这不是建立连接的请求了,要正式发数据了。

五、http协议和https协议的含义与区别:

1.含义

http协议即超文本传输协议,基于TCP协议,用于从Web服务器传输超文本到本地浏览器的传送协议。http协议是无状态协议,自身不对请求和响应直接的通信状态进行保存,但有些场景下我们需要保存用户的登陆信息,所以引入了cookie和 session 来管理状态。

https协议是基于tcp协议,在http的基础上加入了SSL/TLS,可看成是添加了加密和认证机制的http,使用对称加密、非对称加密、证书等技术进行进行客户端与服务端的数据加密传输,最终达到保证整个通信的安全性。

2.三点区别

  1. http 和 https 都是基于 TCP 协议,但是 http是使用明文传输,通讯内容可能被窃听和篡改,客户端也无法验证通讯方的身份,无法保证数据发送到正确的机器上;https 是在 http的基础上加入了SSL/TLS,可看成是添加了加密和认证机制的http,使用对称加密、非对称加密、证书等技术进行进行客户端与服务端的数据加密传输,最终达到保证整个通信的安全性。
  2. 端口不同:http 使用的是80端口,https 使用的443端口
  3. 资源消耗:和 http 通信相比,https通信会由于加解密处理消耗更多的CPU和内存资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值