计算机网络|综合

1 OSI 的七层模型分别是?各自的功能是什么?

简要概括

  • 物理层:底层数据传输,如网线;网卡标准。

  • 数据链路层:定义数据的基本格式,如何传输,如何标识;如网卡MAC地址。

  • 网络层:定义IP编址,定义路由功能;如不同设备的数据转发。

  • 传输层:端到端传输数据的基本功能;如 TCP、UDP。

  • 会话层:控制应用程序之间会话能力;如不同软件数据分发给不同软件。

  • 表示层:数据格式标识,基本压缩加密功能。

  • 应用层:各种应用软件,包括 Web 应用。

说明

  • 在四层,既传输层数据被称作tcp报文段或udp用户数据报(Segments);
  • 三层网络层数据被称做(Packages);
  • 二层数据链路层时数据被称为(Frames);
  • 一层物理层时数据被称为比特流(Bits)。

总结

  • 网络七层模型是一个标准,而非实现。
  • 网络四层模型是一个实现的应用模型。
  • 网络四层模型由七层模型简化合并而来。

2 你知道DNS是什么?

官方解释:DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。

通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。

通俗的讲,我们更习惯于记住一个网站的名字,比如www.baidu.com,而不是记住它的ip地址,比如:167.23.10.2。

3 DNS的工作原理?

将主机域名转换为ip地址,属于应用层协议,使用UDP传输。(DNS应用层协议,以前有个考官问过)

总结: 浏览器缓存,系统缓存,路由器缓存,IPS服务器缓存,根域名服务器缓存,顶级域名服务器缓存,主域名服务器缓存。 一、主机向本地域名服务器的查询一般都是采用递归查询。 二、本地域名服务器向根域名服务器的查询的迭代查询。

  1. 当用户输入域名时,浏览器先检查自己的缓存中是否包含这个域名映射的ip地址,有解析结束。 2)若没命中,则检查操作系统缓存(如Windows的hosts)中有没有解析过的结果,有解析结束。 3)若无命中,则请求本地域名服务器解析(LDNS)。 4)若LDNS没有命中就直接跳到根域名服务器请求解析。根域名服务器返回给LDNS一个 主域名服务器地址。 5)此时LDNS再发送请求给上一步返回的gTLD( 通用顶级域), 接受请求的gTLD查找并返回这个域名对应的Name Server的地址 6)Name Server根据映射关系表找到目标ip,返回给LDNS
  2. LDNS缓存这个域名和对应的ip, 把解析的结果返回给用户,用户根据TTL值缓存到本地系统缓存中,域名解析过程至此结束

4 为什么区域传送用TCP协议?

因为TCP协议可靠性好!

你要从主DNS上复制内容啊,你用不可靠的UDP? 因为TCP协议传输的内容大啊,你用最大只能传512字节的UDP协议?万一同步的数据大于512字节,你怎么办? 所以用TCP协议比较好!

5 为什么服务器会缓存这一项功能?如何实现的?

原因

  • 缓解服务器压力;

  • 降低客户端获取资源的延迟:缓存通常位于内存中,读取缓存的速度更快。并且缓存服务器在地理位置上也有可能比源服务器来得近,例如浏览器缓存。

实现方法

  • 让代理服务器进行缓存;

  • 让客户端浏览器进行缓存。

6 如果 DNS 服务器和我们的主机在不同的子网,系统会怎样处理?

第一种回答

  1. 查浏览器缓存,看看有没有已经缓存好的,如果没有
  2. 检查本机host文件,
  3. 调用API,Linux下Socket函数 gethostbyname
  4. 向DNS服务器发送DNS请求,查询本地DNS服务器,这其中用的是UDP的协议
  5. 如果在一个子网内采用ARP地址解析协议进行ARP查询如果不在一个子网那就需要对默认网关进行DNS查询,如果还找不到会一直向上找根DNS服务器,直到最终拿到IP地址(全球400多个根DNS服务器,由13个不同的组织管理)
  6. 这个时候我们就有了服务器的IP地址 以及默认的端口号了,http默认是80 https是 443 端口号,会,首先尝试http然后调用Socket建立TCP连接,
  7. 经过三次握手成功建立连接后,开始传送数据,如果正是http协议的话,就返回就完事了,
  8. 如果不是http协议,服务器会返回一个5开头的的重定向消息,告诉我们用的是https,那就是说IP没变,但是端口号从80变成443了,好了,再四次挥手,完事,
  9. 再来一遍,这次除了上述的端口号从80变成443之外,还会采用SSL的加密技术来保证传输数据的安全性,保证数据传输过程中不被修改或者替换之类的,
  10. 这次依然是三次握手,沟通好双方使用的认证算法,加密和检验算法,在此过程中也会检验对方的CA安全证书。
  11. 确认无误后,开始通信,然后服务器就会返回你所要访问的网址的一些数据,在此过程中会将界面进行渲染,牵涉到ajax技术之类的,直到最后我们看到色彩斑斓的网页

