计算机网络面试突击总结

计算机网络模型,一般有三种框架

  • OSI七层模型:应用层、表示层、会话层、传输层、网络层、链路层、物理层
  • TCP\IP五层模型:应用层、传输层、网络层、数据链路层、物理层
  • TCP\IP四层模型:应用层、传输层、网际互连层、网络接口层

本篇博客主要是基于五层模型进行相关知识点的论述

TCP/IP五层模型

OSI和TCP\IP协议之间的对应关系

有空了解一下各个协议

OSI七层模型TCP\IP四层模型对应的网络协议
应用层(Application)应用层HTTP, TFTP, FTP, NFS, WAIS,SMTP, Telnet, DNS, SNMP
表示层(Presentation)TIFF, GIF, JPEG, PICT
会话层(Session)RPC, SQL, NFS, NetBIOS, names, AppleTalk
传输层(Transport)传输层TCP, UDP
网络层(Network)网络层IP, ICMP, ARP, RARP, RIP, IPX
链路层(Data)数据链路层FDDI, Frame Relay, HDLC, SLIP, PPP
物理层(Physical)EIA/TIA-232, EIA/TIA-499, V.35, 802.3

应用层

TCP/IP 模型将 OSI 参考模型中的会话层、表示层和应用层的功能合并到一个应用层实现,通过不同的应用层协议为不同的应用提供服务。例如:FTP、Telnet、DNS、SMTP 等。

1. HTTP头部信息:通用头部、请求头部、响应头部、实体头部。
通用头部:

Cache-Control :用来指定当前的请求/回复中是否使用缓存机制
Connection:客户端(浏览器)想要优先使用的连接类型(keep-alive等)
Data:报文创建时间
Tailer:会实现说明在报文主体后记录哪些首部字段,该首部字段可以使用在 HTTP/1.1 版本分块传输编码时
Transfer-Encoding:用来改变报文格式
Upgrade:要求服务器升级到一个高版本协议
Via:告诉服务器请求由哪些代理发出
Warning:一般性警告,表示实体内容中可能存在错误

请求头部:

Accept:告诉服务器自己允许哪些媒体类型
Accpt-Charset:浏览器声明可以接受的字符集
Accept-Encoding:自己接收的编码方法
Accept-Language:可接受的响应内容语言列表
Authorization:用于表示HTTP协议中需要认证资源的认证信息
Except:客户端要求服务器做出特定的行为
From:发起该请求的用户邮件地址
Host:服务器的域名以及服务器监听的端口号
If-xxx:条件请求
Max-Forward:限制该消息可被代理及网关转发的次数
Range:表示请求某个实体的一部分,字节偏移以0开始(Range:bytes=500-999)
Referer:表示浏览器所访问的前一个页面,可以认为是之前访问页面的链接将浏览器带到了当前页面
User-Agent:浏览器的身份标识字符串

响应头部:

Accept-Ranges:字段的值表示可用于定义范围的单位( Accept-Ranges:bytes)
Age:创建响应的时间
ETag:唯一标识分配的资源
Location:重定向之后的URL
Retry-After:告知客户端多久后再发送请求
Server:告知客户端服务器信息
Vary: 缓存控制

实体头部:

Allow:对于网络资源的有效的请求行为,不允许则返回405(Allow:GET,HEAD)
Content-Encoding:编码方式
Content-Length:返回内容的字节长度
Content-Language:语言
Content-Location:请求资源可替代的备用的另一地址
Content-MD5:返回资源的MD5校验值
Content-Range:在整个返回体中本部分的字节位置
Content-Type:返回内容的MIME类型
Expires:响应过期的日期和时间
Last-Modified:请求资源的最后修改时间

2.Keep-Alive和非Keep-Alive区别
HTTP/1.0中,浏览器每次发起请求就要与服务器创建一个新的TCP连接,服务器完成请求处理后立即断开tcp连接,服务器不会跟踪客户也不会记录过去的请求。TCP连接的创建和断开需要消耗资源和时间,为了减少资源和时间消耗,就需要对重用连接。HTTP/1.1版本默认使用持久连接,之前的版本是使用的是非持久,想要持久就需要指定connection首部字段的值为keep-alive,来告诉对方当前请求响应完毕后不要关闭连接。
对于非keep-alive,就必须为每个请求的对象建立和维护一个全新的连接。每次建立连接就需要分配缓冲区和变量,这样会给服务器带来负担。在keep-alive方式下,服务器在响应后还继续保持连接,可以继续连接传输数据。甚至位于同一服务器的多个web页面从该服务器发送到同一个客户机时,可以在单个持久TCP连接上进行。
keep-alive也会在某种程度上造成资源浪费,所以要正确设置keep-alive timeout参数t,当TCP连接在传送完最后一个HTTP响应,会再将连接保持t秒,t秒后关闭连接释放资源。

