计算机网络|综合
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服务器缓存,根域名服务器缓存,顶级域名服务器缓存,主域名服务器缓存。 一、主机向本地域名服务器的查询一般都是采用递归查询。 二、本地域名服务器向根域名服务器的查询的迭代查询。
- 当用户输入域名时,浏览器先检查自己的缓存中是否包含这个域名映射的ip地址,有解析结束。 2)若没命中,则检查操作系统缓存(如Windows的hosts)中有没有解析过的结果,有解析结束。 3)若无命中,则请求本地域名服务器解析(LDNS)。 4)若LDNS没有命中就直接跳到根域名服务器请求解析。根域名服务器返回给LDNS一个 主域名服务器地址。 5)此时LDNS再发送请求给上一步返回的gTLD( 通用顶级域), 接受请求的gTLD查找并返回这个域名对应的Name Server的地址 6)Name Server根据映射关系表找到目标ip,返回给LDNS
- LDNS缓存这个域名和对应的ip, 把解析的结果返回给用户,用户根据TTL值缓存到本地系统缓存中,域名解析过程至此结束
4 为什么区域传送用TCP协议?
因为TCP协议可靠性好!
你要从主DNS上复制内容啊,你用不可靠的UDP? 因为TCP协议传输的内容大啊,你用最大只能传512字节的UDP协议?万一同步的数据大于512字节,你怎么办? 所以用TCP协议比较好!
5 为什么服务器会缓存这一项功能?如何实现的?
原因
-
缓解服务器压力;
-
降低客户端获取资源的延迟:缓存通常位于内存中,读取缓存的速度更快。并且缓存服务器在地理位置上也有可能比源服务器来得近,例如浏览器缓存。
实现方法
-
让代理服务器进行缓存;
-
让客户端浏览器进行缓存。
6 如果 DNS 服务器和我们的主机在不同的子网,系统会怎样处理?
第一种回答
- 查浏览器缓存,看看有没有已经缓存好的,如果没有
- 检查本机host文件,
- 调用API,Linux下Socket函数 gethostbyname
- 向DNS服务器发送DNS请求,查询本地DNS服务器,这其中用的是UDP的协议
- 如果在一个子网内采用ARP地址解析协议进行ARP查询如果不在一个子网那就需要对默认网关进行DNS查询,如果还找不到会一直向上找根DNS服务器,直到最终拿到IP地址(全球400多个根DNS服务器,由13个不同的组织管理)
- 这个时候我们就有了服务器的IP地址 以及默认的端口号了,http默认是80 https是 443 端口号,会,首先尝试http然后调用Socket建立TCP连接,
- 经过三次握手成功建立连接后,开始传送数据,如果正是http协议的话,就返回就完事了,
- 如果不是http协议,服务器会返回一个5开头的的重定向消息,告诉我们用的是https,那就是说IP没变,但是端口号从80变成443了,好了,再四次挥手,完事,
- 再来一遍,这次除了上述的端口号从80变成443之外,还会采用SSL的加密技术来保证传输数据的安全性,保证数据传输过程中不被修改或者替换之类的,
- 这次依然是三次握手,沟通好双方使用的认证算法,加密和检验算法,在此过程中也会检验对方的CA安全证书。
- 确认无误后,开始通信,然后服务器就会返回你所要访问的网址的一些数据,在此过程中会将界面进行渲染,牵涉到ajax技术之类的,直到最后我们看到色彩斑斓的网页
第二种回答
-
浏览器检查域名是否在缓存当中(要查看 Chrome 当中的缓存, 打开 chrome://net-internals/dns)。
-
如果缓存中没有,就去调用
gethostbyname
库函数(操作系统不同函数也不同)进行查询。 -
如果
gethostbyname
没有这个域名的缓存记录,也没有在hosts
里找到,它将会向 DNS 服务器发送一条 DNS 查询请求。DNS 服务器是由网络通信栈提供的,通常是本地路由器或者 ISP 的缓存 DNS 服务器。 -
查询本地 DNS 服务器
-
如果 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报文分为两个种类:
- ICMP差错报告报文,常见的有
- 终点不可达
- 时间超过
- 参数问题
- 改变路由
- ICMP询问报文
- 回送请求和回答:向特定主机发出回送请求报文,收到回送请求报文的主机响应回送回答报文。
- 时间戳请求和回答:询问对方当前的时间,返回的是一个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服务器缓存,根域名服务器缓存,顶级域名服务器缓存,主域名服务器缓存。 一、主机向本地域名服务器的查询一般都是采用递归查询。 二、本地域名服务器向根域名服务器的查询的迭代查询。
- 当用户输入域名时,浏览器先检查自己的缓存中是否包含这个域名映射的ip地址,有解析结束。 2)若没命中,则检查操作系统缓存(如Windows的hosts)中有没有解析过的结果,有解析结束。 3)若无命中,则请求本地域名服务器解析(LDNS)。 4)若LDNS没有命中就直接跳到根域名服务器请求解析。根域名服务器返回给LDNS一个 主域名服务器地址。 5)此时LDNS再发送请求给上一步返回的gTLD( 通用顶级域), 接受请求的gTLD查找并返回这个域名对应的Name Server的地址 6)Name Server根据映射关系表找到目标ip,返回给LDNS
- LDNS缓存这个域名和对应的ip, 把解析的结果返回给用户,用户根据TTL值缓存到本地系统缓存中,域名解析过程至此结束
4 为什么区域传送用TCP协议?
因为TCP协议可靠性好!
你要从主DNS上复制内容啊,你用不可靠的UDP? 因为TCP协议传输的内容大啊,你用最大只能传512字节的UDP协议?万一同步的数据大于512字节,你怎么办? 所以用TCP协议比较好!
5 为什么服务器会缓存这一项功能?如何实现的?
原因
-
缓解服务器压力;
-
降低客户端获取资源的延迟:缓存通常位于内存中,读取缓存的速度更快。并且缓存服务器在地理位置上也有可能比源服务器来得近,例如浏览器缓存。
实现方法
-
让代理服务器进行缓存;
-
让客户端浏览器进行缓存。
6 如果 DNS 服务器和我们的主机在不同的子网,系统会怎样处理?
第一种回答
- 查浏览器缓存,看看有没有已经缓存好的,如果没有
- 检查本机host文件,
- 调用API,Linux下Socket函数 gethostbyname
- 向DNS服务器发送DNS请求,查询本地DNS服务器,这其中用的是UDP的协议
- 如果在一个子网内采用ARP地址解析协议进行ARP查询如果不在一个子网那就需要对默认网关进行DNS查询,如果还找不到会一直向上找根DNS服务器,直到最终拿到IP地址(全球400多个根DNS服务器,由13个不同的组织管理)
- 这个时候我们就有了服务器的IP地址 以及默认的端口号了,http默认是80 https是 443 端口号,会,首先尝试http然后调用Socket建立TCP连接,
- 经过三次握手成功建立连接后,开始传送数据,如果正是http协议的话,就返回就完事了,
- 如果不是http协议,服务器会返回一个5开头的的重定向消息,告诉我们用的是https,那就是说IP没变,但是端口号从80变成443了,好了,再四次挥手,完事,
- 再来一遍,这次除了上述的端口号从80变成443之外,还会采用SSL的加密技术来保证传输数据的安全性,保证数据传输过程中不被修改或者替换之类的,
- 这次依然是三次握手,沟通好双方使用的认证算法,加密和检验算法,在此过程中也会检验对方的CA安全证书。
- 确认无误后,开始通信,然后服务器就会返回你所要访问的网址的一些数据,在此过程中会将界面进行渲染,牵涉到ajax技术之类的,直到最后我们看到色彩斑斓的网页
第二种回答
-
浏览器检查域名是否在缓存当中(要查看 Chrome 当中的缓存, 打开 chrome://net-internals/dns)。
-
如果缓存中没有,就去调用
gethostbyname
库函数(操作系统不同函数也不同)进行查询。 -
如果
gethostbyname
没有这个域名的缓存记录,也没有在hosts
里找到,它将会向 DNS 服务器发送一条 DNS 查询请求。DNS 服务器是由网络通信栈提供的,通常是本地路由器或者 ISP 的缓存 DNS 服务器。 -
查询本地 DNS 服务器
-
如果 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报文分为两个种类:
- ICMP差错报告报文,常见的有
- 终点不可达
- 时间超过
- 参数问题
- 改变路由
- ICMP询问报文
- 回送请求和回答:向特定主机发出回送请求报文,收到回送请求报文的主机响应回送回答报文。
- 时间戳请求和回答:询问对方当前的时间,返回的是一个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包格式稍有不同。
#牛客解忧铺#2024年最新整理的八股文。 包括计算机网络,操作系统,MySQL,linux,设计模式,数据结构和算法,等等。 题目来源于网友爆料,GZH摘录,CSDN等等。 根据考察知识点,将题目进行分类,方便背诵。