第二种回答

  1. 浏览器检查域名是否在缓存当中(要查看 Chrome 当中的缓存, 打开 chrome://net-internals/dns)。

  2. 如果缓存中没有,就去调用 gethostbyname 库函数(操作系统不同函数也不同)进行查询。

  3. 如果 gethostbyname 没有这个域名的缓存记录,也没有在 hosts 里找到,它将会向 DNS 服务器发送一条 DNS 查询请求。DNS 服务器是由网络通信栈提供的,通常是本地路由器或者 ISP 的缓存 DNS 服务器。

  4. 查询本地 DNS 服务器

  5. 如果 DNS 服务器和我们的主机在同一个子网内,系统会按照下面的 ARP 过程对 DNS 服务器进行 ARP查询

7 谈谈DNS解析过程,具体一点

  • 请求一旦发起,若是chrome浏览器,先在浏览器找之前有没有缓存过的域名所对应的ip地址,有的话,直接跳过dns解析了,若是没有,就会找硬盘的hosts文件,看看有没有,有的话,直接找到hosts文件里面的ip
  • 如果本地的hosts文件没有能得到对应的ip地址,浏览器会发出一个dns请求到本地dns服务器本地dns服务器一般都是你的网络接入服务器商提供,比如中国电信,中国移动等。
  • 查询你输入的网址的DNS请求到达本地DNS服务器之后,本地DNS服务器会首先查询它的缓存记录,如果缓存中有此条记录,就可以直接返回结果,此过程是递归的方式进行查询。如果没有,本地DNS服务器还要向DNS根服务器进行查询。
  • 本地DNS服务器继续向域服务器发出请求,在这个例子中,请求的对象是.com域服务器。.com域服务器收到请求之后,也不会直接返回域名和IP地址的对应关系,而是告诉本地DNS服务器,你的域名的解析服务器的地址。
  • 最后,本地DNS服务器向域名的解析服务器发出请求,这时就能收到一个域名和IP地址对应关系,本地DNS服务器不仅要把IP地址返回给用户电脑,还要把这个对应关系保存在缓存中,以备下次别的用户查询时,可以直接返回结果,加快网络访问。

8 DNS负载均衡是什么策略?

当一个网站有足够多的用户的时候,假如每次请求的资源都位于同一台机器上面,那么这台机器随时可能会崩掉。处理办法就是用DNS负载均衡技术,它的原理是在DNS服务器中为同一个主机名配置多个IP地址,在应答DNS查询时,DNS服务器对每个查询将以DNS文件中主机记录的IP地址按顺序返回不同的解析结果,将客户端的访问引导到不同的机器上去,使得不同的客户端访问不同的服务器,从而达到负载均衡的目的。

例如可以根据每台机器的负载量,该机器离用户地理位置的距离等等。

9 SQL注入攻击了解吗?

攻击者在HTTP请求中注入恶意的SQL代码,服务器使用参数构建数据库SQL命令时,恶意SQL被一起构造,并在数据库中执行。 用户登录,输入用户名 lianggzone,密码 ‘ or ‘1’=’1 ,如果此时使用参数构造的方式,就会出现 select * from user where name = 'lianggzone' and password = '' or '1'='1'。 不管用户名和密码是什么内容,使查询出来的用户列表不为空。如何防范SQL注入攻击使用预编译的PrepareStatement是必须的,但是一般我们会从两个方面同时入手。 Web端 1)有效性检验。 2)限制字符串输入的长度。 服务端 1)不用拼接SQL字符串。 2)使用预编译的PrepareStatement。 3)有效性检验。(为什么服务端还要做有效性检验?第一准则,外部都是不可信的,防止攻击者绕过Web端请求) 4)过滤SQL需要的参数中的特殊字符。比如单引号、双引号。

10 什么是RARP?工作原理

概括

反向地址转换协议,网络层协议,RARP与ARP工作方式相反。 RARP使只知道自己硬件地址的主机能够知道其IP地址。RARP发出要反向解释的物理地址并希望返回其IP地址,应答包括能够提供所需信息的RARP服务器发出的IP地址。 原理 (1)网络上的每台设备都会有一个独一无二的硬件地址,通常是由设备厂商分配的MAC地址。主机从网卡上读取MAC地址,然后在网络上发送一个RARP请求的广播数据包,请求RARP服务器回复该主机的IP地址。

(2)RARP服务器收到了RARP请求数据包,为其分配IP地址,并将RARP回应发送给主机。

(3)PC1收到RARP回应后,就使用得到的IP地址进行通讯。

11 端口有效范围是多少到多少?

0-1023为知名端口号,比如其中HTTP是80,FTP是20(数据端口)、21(控制端口)

UDP和TCP报头使用两个字节存放端口号,所以端口号的有效范围是从0到65535。动态端口的范围是从1024到65535

12 为何需要把 TCP/IP 协议栈分成 5 层(或7层)?开放式回答。

ARPANET 的研制经验表明,对于复杂的计算机网络协议,其结构应该是层次式的。

分层的好处:

①隔层之间是独立的

②灵活性好

③结构上可以分隔开

④易于实现和维护

⑤能促进标准化工作。

13 DNS查询方式有哪些?

递归解析

当局部DNS服务器自己不能回答客户机的DNS查询时,它就需要向其他DNS服务器进行查询。此时有两种方式。局部DNS服务器自己负责向其他DNS服务器进行查询,一般是先向该域名的根域服务器查询,再由根域名服务器一级级向下查询。最后得到的查询结果返回给局部DNS服务器,再由局部DNS服务器返回给客户端。

迭代解析

当局部DNS服务器自己不能回答客户机的DNS查询时,也可以通过迭代查询的方式进行解析。局部DNS服务器不是自己向其他DNS服务器进行查询,而是把能解析该域名的其他DNS服务器的IP地址返回给客户端DNS程序,客户端DNS程序再继续向这些DNS服务器进行查询,直到得到查询结果为止。也就是说,迭代解析只是帮你找到相关的服务器而已,而不会帮你去查。比如说:baidu.com的服务器ip地址在192.168.4.5这里,你自己去查吧,本人比较忙,只能帮你到这里了。

14 DDos 攻击了解吗?

客户端向服务端发送请求链接数据包,服务端向客户端发送确认数据包,客户端不向服务端发送确认数据包,服务器一直等待来自客户端的确认 没有彻底根治的办法,除非不使用TCP DDos 预防: 1)限制同时打开SYN半链接的数目 2)缩短SYN半链接的Time out 时间 3)关闭不必要的服务

15 MTU和MSS分别是什么?

MTU:maximum transmission unit,最大传输单元,由硬件规定,如以太网的MTU为1500字节。

MSS:maximum segment size,最大分节大小,为TCP数据包每次传输的最大数据分段大小,一般由发送端向对端TCP通知对端在每个分节中能发送的最大TCP数据。MSS值为MTU值减去IPv4 Header(20 Byte)和TCP header(20 Byte)得到。

16 网络的七层/五层模型主要的协议有哪些?

17 OSI 的七层模型的主要功能?

