计算机网络浓缩笔记(1)-基础

 文章笔记主要引用:

阿秀的学习笔记 (interviewguide.cn)

小林coding (xiaolincoding.com)

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

OSI:

  • 应用层,负责给应用程序提供统一的接口;

  • 表示层,负责把数据转换成兼容另一个系统能识别的格式;

  • 会话层,负责建立、管理和终止表示层实体之间的通信会话;

  • 传输层,负责端到端的数据传输;

  • 网络层,负责数据的路由、转发、分片;

  • 数据链路层,负责数据的封和差错检测,以及 MAC 寻址;

  • 物理层,负责在物理网络中传输数据帧;

实用的是四层模型,即 TCP/IP 网络模型:

  • 应用层,负责向用户提供一组应用程序,比如 HTTP、DNS、FTP 等;

  • 传输层,负责端到端的通信,比如 TCP、UDP 等;

  • 网络层,负责网络的封装、分片、路由、转发,比如 IP、ICMP 等;

  • 网络接口层,负责网络包在物理网络中的传输,比如网络包的封帧、 MAC 寻址、差错检测,以及通过网卡传输网络帧等;

说一下一次完整的HTTP请求过程包括哪些内容?

具体的流程如下:

  • URL解析:浏览器首先解析输入的URL,提取出协议、主机名、端口号、路径等信息。

  • DNS解析:浏览器将主机名转换为对应的IP地址,通过DNS解析来完成这一步骤。

  • 建立TCP连接:浏览器与服务器之间建立TCP连接,通过三次握手建立可靠的连接。

  • 发送HTTP请求:浏览器构建HTTP请求报文,包括请求方法(GET、POST等)、请求头部、请求体等信息,并将其发送给服务器。

  • 服务器处理请求:服务器接收到请求后,根据请求的路径、参数等进行处理,并生成对应的HTTP响应。

  • 接收HTTP响应:浏览器接收到服务器返回的HTTP响应报文,包括响应状态码、响应头部、响应体等信息。

  • 渲染页面:浏览器根据接收到的响应数据,解析HTML、CSS、JavaScript等资源,并进行页面的渲染,展示给用户。

  • 关闭TCP连接:页面渲染完成后,浏览器与服务器之间的TCP连接会被关闭,释放网络资源。

你知道DNS是什么?

域名和IP地址相互映射的一个分布式数据库。一种服务器就专门保存了 Web 服务器域名与 IP 的对应关系,它就是 DNS 服务器。

DNS的工作原理

将主机域名转换为ip地址,属于应用层协议,使用UDP传输。

域名 用句点来分隔越靠右的位置表示其层级越高

域名解析的工作流程:

  1. 浏览器会先看自身有没有对这个域名的缓存,如果有,就直接返回,如果没有,就去问操作系统,操作系统也会去看自己的缓存,如果有,就直接返回,如果没有,再去 hosts 文件看,也没有,才会去问「本地 DNS 服务器」。

  2. 客户端首先会发出一个 DNS 请求,问域的 IP 是啥,并发给本地 DNS 服务器(也就是客户端的 TCP/IP 设置中填写的 DNS 服务器地址)。

  3. 本地域名服务器先查询缓存里的表格,有则它直接返回 IP 地址。如果没有,本地 DNS 会去依次查询根域名服务器(.).com 顶级域名服务器权威 DNS 服务器

  4. 最后,权威 DNS 服务器查询后将对应的 IP 地址 X.X.X.X 告诉本地 DNS。

  5. 本地 DNS 再将 IP 地址返回客户端,客户端和目标建立连接。

为什么域名解析用UDP协议?

因为UDP快啊!UDP的DNS协议只要一个请求、一个应答就好了。

而使用基于TCP的DNS协议要三次握手、发送数据以及应答、四次挥手。

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

因为TCP协议可靠性好啊!

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

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

原因

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

实现方法

  • 让代理服务器进行缓存;
  • 让客户端浏览器进行缓存。

在浏览器地址栏输入一个URL后回车,背后会进行哪些技术步骤?

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技术之类的,直到最后我们看到色彩斑斓的网页

DNS负载均衡是什么策略?(一致性哈希)

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

一致性哈希是指将「存储节点」和「数据」都映射到一个首尾相连的哈希环上,如果增加或者移除一个节点,仅影响该节点在哈希环上顺时针相邻的后继节点,其它数据也不会受到影响。

为了解决一致性哈希算法不能够均匀的分布节点的问题,就需要引入虚拟节点,对一个真实节点做多个副本。不再将真实节点映射到哈希环上,而是将虚拟节点映射到哈希环上,并将虚拟节点映射到实际节点,所以这里有「两层」映射关系。

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

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

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

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