3.HTTP长连接和短链接使用场景
长连接:用于操作频繁、点对点通讯,同时客户端连接数量较少的情况。如:即时通讯、网络游戏等。
短连接:用于用户数量比较多的web网站。如tb、jd等大型网站客户端数量有时候可以到达千万级或上亿,使用长连接会造成大量的资源浪费,所以一般使用短连接。

4.获取HTTP报文长度
响应消息存在Content-Length字段,可以根据该数值直接判断数据是否接收完成,如向客户端向服务器请求图片或静态网页时,服务器能通过Content-Length字段告诉客户端需要接收多少数据;如果服务器事先不知道请求内容的大小,如加载动态页面时,就需要使用Transfer-Encoding:chunked的方式来代替Content-Length。
分块传输编码(chunked transfer encoding)是HTTP/1.1引入的新的数据传输机制,该机制允许HTTP服务器发送给客户端的数据可以分成多个部分,当数据分解为数据块发送时,服务器就可以发送数据而不用预先知道发送的内容有多大,每个分块包含十六进制的长度值和数据,最后一个分块长度值为0,表示实体结束,客户机可以以此标志确定数据已经接收完毕。

5.HTTP方法
HTTP/1.0有三种请求方法:GET,POST,HEAD
HTTP/1.1有六种请求方法:OPTIONS,PUT,PATCH,DELETE,TRACE,CONNECT
GET:请求指定的页面信息,并返回具体内容,通常只用于读取数据
HEAD:类似于GET请求,只是返回的响应中没有具体的内容,用于获取报头
POST:向指定资源提交数据进行请求处理(上传文件或提交表单)。数据被包含在请求体中。POST请求可能会导致新的资源建立或已有资源的更改。
OPTIONS:向服务器发送该方法,会返回对指定资源所支持的HTTP请求方法。
PUT:替换指定的资源,没有就新增。
PATCH:是对PUT方法的补充,用来对已知资源进行局部更新。
DELETE:请求服务器删除URL标识的资源数据。
TRACE:回显服务器收到的请求数据,即服务器返回自己收到的数据,主要用于测试和诊断。
CONNECT: 将服务器作为代理,让服务器代替用户进行访问。

高频考点:GET&POST的区别

  • get 提交的数据会放在 URL 之后,并且请求参数会被完整的保留在浏览器的记录里,由于参数直接暴露在 URL中,可能会存在安全问题,因此往往用于获取资源信息。而 post 参数放在请求主体中,并且参数不会被保留,相比 get 方法,post方法更安全,主要用于修改服务器上的资源。
  • get 请求只支持 URL 编码,post 请求支持多种编码格式。
  • get 只支持 ASCII字符格式的参数,而 post 方法没有限制。
  • get 提交的数据大小有限制(这里所说的限制是针对浏览器而言的),而 post方法提交的数据没限制
  • get 方式需要使用 Request.QueryString 来取得变量的值,而 post 方式通过Request.Form 来获取。
  • get 方法产生一个 TCP 数据包,post 方法产生两个(并不是所有的浏览器中都产生两个)。
    更加详细的解答参看知乎回答: GET 和 POST 到底有什么区别?

6.GET的长度限制是多少
HTTP中GET的方法是通过URL传递数据的,而URL本身没有对数据的长度进行限制,真正限制GET长度的是浏览器,如IE浏览器对URL的最大限制为2000多个字符,大约2kb,但Firefox等能支持的URL最大长度限制为65536个字符,Chrome最大限制长度为8182字符。并且这个长度不是只针对数据部分,而是针对整个 URL 而言,在这之中,不同的服务器同样影响 URL 的最大长度限制。因此对于特定的浏览器,GET的长度限制不同。
由于 POST 方法请求参数在请求主体中,理论上讲,post 方法是没有大小限制的,而真正起限制作用的是服务器处理程序的处理能力。