**物理层:**利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。 **数据链路层:**接收来自物理层的位流形式的数据,并封装成帧,传送到上一层 **网络层:**将网络地址翻译成对应的物理地址,并通过路由选择算法为分组通过通信子网选择最适当的路径。 **传输层:**在源端与目的端之间提供可靠的透明数据传输 **会话层:**负责在网络中的两节点之间建立、维持和终止通信 **表示层:**处理用户信息的表示问题,数据的编码,压缩和解压缩,数据的加密和解密 **应用层:**为用户的应用进程提供网络通信服务

18 应用层常见协议知道多少?了解几个?

协议 名称 默认端口 底层协议
HTTP 超文本传输协议 80 TCP
HTTPS 超文本传输安全协议 443 TCP
Telnet 远程登录服务的标准协议 23 TCP
FTP 文件传输协议 20传输和21连接 TCP
TFTP 简单文件传输协议 69 UDP
SMTP 简单邮件传输协议(发送用) 25 TCP
POP 邮局协议(接收用) 110 TCP
DNS 域名解析服务 53 服务器间进行域传输的时候用TCP
客户端查询DNS服务器时用 UDP

19 浏览器在与服务器建立了一个 TCP 连接后是否会在一个 HTTP 请求完成后断开?什么情况下会断开?

在 HTTP/1.0 中,一个服务器在发送完一个 HTTP 响应后,会断开 TCP 链接。但是这样每次请求都会重新建立和断开 TCP 连接,代价过大。所以虽然标准中没有设定,某些服务器对 Connection: keep-alive 的 Header 进行了支持。意思是说,完成这个 HTTP 请求之后,不要断开 HTTP 请求使用的 TCP 连接。这样的好处是连接可以被重新使用,之后发送 HTTP 请求的时候不需要重新建立 TCP 连接,以及如果维持连接,那么 SSL 的开销也可以避免。

持久连接:既然维持 TCP 连接好处这么多,HTTP/1.1 就把 Connection 头写进标准,并且默认开启持久连接,除非请求中写明 Connection: close,那么浏览器和服务器之间是会维持一段时间的 TCP 连接,不会一个请求结束就断掉。

默认情况下建立 TCP 连接不会断开,只有在请求报头中声明 Connection: close 才会在请求完成后关闭连接。

20 OSI七层模型中表示层和会话层功能是什么?

  • 表示层:图像、视频编码解,数据加密。

  • 会话层:建立会话,如session认证、断点续传。

21 对称密钥加密的优点缺点?

对称密钥加密(Symmetric-Key Encryption),加密和解密使用同一密钥。

  • 优点:运算速度快
  • 缺点:无法安全地将密钥传输给通信方

22 非对称密钥加密你了解吗?优缺点?

非对称密钥加密,又称公开密钥加密(Public-Key Encryption),加密和解密使用不同的密钥。

公开密钥所有人都可以获得,通信发送方获得接收方的公开密钥之后,就可以使用公开密钥进行加密接收方收到通信内容后使用私有密钥解密

非对称密钥除了用来加密,还可以用来进行签名。因为私有密钥无法被其他人获取,因此通信发送方使用其私有密钥进行签名,通信接收方使用发送方的公开密钥对签名进行解密,就能判断这个签名是否正确。

优缺点

  • 优点:可以更安全地将公开密钥传输给通信发送方;
  • 缺点:运算速度慢。

23 网络层有哪些常见协议?

协议 名称 作用
IP 网际协议 IP协议不但定义了数据传输时的基本单元和格式,还定义了数据报的递交方法和路由选择
ICMP Internet控制报文协议 ICMP就是一个“错误侦测与回报机制”,其目的就是让我们能够检测网路的连线状况﹐也能确保连线的准确性,是ping和traceroute的工作协议
RIP 路由信息协议 使用“跳数”(即metric)来衡量到达目标地址的路由距离
IGMP Internet组管理协议 用于实现组播、广播等通信

24 封包和拆包你听说过吗?它是基于TCP还是UDP的?

封包和拆包都是基于TCP的概念。因为TCP是无边界的流传输,所以需要对TCP进行封包和拆包,确保发送和接收的数据不粘连。

  • 封包:封包就是在发送数据报的时候为每个TCP数据包加上一个包头,将数据报分为包头和包体两个部分。包头是一个固定长度的结构体,里面包含该数据包的总长度。
  • 拆包:接收方在接收到报文后提取包头中的长度信息进行截取。

25 TCP的特点有哪些?

  • TCP是面向连接的。(就好像打电话一样,通话前需要先拨号建立连接,通话结束后要挂机释放连接);
  • 每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的(一对一);
  • TCP提供可靠交付的服务。通过TCP连接传送的数据,无差错、不丢失、不重复、并且按序到达;
  • TCP提供全双工通信。TCP允许通信双方的应用进程在任何时候都能发送数据。TCP连接的两端都设有发送缓存和接收缓存,用来临时存放双方通信的数据;
  • 面向字节流。TCP中的“流”(stream)指的是流入进程或从进程流出的字节序列。“面向字节流”的含义是:虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序交下来的数据仅仅看成是一连串的无结构的字节流。

26 数据链路层你知道哪些常见协议?

协议 名称 作用
ARP 地址解析协议 根据IP地址获取物理地址
RARP 反向地址转换协议 根据物理地址获取IP地址
PPP 点对点协议 主要是用来通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一种共通的解决方案

27 介绍一下Ping命令?它是基于什么协议?原理是什么?

ping是基于网络层的ICMP协议实现的。通过向对方发送一个ICMP回送请求报文,如果对方主机可达的话会收到该报文,并响应一个ICMP回送回答报文

扩展

ICMP报文的介绍,ICMP报文分为两个种类:

  1. ICMP差错报告报文,常见的有
    1. 终点不可达
    2. 时间超过
    3. 参数问题
    4. 改变路由
  2. ICMP询问报文
    1. 回送请求和回答:向特定主机发出回送请求报文,收到回送请求报文的主机响应回送回答报文
    2. 时间戳请求和回答:询问对方当前的时间,返回的是一个32位的时间戳。