分层的好处:

①隔层之间是独立的

②易于实现和维护

③结构上可以分隔开

④灵活性好

⑤能促进标准化工作。

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)得到。

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

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

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

TCP对应的应用层协议

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

UDP对应的应用层协议

DNS:用于域名解析服务,用的是53号端口 SNMP:简单网络管理协议,使用161号端口 TFTP(Trival File Transfer Protocal):简单文件传输协议,69

数据链路层常见协议?可以说一下吗?

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

XSS攻击是什么?(低频)

跨站点脚本攻击,指攻击者通过篡改网页,嵌入恶意脚本程序,在用户浏览网页时,控制用户浏览器进行恶意操作的一种攻击方式。如何防范XSS攻击 1)前端,服务端,同时需要字符串输入的长度限制。 2)前端,服务端,同时需要对HTML转义处理。将其中的”<”,”>”等特殊字符进行转义编码。 防 XSS 的核心是必须对输入的数据做过滤处理

CSRF攻击?你知道吗?

跨站点请求伪造,指攻击者通过跨站请求,以合法的用户的身份进行非法操作。可以这么理解CSRF攻击:攻击者盗用你的身份,以你的名义向第三方网站发送恶意请求。CRSF能做的事情包括利用你的身份发邮件,发短信,进行交易转账,甚至盗取账号信息。

如何防范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 并验证。

文件上传漏洞是如何发生的?你有经历过吗?

文件上传漏洞,指的是用户上传一个可执行的脚本文件,并通过此脚本文件获得了执行服务端命令的能力。 许多第三方框架、服务,都曾经被爆出文件上传漏洞,比如很早之前的Struts2,以及富文本编辑器等等,可被攻击者上传恶意代码,有可能服务端就被人黑了。

如何防范文件上传漏洞

文件上传的目录设置为不可执行。

1)判断文件类型。在判断文件类型的时候,可以结合使用MIME Type,后缀检查等方式。因为对于上传文件,不能简单地通过后缀名称来判断文件的类型,因为攻击者可以将可执行文件的后缀名称改为图片或其他后缀类型,诱导用户执行。

2)对上传的文件类型进行白名单校验,只允许上传可靠类型。

3)上传的文件需要进行重新命名,使攻击者无法猜想上传文件的访问路径,将极大地增加攻击成本,同时向shell.php.rar.ara这种文件,因为重命名而无法成功实施攻击。

4)限制上传文件的大小。

5)单独设置文件服务器的域名。

一台机器能够使用的端口号上限是多少,是否可以修改?如果想要用的端口超过这个限制怎么办?

65536.因为TCP的报文头部中源端口号和目的端口号的长度是16位,也就是可以表示2^16=65536个不同端口号,因此TCP可供识别的端口号最多只有65536个。但是由于0到1023是知名服务端口,所以实际上还要少1024个端口号。

而对于服务器来说,可以开的端口号与65536无关,其实是受限于Linux可以打开的文件数量,并且可以通过MaxUserPort来进行配置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
谢希仁编著的《计算机网络(第七版)》是一本经典的计算机网络教材,由电子工业出版社出版。该书系统全面地介绍了计算机网络的基本概念、原理、协议和技术。 这本书分为16个章节,涵盖了计算机网络的各个重要方面,包括网络体系结构、物理层、数据链路层、网络层、传输层、应用层等。每个章节都以清晰的文字和图表来解释相关的概念和原理,帮助读者深入理解和掌握计算机网络的知识。 与其他计算机网络教材相比,《计算机网络(第七版)》具有以下几个特点: 首先,该书内容更新及时,包含了最新的网络技术和应用,如无线网络、移动互联网、云计算等。读者能够了解到当前网络发展的最新趋势和前沿技术。 其次,该书融合了作者多年的教学经验和研究成果,将复杂的网络概念和原理浓缩为易于理解的内容。无论是对于初学者还是对于有一定基础的读者来说,都能够逐步理解和掌握计算机网络的基本知识。 此外,该书还配有丰富的实例和案例,帮助读者将理论知识应用于实际中。同时,每个章节结束都提供了习题和实验题,读者可以通过自主学习和实践加深对网络知识的理解。 总的来说,《计算机网络(第七版)》是一本综合性强、内容丰富、可读性好的计算机网络教材。它不仅适用于计算机网络专业的学生,也可作为从业人员和对计算机网络感兴趣的读者的参考书。无论是作为教材还是自学工具,该书都能帮助读者全面掌握计算机网络的知识。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值