7.HTTP与HTTPS
工作方式:
HTTP
HTTP(Hyper Text Transfer Protocol: 超文本传输协议) 是一种简单的请求 - 响应协议,被用于在 Web 浏览器和网站服务器之间传递消息。HTTP 使用 TCP(而不是 UDP)作为它的支撑运输层协议。其默认工作在 TCP 协议 80 端口,HTTP 客户机发起一个与服务器的 TCP 连接,一旦连接建立,浏览器和服务器进程就可以通过套接字接口访问 TCP。客户机从套接字接口发送 HTTP 请求报文和接收 HTTP 响应报文。类似地,服务器也是从套接字接口接收 HTTP 请求报文和发送 HTTP 响应报文。其通信内容以明文的方式发送,不通过任何方式的数据加密。当通信结束时,客户端与服务器关闭连接。
HTTPS
HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer)是以安全为目标的 HTTP 协议,在 HTTP 的基础上通过传输加密和身份认证的方式保证了传输过程的安全性。其工作流程如下:
① 客户端发起一个 HTTPS 请求,并连接到服务器的 443 端口,发送的信息主要包括自身所支持的算法列表和密钥长度等;
② 服务端将自身所支持的所有加密算法与客户端的算法列表进行对比并选择一种支持的加密算法,然后将它和其它密钥组件一同发送给客户端。
③ 服务器向客户端发送一个包含数字证书的报文,该数字证书中包含证书的颁发机构、过期时间、服务端的公钥等信息。
④ 最后服务端发送一个完成报文通知客户端 SSL 的第一阶段已经协商完成。
⑤ SSL 第一次协商完成后,客户端发送一个回应报文,报文中包含一个客户端生成的随机密码串,称为 pre_master_secre,并且该报文是经过证书中的公钥加密过的。
⑥ 紧接着客户端会发送一个报文提示服务端在此之后的报文是采用pre_master_secre 加密的。
⑦ 客户端向服务端发送一个 finish 报文,这次握手中包含第一次握手至今所有报文的整体校验值,最终协商是否完成取决于服务端能否成功解密。
⑧ 服务端同样发送与第 ⑥ 步中相同作用的报文,已让客户端进行确认,最后发送 finish 报文告诉客户端自己能够正确解密报文。
当服务端和客户端的 finish 报文交换完成之后,SSL 连接就算建立完成了,之后就进行和 HTTP 相同的通信过程,唯一不同的是在 HTTP 通信过程中并不是采用明文传输,而是采用对称加密的方式,其中对称密钥已经在 SSL 的建立过程中协商好了。
区别:

传输层

该层对应于 OSI 参考模型的传输层,为上层实体提供源端到对端主机的通信功能。传输层定义了两个主要协议:传输控制协议(TCP)和用户数据报协议(UDP)。其中面向连接的 TCP 协议保证了数据的传输可靠性,面向无连接的 UDP 协议能够实现数据包简单、快速地传输。

网络层

数据链路层

物理层

物理层主要作什么
物理层是整个开放系统的基础,该层利用传输介质为通信两端建立、管理、释放物理连接,实现比特流的透明传输。该层是在连接各种计算机的传输媒体上传输数据比特流,尽可能屏蔽掉不同类型的传输媒体和通信手段的差异,使数据链路层感受不到这些差异,使数据链路层只完成本层协议和服务,不必考虑网络间具体传输媒体和通信手段。

主机之间的通信方式
单工通信:也叫单向通信,发送方和接收方是固定的,消息只能单向传输。例如采集气象数据、家庭电费,网费等数据收集系统,或者打印机等应用主要采用单工通信。
半双工通信:也叫双向交替通信,通信双方都可以发送消息,但同一时刻同一信道只允许单方向发送数据。例如传统的对讲机使用的就是半双工通信。
全双工通信:也叫双向同时通信,全双工通信允许通信双方同时在两个方向是传输,其要求通信双方都具有独立的发送和接收数据的能力。例如平时我们打电话,自己说话的同时也能听到对面的声音。

通道复用技术
频分复用、时分复用、波分复用、码分复用

几种常用的宽带接入技术
一般速率超过1Mbps的接入称为宽带接入,主要技术包括:ADSL和FTTx+LAN,其他还有光纤同轴混合网(HFC)、光接入技术(有源和无源光纤系统)和无线接入技术等。

计网中的安全问题

攻击分类:主动攻击(偷听)、被动攻击(篡改、重放、改写、拒绝服务)