28 理解xss、csrf、ddos攻击原理以及避免方式

XSS XSS(Cross-Site Scripting,跨站脚本攻击)是一种代码注入攻击。攻击者在目标网站上注入恶意代码,当被攻击者登陆网站时就会执行这些恶意代码,这些脚本可以读取 cookie,session tokens,或者其它敏感的网站信息,对用户进行钓鱼欺诈,甚至发起蠕虫攻击等。

XSS避免方式

  • url参数使用encodeURIComponent方法转义
  • 尽量不是有InnerHtml插入HTML内容
  • 使用特殊符号、标签转义符。

CSRF CSRF(Cross-site request forgery)跨站请求伪造:攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求。利用受害者在被攻击网站已经获取的注册凭证,绕过后台的用户验证,达到冒充用户对被攻击的网站执行某项操作的目的。

CSRF避免方式:

  • 添加验证码
  • 使用token
  • 服务端给用户生成一个token,加密后传递给用户
  • 用户在提交请求时,需要携带这个token
  • 服务端验证token是否正确 DDoS DDoS又叫分布式拒绝服务,全称 Distributed Denial of Service,其原理就是利用大量的请求造成资源过载,导致服务不可用。

DDos避免方式

  • 限制单IP请求频率。
  • 防火墙等防护设置禁止ICMP包等
  • 检查特权端口的开放

29 如何防范XSS攻击

1)前端,服务端,同时需要字符串输入的长度限制。 2)前端,服务端,同时需要对HTML转义处理。将其中的”<”,”>”等特殊字符进行转义编码。 防 XSS 的核心是必须对输入的数据做过滤处理。

30 CSRF攻击是什么?

跨站点请求伪造,指攻击者通过跨站请求,以合法的用户的身份进行非法操作。

可以这么理解CSRF攻击:攻击者盗用你的身份,以你的名义向第三方网站发送恶意请求。

CRSF能做的事情包括利用你的身份发邮件,发短信,进行交易转账,甚至盗取账号信息。

31 如何防范CSRF攻击

安全框架,例如Spring Security。 token机制。在HTTP请求中进行token验证,如果请求中没有token或者token内容不正确,则认为CSRF攻击而拒绝该请求。 验证码。通常情况下,验证码能够很好的遏制CSRF攻击,但是很多情况下,出于用户体验考虑,验证码只能作为一种辅助手段,而不是最主要的解决方案。 referer识别。在HTTP Header中有一个字段Referer,它记录了HTTP请求的来源地址。如果Referer是其他网站,就有可能是CSRF攻击,则拒绝该请求。但是,服务器并非都能取到Referer。很多用户出于隐私保护的考虑,限制了Referer的发送。在某些情况下,浏览器也不会发送Referer,例如HTTPS跳转到HTTP。 1)验证请求来源地址; 2)关键操作添加验证码; 3)在请求地址添加 token 并验证。

32 介绍几个TCP对应的应用层协议?

FTP:定义了文件传输协议,使用21端口. Telnet:它是一种用于远程登陆的端口,23端口 SMTP:定义了简单邮件传送协议,服务器开放的是25号端口。 POP3:它是和SMTP对应,POP3用于接收邮件。

33 JWT token是什么?

JWT Token是一种用于身份验证和授权的安全令牌,包含了用户的信息和数字签名,可以在多个系统间共享。

JWT由三部分组成:头部(Header)、载荷(Payload)和签名(Signature)。其中:

  • 头部包含令牌类型、算法、发行者、受众和有效期等信息;
  • 载荷包含用户信息;
  • 签名则是对整个JWT进行加密签名,以保证其安全性。

Token是一个用于访问资源的凭证,它包含了身份验证信息和关联的元数据。

34 IP数据报的报头字段?TTL的设置了解过吗?

IP数据报的报头字段包括:版本号、服务类型、总长度、标识符、标志位、片偏移、生存时间(TTL)、协议和头部校验和等。

其中,TTL字段是由IP数据包的发送者设置,在IP数据包从源到目的的整个转发路径上,每经过一个路由器,路由器都会修改这个TTL字段值,具体的做法是把该TTL的值减1,然后再将IP包转发出去。

如果在IP包到达目的IP之前,TTL减少为0,路由器将会丢弃收到的TTL=0的IP包并向IP包的发送者发送 ICMP time exceeded消息 。

35 IP包格式是什么?

IP包(Internet Protocol packet)是在互联网上进行数据传输的基本单位,其格式如下:

1、版本(Version):4位,表示IP协议的版本,当前版本为IPv4。

2、头部长度(Header Length):4位,表示IP包头部的长度,以32位字节为单位。

3、服务类型(Type of Service):8位,用于指定IP包的服务质量要求,如优先级、延迟、吞吐量等。

4、总长度(Total Length):16位,表示整个IP包的长度,包括头部和数据部分。

5、标识(Identification):16位,用于标识IP包的唯一性。

6、标志(Flags):3位,用于指示分片和重组的情况。

7、片偏移(Fragment Offset):13位,用于指示分片的偏移量。

8、生存时间(Time to Live):8位,表示IP包在网络中的生存时间,每经过一个路由器,该值减1,直到为0时被丢弃。

9、协议(Protocol):8位,指示IP包中数据部分的协议类型,如TCP、UDP等。

10、头部校验和(Header Checksum):16位,用于校验IP包头部的完整性。

11、源IP地址(Source IP Address):32位,指示发送方的IP地址。

12、目标IP地址(Destination IP Address):32位,指示接收方的IP地址。

13、选项(Options):可选字段,用于提供一些额外的功能或处理特殊的网络情况。

14、数据(Data):IP包的数据部分,根据协议类型的不同而有所差异。

以上是IPv4的IP包格式,IPv6的IP包格式稍有不同。## 1 OSI 的七层模型分别是?各自的功能是什么?

简要概括

  • 物理层:底层数据传输,如网线;网卡标准。

  • 数据链路层:定义数据的基本格式,如何传输,如何标识;如网卡MAC地址。

  • 网络层:定义IP编址,定义路由功能;如不同设备的数据转发。

  • 传输层:端到端传输数据的基本功能;如 TCP、UDP。

  • 会话层:控制应用程序之间会话能力;如不同软件数据分发给不同软件。

  • 表示层:数据格式标识,基本压缩加密功能。

  • 应用层:各种应用软件,包括 Web 应用。

说明

  • 在四层,既传输层数据被称作tcp报文段或udp用户数据报(Segments);
  • 三层网络层数据被称做(Packages);
  • 二层数据链路层时数据被称为(Frames);
  • 一层物理层时数据被称为比特流(Bits)。

总结

  • 网络七层模型是一个标准,而非实现。
  • 网络四层模型是一个实现的应用模型。
  • 网络四层模型由七层模型简化合并而来。

2 你知道DNS是什么?

官方解释:DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。

通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。

通俗的讲,我们更习惯于记住一个网站的名字,比如www.baidu.com,而不是记住它的ip地址,比如:167.23.10.2。

3 DNS的工作原理?

将主机域名转换为ip地址,属于应用层协议,使用UDP传输。(DNS应用层协议,以前有个考官问过)

总结: 浏览器缓存,系统缓存,路由器缓存,IPS服务器缓存,根域名服务器缓存,顶级域名服务器缓存,主域名服务器缓存。 一、主机向本地域名服务器的查询一般都是采用递归查询。 二、本地域名服务器向根域名服务器的查询的迭代查询。

  1. 当用户输入域名时,浏览器先检查自己的缓存中是否包含这个域名映射的ip地址,有解析结束。 2)若没命中,则检查操作系统缓存(如Windows的hosts)中有没有解析过的结果,有解析结束。 3)若无命中,则请求本地域名服务器解析(LDNS)。 4)若LDNS没有命中就直接跳到根域名服务器请求解析。根域名服务器返回给LDNS一个 主域名服务器地址。 5)此时LDNS再发送请求给上一步返回的gTLD( 通用顶级域), 接受请求的gTLD查找并返回这个域名对应的Name Server的地址 6)Name Server根据映射关系表找到目标ip,返回给LDNS
  2. LDNS缓存这个域名和对应的ip, 把解析的结果返回给用户,用户根据TTL值缓存到本地系统缓存中,域名解析过程至此结束

4 为什么区域传送用TCP协议?

因为TCP协议可靠性好!

你要从主DNS上复制内容啊,你用不可靠的UDP? 因为TCP协议传输的内容大啊,你用最大只能传512字节的UDP协议?万一同步的数据大于512字节,你怎么办? 所以用TCP协议比较好!

5 为什么服务器会缓存这一项功能?如何实现的?

原因

  • 缓解服务器压力;

  • 降低客户端获取资源的延迟:缓存通常位于内存中,读取缓存的速度更快。并且缓存服务器在地理位置上也有可能比源服务器来得近,例如浏览器缓存。

实现方法

  • 让代理服务器进行缓存;

  • 让客户端浏览器进行缓存。

6 如果 DNS 服务器和我们的主机在不同的子网,系统会怎样处理?

第一种回答

  1. 查浏览器缓存,看看有没有已经缓存好的,如果没有
  2. 检查本机host文件,
  3. 调用API,Linux下Socket函数 gethostbyname
  4. 向DNS服务器发送DNS请求,查询本地DNS服务器,这其中用的是UDP的协议
  5. 如果在一个子网内采用ARP地址解析协议进行ARP查询如果不在一个子网那就需要对默认网关进行DNS查询,如果还找不到会一直向上找根DNS服务器,直到最终拿到IP地址(全球400多个根DNS服务器,由13个不同的组织管理)
  6. 这个时候我们就有了服务器的IP地址 以及默认的端口号了,http默认是80 https是 443 端口号,会,首先尝试http然后调用Socket建立TCP连接,
  7. 经过三次握手成功建立连接后,开始传送数据,如果正是http协议的话,就返回就完事了,
  8. 如果不是http协议,服务器会返回一个5开头的的重定向消息,告诉我们用的是https,那就是说IP没变,但是端口号从80变成443了,好了,再四次挥手,完事,
  9. 再来一遍,这次除了上述的端口号从80变成443之外,还会采用SSL的加密技术来保证传输数据的安全性,保证数据传输过程中不被修改或者替换之类的,
  10. 这次依然是三次握手,沟通好双方使用的认证算法,加密和检验算法,在此过程中也会检验对方的CA安全证书。
  11. 确认无误后,开始通信,然后服务器就会返回你所要访问的网址的一些数据,在此过程中会将界面进行渲染,牵涉到ajax技术之类的,直到最后我们看到色彩斑斓的网页