ARP攻击
在 ARP 的解析过程中,局域网上的任何一台主机如果接收到一个 ARP 应答报文,并不会去检测这个报文的真实性,而是直接记入自己的 ARP 缓存表中。并且这个 ARP 表是可以被更改的,当表中的某一列长时间不适使用,就会被删除。ARP 攻击就是利用了这一点,攻击者疯狂发送 ARP 报文,其源 MAC 地址为攻击者的 MAC 地址,而源 IP 地址为被攻击者的 IP 地址。通过不断发送这些伪造的 ARP 报文,让网络内部的所有主机和网关的 ARP 表中被攻击者的 IP 地址所对应的 MAC 地址为攻击者的 MAC 地址。这样所有发送给被攻击者的信息都会发送到攻击者的主机上,从而产生 ARP 欺骗。通常可以把 ARP 欺骗分为以下几种:

  • 洪泛攻击
    攻击者恶意向局域网中的网关、路由器和交换机等发送大量 ARP 报文,设备的 CPU 忙于处理 ARP 协议,而导致难以响应正常的服务请求。其表现通常为:网络中断或者网速很慢。
  • 欺骗主机
    这种攻击方式也叫仿冒网关攻击。攻击者通过 ARP 欺骗使得网络内部被攻击主机发送给网关的信息实际上都发送给了攻击者,主机更新的 ARP 表中对应的 MAC 地址为攻击者的 MAC。当用户主机向网关发送重要信息使,该攻击方式使得用户的数据存在被窃取的风险。
  • 欺骗网关
    该攻击方式和欺骗主机的攻击方式类似,不过这种攻击的欺骗对象是局域网的网关,当局域网中的主机向网关发送数据时,网关会把数据发送给攻击者,这样攻击者就会源源不断地获得局域网中用户的信息。该攻击方式同样会造成用户数据外泄。
  • 中间人攻击
    攻击者同时欺骗网关和主机,局域网的网关和主机发送的数据最后都会到达攻击者这边。这样,网关和用户的数据就会泄露。
  • IP 地址冲突
    攻击者对局域网中的主机进行扫描,然后根据物理主机的 MAC 地址进行攻击,导致局域网内的主机产生 IP 冲突,使得用户的网络无法正常使用。

对称加密和非对称加密

分类对称加密非对称加密
过程加解密使用同一密钥公钥加密、私钥解密
速度快,适合数据量大的时候使用加解密时间长。适合少量数据传输
安全性密钥泄露,通信完全暴漏公钥可以推导,私钥不可由公钥推导,安全性更高

常见的非对称加密算法:RSA、Elgamal、背包算法、Rabin、D-H等。

RSA&AES

DDos
DDoS 为分布式拒绝服务攻击,是指处于不同位置的多个攻击者同时向一个或数个目标发动攻击,或者一个攻击者控制了不同位置上的多台机器并利用这些机器对受害者同时实施攻击。和单一的 DoS 攻击相比,DDoS 是借助数百台或者数千台已被入侵并添加了攻击进程的主机一起发起网络攻击。
DDoS 攻击主要有两种形式:流量攻击和资源耗尽攻击。前者主要针对网络带宽,攻击者和已受害主机同时发起大量攻击导致网络带宽被阻塞,从而淹没合法的网络数据包;后者主要针对服务器进行攻击,大量的攻击包会使得服务器资源耗尽或者 CPU 被内核应用程序占满从而无法提供网络服务。
常见的 DDos 攻击主要有:TCP 洪水攻击(SYN Flood)、放射性攻击(DrDos)、CC 攻击(HTTP Flood)等。
针对 DDoS 中的流量攻击,最直接的方法是增加带宽,理论上只要带宽大于攻击流量就可以了,但是这种方法成本非常高。在有充足网络带宽的前提下,我们应尽量提升路由器、网卡、交换机等硬件设施的配置。
针对资源耗尽攻击,我们可以升级主机服务器硬件,在网络带宽得到保证的前提下,使得服务器能有效对抗海量的 SYN 攻击包。我们也可以安装专业的抗 DDoS 防火墙,从而对抗 SYN Flood等流量型攻击。此外,负载均衡,CDN 等技术都能够有效对抗 DDoS 攻击

一些问题

数据如何在各层之间传输(数据的封装过程):
大致上就是不停的加解头。
以HTTP数据为例:MAC头+IP头+TCP头+HTTP头+HTTP数据
网口接到数据包后往高层传的过程就是不停的去掉头;
应用层创建数据包到网口发包的过程就是将基础的数据不停的加上头。

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值