第二种回答

  1. 浏览器检查域名是否在缓存当中(要查看 Chrome 当中的缓存, 打开 chrome://net-internals/dns)。

  2. 如果缓存中没有,就去调用 gethostbyname 库函数(操作系统不同函数也不同)进行查询。

  3. 如果 gethostbyname 没有这个域名的缓存记录,也没有在 hosts 里找到,它将会向 DNS 服务器发送一条 DNS 查询请求。DNS 服务器是由网络通信栈提供的,通常是本地路由器或者 ISP 的缓存 DNS 服务器。

  4. 查询本地 DNS 服务器

  5. 如果 DNS 服务器和我们的主机在同一个子网内,系统会按照下面的 ARP 过程对 DNS 服务器进行 ARP查询

7 谈谈DNS解析过程,具体一点

  • 请求一旦发起,若是chrome浏览器,先在浏览器找之前有没有缓存过的域名所对应的ip地址,有的话,直接跳过dns解析了,若是没有,就会找硬盘的hosts文件,看看有没有,有的话,直接找到hosts文件里面的ip
  • 如果本地的hosts文件没有能得到对应的ip地址,浏览器会发出一个dns请求到本地dns服务器本地dns服务器一般都是你的网络接入服务器商提供,比如中国电信,中国移动等。
  • 查询你输入的网址的DNS请求到达本地DNS服务器之后,本地DNS服务器会首先查询它的缓存记录,如果缓存中有此条记录,就可以直接返回结果,此过程是递归的方式进行查询。如果没有,本地DNS服务器还要向DNS根服务器进行查询。
  • 本地DNS服务器继续向域服务器发出请求,在这个例子中,请求的对象是.com域服务器。.com域服务器收到请求之后,也不会直接返回域名和IP地址的对应关系,而是告诉本地DNS服务器,你的域名的解析服务器的地址。
  • 最后,本地DNS服务器向域名的解析服务器发出请求,这时就能收到一个域名和IP地址对应关系,本地DNS服务器不仅要把IP地址返回给用户电脑,还要把这个对应关系保存在缓存中,以备下次别的用户查询时,可以直接返回结果,加快网络访问。

8 DNS负载均衡是什么策略?

当一个网站有足够多的用户的时候,假如每次请求的资源都位于同一台机器上面,那么这台机器随时可能会崩掉。处理办法就是用DNS负载均衡技术,它的原理是在DNS服务器中为同一个主机名配置多个IP地址,在应答DNS查询时,DNS服务器对每个查询将以DNS文件中主机记录的IP地址按顺序返回不同的解析结果,将客户端的访问引导到不同的机器上去,使得不同的客户端访问不同的服务器,从而达到负载均衡的目的。

例如可以根据每台机器的负载量,该机器离用户地理位置的距离等等。

9 SQL注入攻击了解吗?

攻击者在HTTP请求中注入恶意的SQL代码,服务器使用参数构建数据库SQL命令时,恶意SQL被一起构造,并在数据库中执行。 用户登录,输入用户名 lianggzone,密码 ‘ or ‘1’=’1 ,如果此时使用参数构造的方式,就会出现 select * from user where name = 'lianggzone' and password = '' or '1'='1'。 不管用户名和密码是什么内容,使查询出来的用户列表不为空。如何防范SQL注入攻击使用预编译的PrepareStatement是必须的,但是一般我们会从两个方面同时入手。 Web端 1)有效性检验。 2)限制字符串输入的长度。 服务端 1)不用拼接SQL字符串。 2)使用预编译的PrepareStatement。 3)有效性检验。(为什么服务端还要做有效性检验?第一准则,外部都是不可信的,防止攻击者绕过Web端请求) 4)过滤SQL需要的参数中的特殊字符。比如单引号、双引号。

10 什么是RARP?工作原理

概括

反向地址转换协议,网络层协议,RARP与ARP工作方式相反。 RARP使只知道自己硬件地址的主机能够知道其IP地址。RARP发出要反向解释的物理地址并希望返回其IP地址,应答包括能够提供所需信息的RARP服务器发出的IP地址。 原理 (1)网络上的每台设备都会有一个独一无二的硬件地址,通常是由设备厂商分配的MAC地址。主机从网卡上读取MAC地址,然后在网络上发送一个RARP请求的广播数据包,请求RARP服务器回复该主机的IP地址。

(2)RARP服务器收到了RARP请求数据包,为其分配IP地址,并将RARP回应发送给主机。

(3)PC1收到RARP回应后,就使用得到的IP地址进行通讯。

11 端口有效范围是多少到多少?

0-1023为知名端口号,比如其中HTTP是80,FTP是20(数据端口)、21(控制端口)

UDP和TCP报头使用两个字节存放端口号,所以端口号的有效范围是从0到65535。动态端口的范围是从1024到65535

12 为何需要把 TCP/IP 协议栈分成 5 层(或7层)?开放式回答。

ARPANET 的研制经验表明,对于复杂的计算机网络协议,其结构应该是层次式的。

分层的好处:

①隔层之间是独立的

②灵活性好

③结构上可以分隔开

④易于实现和维护

⑤能促进标准化工作。

13 DNS查询方式有哪些?

递归解析

当局部DNS服务器自己不能回答客户机的DNS查询时,它就需要向其他DNS服务器进行查询。此时有两种方式。局部DNS服务器自己负责向其他DNS服务器进行查询,一般是先向该域名的根域服务器查询,再由根域名服务器一级级向下查询。最后得到的查询结果返回给局部DNS服务器,再由局部DNS服务器返回给客户端。

迭代解析

当局部DNS服务器自己不能回答客户机的DNS查询时,也可以通过迭代查询的方式进行解析。局部DNS服务器不是自己向其他DNS服务器进行查询,而是把能解析该域名的其他DNS服务器的IP地址返回给客户端DNS程序,客户端DNS程序再继续向这些DNS服务器进行查询,直到得到查询结果为止。也就是说,迭代解析只是帮你找到相关的服务器而已,而不会帮你去查。比如说:baidu.com的服务器ip地址在192.168.4.5这里,你自己去查吧,本人比较忙,只能帮你到这里了。

14 DDos 攻击了解吗?

客户端向服务端发送请求链接数据包,服务端向客户端发送确认数据包,客户端不向服务端发送确认数据包,服务器一直等待来自客户端的确认 没有彻底根治的办法,除非不使用TCP DDos 预防: 1)限制同时打开SYN半链接的数目 2)缩短SYN半链接的Time out 时间 3)关闭不必要的服务

15 MTU和MSS分别是什么?

MTU:maximum transmission unit,最大传输单元,由硬件规定,如以太网的MTU为1500字节。

MSS:maximum segment size,最大分节大小,为TCP数据包每次传输的最大数据分段大小,一般由发送端向对端TCP通知对端在每个分节中能发送的最大TCP数据。MSS值为MTU值减去IPv4 Header(20 Byte)和TCP header(20 Byte)得到。

16 网络的七层/五层模型主要的协议有哪些?

17 OSI 的七层模型的主要功能?

**物理层:**利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。 **数据链路层:**接收来自物理层的位流形式的数据,并封装成帧,传送到上一层 **网络层:**将网络地址翻译成对应的物理地址,并通过路由选择算法为分组通过通信子网选择最适当的路径。 **传输层:**在源端与目的端之间提供可靠的透明数据传输 **会话层:**负责在网络中的两节点之间建立、维持和终止通信 **表示层:**处理用户信息的表示问题,数据的编码,压缩和解压缩,数据的加密和解密 **应用层:**为用户的应用进程提供网络通信服务

18 应用层常见协议知道多少?了解几个?

协议 名称 默认端口 底层协议
HTTP 超文本传输协议 80 TCP
HTTPS 超文本传输安全协议 443 TCP
Telnet 远程登录服务的标准协议 23 TCP
FTP 文件传输协议 20传输和21连接 TCP
TFTP 简单文件传输协议 69 UDP
SMTP 简单邮件传输协议(发送用) 25 TCP
POP 邮局协议(接收用) 110 TCP
DNS 域名解析服务 53 服务器间进行域传输的时候用TCP
客户端查询DNS服务器时用 UDP

19 浏览器在与服务器建立了一个 TCP 连接后是否会在一个 HTTP 请求完成后断开?什么情况下会断开?

在 HTTP/1.0 中,一个服务器在发送完一个 HTTP 响应后,会断开 TCP 链接。但是这样每次请求都会重新建立和断开 TCP 连接,代价过大。所以虽然标准中没有设定,某些服务器对 Connection: keep-alive 的 Header 进行了支持。意思是说,完成这个 HTTP 请求之后,不要断开 HTTP 请求使用的 TCP 连接。这样的好处是连接可以被重新使用,之后发送 HTTP 请求的时候不需要重新建立 TCP 连接,以及如果维持连接,那么 SSL 的开销也可以避免。

持久连接:既然维持 TCP 连接好处这么多,HTTP/1.1 就把 Connection 头写进标准,并且默认开启持久连接,除非请求中写明 Connection: close,那么浏览器和服务器之间是会维持一段时间的 TCP 连接,不会一个请求结束就断掉。

默认情况下建立 TCP 连接不会断开,只有在请求报头中声明 Connection: close 才会在请求完成后关闭连接。

20 OSI七层模型中表示层和会话层功能是什么?

  • 表示层:图像、视频编码解,数据加密。

  • 会话层:建立会话,如session认证、断点续传。

21 对称密钥加密的优点缺点?

对称密钥加密(Symmetric-Key Encryption),加密和解密使用同一密钥。

  • 优点:运算速度快
  • 缺点:无法安全地将密钥传输给通信方

22 非对称密钥加密你了解吗?优缺点?

非对称密钥加密,又称公开密钥加密(Public-Key Encryption),加密和解密使用不同的密钥。

公开密钥所有人都可以获得,通信发送方获得接收方的公开密钥之后,就可以使用公开密钥进行加密接收方收到通信内容后使用私有密钥解密

非对称密钥除了用来加密,还可以用来进行签名。因为私有密钥无法被其他人获取,因此通信发送方使用其私有密钥进行签名,通信接收方使用发送方的公开密钥对签名进行解密,就能判断这个签名是否正确。

优缺点

  • 优点:可以更安全地将公开密钥传输给通信发送方;
  • 缺点:运算速度慢。

23 网络层有哪些常见协议?

协议 名称 作用
IP 网际协议 IP协议不但定义了数据传输时的基本单元和格式,还定义了数据报的递交方法和路由选择
ICMP Internet控制报文协议 ICMP就是一个“错误侦测与回报机制”,其目的就是让我们能够检测网路的连线状况﹐也能确保连线的准确性,是ping和traceroute的工作协议
RIP 路由信息协议 使用“跳数”(即metric)来衡量到达目标地址的路由距离
IGMP Internet组管理协议 用于实现组播、广播等通信

24 封包和拆包你听说过吗?它是基于TCP还是UDP的?

封包和拆包都是基于TCP的概念。因为TCP是无边界的流传输,所以需要对TCP进行封包和拆包,确保发送和接收的数据不粘连。

  • 封包:封包就是在发送数据报的时候为每个TCP数据包加上一个包头,将数据报分为包头和包体两个部分。包头是一个固定长度的结构体,里面包含该数据包的总长度。
  • 拆包:接收方在接收到报文后提取包头中的长度信息进行截取。

25 TCP的特点有哪些?

  • TCP是面向连接的。(就好像打电话一样,通话前需要先拨号建立连接,通话结束后要挂机释放连接);
  • 每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的(一对一);
  • TCP提供可靠交付的服务。通过TCP连接传送的数据,无差错、不丢失、不重复、并且按序到达;
  • TCP提供全双工通信。TCP允许通信双方的应用进程在任何时候都能发送数据。TCP连接的两端都设有发送缓存和接收缓存,用来临时存放双方通信的数据;
  • 面向字节流。TCP中的“流”(stream)指的是流入进程或从进程流出的字节序列。“面向字节流”的含义是:虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序交下来的数据仅仅看成是一连串的无结构的字节流。

26 数据链路层你知道哪些常见协议?

协议 名称 作用
ARP 地址解析协议 根据IP地址获取物理地址
RARP 反向地址转换协议 根据物理地址获取IP地址
PPP 点对点协议 主要是用来通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一种共通的解决方案

27 介绍一下Ping命令?它是基于什么协议?原理是什么?

ping是基于网络层的ICMP协议实现的。通过向对方发送一个ICMP回送请求报文,如果对方主机可达的话会收到该报文,并响应一个ICMP回送回答报文

扩展

ICMP报文的介绍,ICMP报文分为两个种类:

  1. ICMP差错报告报文,常见的有
    1. 终点不可达
    2. 时间超过
    3. 参数问题
    4. 改变路由
  2. ICMP询问报文
    1. 回送请求和回答:向特定主机发出回送请求报文,收到回送请求报文的主机响应回送回答报文
    2. 时间戳请求和回答:询问对方当前的时间,返回的是一个32位的时间戳。

28 理解xss、csrf、ddos攻击原理以及避免方式

XSS XSS(Cross-Site Scripting,跨站脚本攻击)是一种代码注入攻击。攻击者在目标网站上注入恶意代码,当被攻击者登陆网站时就会执行这些恶意代码,这些脚本可以读取 cookie,session tokens,或者其它敏感的网站信息,对用户进行钓鱼欺诈,甚至发起蠕虫攻击等。

XSS避免方式

  • url参数使用encodeURIComponent方法转义
  • 尽量不是有InnerHtml插入HTML内容
  • 使用特殊符号、标签转义符。

CSRF CSRF(Cross-site request forgery)跨站请求伪造:攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求。利用受害者在被攻击网站已经获取的注册凭证,绕过后台的用户验证,达到冒充用户对被攻击的网站执行某项操作的目的。

CSRF避免方式:

  • 添加验证码
  • 使用token
  • 服务端给用户生成一个token,加密后传递给用户
  • 用户在提交请求时,需要携带这个token
  • 服务端验证token是否正确 DDoS DDoS又叫分布式拒绝服务,全称 Distributed Denial of Service,其原理就是利用大量的请求造成资源过载,导致服务不可用。

DDos避免方式

  • 限制单IP请求频率。
  • 防火墙等防护设置禁止ICMP包等
  • 检查特权端口的开放

29 如何防范XSS攻击

1)前端,服务端,同时需要字符串输入的长度限制。 2)前端,服务端,同时需要对HTML转义处理。将其中的”<”,”>”等特殊字符进行转义编码。 防 XSS 的核心是必须对输入的数据做过滤处理。

30 CSRF攻击是什么?

跨站点请求伪造,指攻击者通过跨站请求,以合法的用户的身份进行非法操作。

可以这么理解CSRF攻击:攻击者盗用你的身份,以你的名义向第三方网站发送恶意请求。

CRSF能做的事情包括利用你的身份发邮件,发短信,进行交易转账,甚至盗取账号信息。

31 如何防范CSRF攻击

安全框架,例如Spring Security。 token机制。在HTTP请求中进行token验证,如果请求中没有token或者token内容不正确,则认为CSRF攻击而拒绝该请求。 验证码。通常情况下,验证码能够很好的遏制CSRF攻击,但是很多情况下,出于用户体验考虑,验证码只能作为一种辅助手段,而不是最主要的解决方案。 referer识别。在HTTP Header中有一个字段Referer,它记录了HTTP请求的来源地址。如果Referer是其他网站,就有可能是CSRF攻击,则拒绝该请求。但是,服务器并非都能取到Referer。很多用户出于隐私保护的考虑,限制了Referer的发送。在某些情况下,浏览器也不会发送Referer,例如HTTPS跳转到HTTP。 1)验证请求来源地址; 2)关键操作添加验证码; 3)在请求地址添加 token 并验证。

32 介绍几个TCP对应的应用层协议?

FTP:定义了文件传输协议,使用21端口. Telnet:它是一种用于远程登陆的端口,23端口 SMTP:定义了简单邮件传送协议,服务器开放的是25号端口。 POP3:它是和SMTP对应,POP3用于接收邮件。

33 JWT token是什么?

JWT Token是一种用于身份验证和授权的安全令牌,包含了用户的信息和数字签名,可以在多个系统间共享。

JWT由三部分组成:头部(Header)、载荷(Payload)和签名(Signature)。其中:

  • 头部包含令牌类型、算法、发行者、受众和有效期等信息;
  • 载荷包含用户信息;
  • 签名则是对整个JWT进行加密签名,以保证其安全性。

Token是一个用于访问资源的凭证,它包含了身份验证信息和关联的元数据。

34 IP数据报的报头字段?TTL的设置了解过吗?

IP数据报的报头字段包括:版本号、服务类型、总长度、标识符、标志位、片偏移、生存时间(TTL)、协议和头部校验和等。

其中,TTL字段是由IP数据包的发送者设置,在IP数据包从源到目的的整个转发路径上,每经过一个路由器,路由器都会修改这个TTL字段值,具体的做法是把该TTL的值减1,然后再将IP包转发出去。

如果在IP包到达目的IP之前,TTL减少为0,路由器将会丢弃收到的TTL=0的IP包并向IP包的发送者发送 ICMP time exceeded消息 。

35 IP包格式是什么?

IP包(Internet Protocol packet)是在互联网上进行数据传输的基本单位,其格式如下:

1、版本(Version):4位,表示IP协议的版本,当前版本为IPv4。

2、头部长度(Header Length):4位,表示IP包头部的长度,以32位字节为单位。

3、服务类型(Type of Service):8位,用于指定IP包的服务质量要求,如优先级、延迟、吞吐量等。

4、总长度(Total Length):16位,表示整个IP包的长度,包括头部和数据部分。

5、标识(Identification):16位,用于标识IP包的唯一性。

6、标志(Flags):3位,用于指示分片和重组的情况。

7、片偏移(Fragment Offset):13位,用于指示分片的偏移量。

8、生存时间(Time to Live):8位,表示IP包在网络中的生存时间,每经过一个路由器,该值减1,直到为0时被丢弃。

9、协议(Protocol):8位,指示IP包中数据部分的协议类型,如TCP、UDP等。

10、头部校验和(Header Checksum):16位,用于校验IP包头部的完整性。

11、源IP地址(Source IP Address):32位,指示发送方的IP地址。

12、目标IP地址(Destination IP Address):32位,指示接收方的IP地址。

13、选项(Options):可选字段,用于提供一些额外的功能或处理特殊的网络情况。

14、数据(Data):IP包的数据部分,根据协议类型的不同而有所差异。

以上是IPv4的IP包格式,IPv6的IP包格式稍有不同。

#牛客解忧铺#
Job-Hunter 文章被收录于专栏

2024年最新整理的八股文。 包括计算机网络,操作系统,MySQL,linux,设计模式,数据结构和算法,等等。 题目来源于网友爆料,GZH摘录,CSDN等等。 根据考察知识点,将题目进行分类,方便背诵。

全部评论
先收藏了
点赞 回复 分享
发布于 2024-04-28 20:56 浙江

相关推荐

点赞 评论 收藏
分享
评论
4
19
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务