计算机网络与协议
一、网络基础
1.1.计算机通信网的组成
由通信子网和资源子网组成。
- 通信子网:负责数据的无差错和有序传递,其处理功能包括差错控制、流量控制、路由选择、网络互联等。
- 资源子网:是计算机通信的本地系统环境,包括主机、终端和应用程序等,资源子网的主要功能是用户资源配置、数据的处理和管理、软件和硬件共享以及负载均衡等。
1.2.通信协议
三要素:语法、语义、时序。
- 语法:是用户数据与控制信息的结构与格式,依据数据出现顺序的意义。
- 语义:用于解释比特流的每一部分的意义。
- 时序:事件实现顺序的详细说明。
1.3.OSI七层模型
物理层、数据链路层、网络层、传输层、会话层、表示层、应用层(“物联网传话别应”)。
注意:低三层属于通信子网,负责通信;高三层属于资源子网,保证信息以正确可理解性是传送;传输层是高三层和低三层的接口,是第一个端到端的层次
1.3.1.物理层 :
-
四大特性——>机械特性、电器特性、功能特性、规程特性。
-
主要功能:为数据端设备提供传送数据通路、传输数据。
-
通过传输介质用数据流(比特流)进行传输。
-
从数据链路层接收到帧,将比特流转成底层物理戒指上的信号。
1.3.2.数据链路层:
-
主要功能:
- 链路管理,帧同步。
- 流量控制,差错控制(差错是避免不了的,是因为在传输过程中有噪音,到达接收端的时候,数据+噪声的叠加,就产生了差错。)
- 数据和控制信息分开。
- 透明传输和寻址。
-
组帧是在MTU(也就是在帧数据部分)前后加上首部和尾部,并在开始和结束的地方加上特定的字符,一般是0x7E。
-
透明传输:内部出现了0x7E。
-
字符填充。0x7E变成(0x7E,0x5D)。
-
零比特填充。每逢5个1,变成添一个0。
-
-
差错控制的策略:纠错码和检测码(循环冗余编码CRC)。
-
信道类型:点对点信道和广播信道(一对多)。
1.3.3.网络层:
- 端到端的数据的路由或者交换,为透明地传输数据建立连接。
- 路由选择算法: 路由选择是指选择通过互联网络从源节点向目的节点传输信息的通道,而且信息至少通过一个中间结点。
- 主要功能:为网络上的不同主机提供通信。它通过路由选择算法,为分组通过通信子网选择最适当的路径,已实现网络的互联功能。
- 网络层协议:ICMP(Internet互联网控制报文协议)、IGMP(Internet组管理协议)。
1.3.4.传输层:
- 向会话层提供通信服务的可靠性,信息传送的协议数据单元成为段或者报文。
- 差错控制、流量控制,纠错功能。
- 提供的服务有数据传输服务和传输连接服务。
- 传输层协议:TCP/IP、UDP。
1.3.5.会话层:
- 利用传输层提供的服务,是应用建立和维持会话,并使会话同步。
- 负责执行会话规则(连接是否允许半双工或全双工通信)、同步数据流以及当故障发生时重新建立连接。
1.3.6.表示层:
- 为异种机通信提供一种公共语言,以方便管理——>数据格式、变换和编码转码。
- 涉及到正在传输数据的语法和语义。
- 从应用层接收消息,转换格式(将该层的数据压缩和加密),并传送到会话层,改成合并在应用层中。
1.3.7.应用层:
- 主要是定义了具体的面向用户的应用:电子邮件、文件传输等。
- 通过计算机平台进行信息处理 。
二、UDP协议
2.1.主要特点:
- 协议开销小、效率高。
- UDP是无连接的,在发送数据之前不需要建立连接。
- UDP没有拥塞控制。
- 支持一对一、一对多、多对一、多对多交互通信。
- 首部开销小,只有8个字节。
三、TCP协议
3.1.定义:
TCP协议(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。
3.2.三次握手
为什么不是两次握手就建立连接?
是因为客户端第一次发送SYN包时如果被其中的一个节点产生了滞留,为了建立连接发送第二次后服务端回应
了一个SYN+ACK包后就建立了连接。此时,第一次发送的SYN包节点通了,那么服务端也回应了SYN+ACK,建
立起了连接。但是客户端这边只认为是一次连接,但是服务端认为是两次连接,造成了状态不一致。
3.3.四次挥手
3.4.TCP和UDP协议的区别(类似于写信和电话的区别)
- TCP是面向连接(如先打电话先拨号建立连接),UDP不需要建立连接可以直接传输。
- TCP要求的系统资源较多,UDP较少。
- TCP提供可靠的服务,通过TCP连接传送的数据,无差错、不丢失、不重复,且按序到达;UDP尽最大努力交付,不保证可靠交付。
- TCP面向字节流(传输可靠,一般用于传输文件、发送邮件、浏览网页等),UDP是面向报文的,没有拥塞控制,因此网络不会出现拥塞使源主机的发送速率降低(速度快,对实时应用有用,如域名查询、电话、微信、视频会议等。
- TCP连接只能是点到点的,UDP支持一对一,一对多,多对一,多对多的交互通信。
- TCP首部开销20字节;UDP的首部开销小,只有8字节TCP的逻辑通信信道是全双工的可靠信道;UDP是不可靠信道。
3.5.拥塞控制
- 拥塞是指网络中报文数量过多,使得服务端来不及处理,以致引起这部分乃至整个网络性能下降的现象,严重时甚至会导致网络通信业务陷入停顿即出现死锁现象。
- TCP采用拥塞控制算法来减少或者避免拥塞现象的发生,TCP的拥塞算法有多种实现Tahoe、Reno、NewReno、Vegas、Hybla、BIC 、CUBIC、SACK、Westwood、PRR、BBR等。
四、DHCP协议
4.1.简介
动态主机配置协议(Dynamic Host Configuration Protocol,DHCP)是一个用于局域网的网络协议,位于OSI模型的应用层,使用UDP协议工作,主要用于自动分配IP地址给用户,方便管理员进行统一管理。DHCP服务器端口是67,客户端使用68。
4.2.主要作用
主要作用是集中的管理、分配IP地址,使client动态的获得IP地址、Getway地址、DNS服务器地址等信息,并能够提升地址的使用率。简单来说,DHCP是一个不需要账号密码登录的、自动给内网及其分配IP地址等信息的协议。
4.3.地址分配方式
- 人工配置:由管理员对每台具体的计算机制定一个IP。
- 自动配置:服务器第一次连接网络的计算机分配一个永久地址,DHCP服务器第一次成功的分配到IP地址后,就永远的使用这个IP地址。
- 动态配置:并非永久地址,对于路由器,使用的地址配置是动态配置。
五、路由算法
5.1简介
路由算法是用于找到一条从源路由器到目的路由器的最佳路径。
5.2路由选择算法的功能
5.2.1.功能
选定路由之后将报文传送到它们的目的地。
5.2.2.要求:
- 正确性
- 简单性:软硬件开销小。
- 自适应性:算法能使用业务量和网络拓扑的变化。
- 稳定性:能长时间无故障运行。
- 公平性
- 最优性:尽量选取好的路由。
5.3.自治系统AS(Autonomous System)
是一个有权自主地决定在本系统中应采用合众路由协议的小型单位,这个网络单位可以是一个简单的网络也可以是一个或者多个普通的网络管理员的网络群体,它是一个单独的可管理的网络单元。
5.4.两大类路由选择协议
- 分类:内部网关协议IGP(RIP、OSPF协议)和外部网关协议EGP。
- RIP:路由信息协议,是一种基于距离向量的路由选择协议。要求网络中的每一个路由器都要维护从它自己到自治系统内其他每一个目的网络的距离和吓一小跳路由器地址。
- OSPF:开放最短路径优先。使用Dijkstra提出二最短路径算法SPF。
六、域名系统
6.1.简介
DNS是一个简单的请求-响应协议,是将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP协议的53端口。
6.2.术语
6.2.1.mDNS
多播DNS,使用5353端口,组播地址为224.0.0.251或[FF02::F8]。域名是用.local和普通域名区分开的。在一个没有常规DNS服务器的小型网络内可以使用mDNS来实现类似DNS的编程接口、报格式和操作语义。报文与DNS的报文结构相同,但有些字段对于mDNS有新的含义。
6.2.2.FQDN
域名的完全形态,主要是包含零长度的跟标签,例如www.example.com。
6.2.3.TLD
是属于根域的一个域,例如com、cn、net、gov。——>顶级域名服务器(权威域名服务器:bilibili,qq,baidu等)
6.2.4.IDN
国际化域名,为了处理ASCII字符的情况。
6.2.5.CNAME
又称alias,将域名指向另一个域名。(例如请求alias.com时,出事DNS找到目标为example.com的CNAME条目,于是一个新的DNS查找就是启动,它将查找example.com,随后得到响应IP地址xxx.xxx.xxx.xxx。最后,访问者访问的alias.com将被引导到xxx.xxx.xxx.xxx)。
6.2.6.TTL
无符号证书,记录DNS记录过期的时间,最小是0,最大是2^32-1。
6.3.请求响应
6.3.1.DNS记录
- A记录:返回域名对应的IPv4地址。
- AAAA记录:IPv6地址。
- NS记录:域名服务器,返回该域名由哪台域名服务器解析。
- PTR记录:指针记录。反向记录,从IP地址到域名的记录。
- MX记录:电子邮件交换记录,记录邮件域名对应的IP地址。
- CNAME记录
- DKIM记录:域名密钥确认邮件记录,用于验证已经签署了DKIM协议的消息的公钥。
- SOA记录:起始权限记录。
- SPF记录:发送方政策框架记录,列出了域或子域所指定的邮件服务器。
- SRV记录:服务记录。允许将特定服务的流量定向到另一台服务器。
- 文本记录:向因特网上的其他资源提供有关该域的信息。
6.3.2.响应码
6.4.域名系统工作原
6.4.1.域名结构树:
最后汇聚到.root,即省略为"."
6.4.2.解析过程
6.4.3.域传送
DNS服务器可以分为主服务器、备份服务器和缓存服务器。
域传送是指备份服务器从主服务器拷贝数据,并使用得到的数据更新自身数据库。域传送是在主备服务器之间同步数据库的机制。如果配置不当,可能导致匿名用户获取某个域的所有记录,造成整个网络的拓扑结构泄露给潜在攻击者。
6.5.服务器类型
6.5.1.根服务器
- 是DNS的核心,负责互联网顶级域名的解析,用于维护域的权威信息,并将DNS查询引导到相应的域名服务器。
- 根服务器代表最顶级的.root域,一般省略root。
- 13台IPv4根服务器的域名标号为a到m。
6.5.2.权威服务器
存储Zone文件,维护域内域名的权威信息,递归服务器可以从权威服务器获得DNS查询的资源记录。权威服务器需要在所承载的域名所属的TLD管理局注册,同一个权威服务器可以承载不同TLD域名,同一个域也可以有多个权威服务器。
6.5.3.递归服务器
负责接收用户的查询请求,进行递归查询并响应用户查询请求。在初始时递归服务器仅有记录了跟于明的Hint文件。
6.6.DNS利用
6.6.1.DGA
域名生成算法。
6.6.2.DNS隧道
DNS隧道工具将进入隧道的其他协议流量封装到DNS协议内,在隧道上传输。这些数据包出隧道时进行解封装,还原数据。
6.7.加密方案
6.8.相关漏洞
- DNS劫持
- 拒绝服务
七、HTTP协议簇
7.1.HTTP标准
7.1.1请求报文格式
<method><request-URL><version>
<headers>
<entity-body>
7.1.2.响应报文格式
<version><status><reason-phrase>
<headers>
<entuty-body>
7.1.3.字段解释method:
- 常见方法:HEAD/GET/POST/PUT/DELETE/PATCH/OPTIONS/TRACE
- 拓展方法:LOCK/MKCOL/COPY/MOVE
7.1.3.1.HTTP/1.1协议中共定义了八种方法(动作)
GET:向指定的资源发出“显示”请求。
HEAD:类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头。
POST:向指定资源提交数据,请求服务器进行处理。
PUT:向指定资源位置上传其最新内容。
DELETE:请求服务器删除Request-URL所标识的资源。
TRACE:回显服务器收到的请求,主要用于测试或诊断。
OPTIONS:这个方法可是服务器传回改资源所支持的所有HTTP请求。
CONNECT:HTTP/1.1协议中预留给能够将连接代为管道方式的代理服务器。通常用语SSL加密服务器的链接。
7.1.3.2.GET与POST的区别:
1.GET提交的数据放在URL之后,POST提交的数据放在HTTP包的body中。
2.GET提交的数据大小有限制(因为浏览器对URL的长度有限制),POST方法提交的数据没有限制。
3.GET方式通过使用Request.QueryString来取得变量的值,而POST方式通过Request。From来获取变量的值。4.GET方式提交数据,会带来安全问题。比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上。
-
version:
- 报文使用的HTTP版本格式
- 为HTTP/.
-
url:
- 😕/:@:/
;?#
- 😕/:@:/
7.1.3.3.HTTP不安全因素:
通信使用明文(不加密内容可能呗窃听)。
不验证通信方身份(可能遭遇伪装)。
无法验证报文的完整性(报文可能已经遭遇篡改)。
7.2.请求头列表
7.3.响应头列表
7.4.HTTP状态返回代码1xx(临时响应)
code | 代码 | 说明 |
---|---|---|
100 | 继续 | 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。 |
101 | 切换协议 | 请求者已要求服务器切换协议,服务器已确认并准备切换。 |
7.5.HTTP状态返回代码2xx(成功)
表示成功处理了请求的状态代码。
code | 代码 | 说明 |
---|---|---|
200 | 成功 | 服务器已成功处理了请求。通常表示服务器提供了请求的网页。 |
201 | 已创建 | 请求成功并且服务器创建了新的资源。 |
202 | 已接受 | 服务器已接受请求,但尚未处理。 |
203 | 非授权信息 | 服务器已成功处理了请求,但返回的信息可能来自另一来源。 |
204 | 无内容 | 服务器成功处理了请求,但没有返回任何内容。 |
205 | 重置内容 | 服务器成功处理了请求,但没有返回任何内容。 |
206 | 部分内容 | 服务器成功处理了部分GET请求。 |
7.6.HTTP状态返回代码3xx(重定向)
表示要完成请求,需要进一步操作。通常,这些状态代码用来重定向。
code | 代码 | 说明 |
---|---|---|
300 | 多种选择 | 针对请求,服务器可执行多种操作。 服务器可根据请求者 (user agent) 选择一项操作,或提供操作列表供请求者选择。 |
301 | 永久移动 | 请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。 |
302 | 临时移动 | 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。 |
303 | 查看其他位置 | 请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。 |
304 | 未修改 | 自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容。 |
305 | 使用代理 | 请求者只能使用代理访问请求的网页。如果服务器返回此响应,还表示请求者应使用代理。 |
307 | 临时重定向 | 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。 |
7.7.HTTP状态返回代码4xx(请求错误)
表示请求可能出错麻烦改了服务器的处理。
code | 代码 | 说明 |
---|---|---|
400 | 错误请求 | 服务器不理解请求的语法。 |
401 | 未授权 | 请求要求身份验证。对于需要登录的网页,服务器可能返回此响应。 |
403 | 禁止 | 服务器拒绝请求。 |
404 | 未找到 | 服务器找不到请求的网页。 |
405 | 方法禁用 | 禁用请求中指定的方法。 |
406 | 不接受 | 无法使用请求的内容特性响应请求的网页。 |
407 | 需要代理授权 | 此状态代码与 401(未授权)类似,但指定请求者应当授权使用代理。 |
408 | 请求超时 | 服务器等候请求时发生超时。 |
409 | 冲突 | 服务器在完成请求时发生冲突。 服务器必须在响应中包含有关冲突的信息。 |
410 | 已删除 | 如果请求的资源已永久删除,服务器就会返回此响应。 |
411 | 需要有效长度 | 服务器不接受不含有效内容长度标头字段的请求。 |
412 | 未满足前提条件 | 服务器未满足请求者在请求中设置的其中一个前提条件。 |
413 | 请求实体过大 | 服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。 |
414 | 请求的 URI 过长 | 请求的 URI(通常为网址)过长,服务器无法处理。 |
415 | 不支持的媒体类型 | 请求的格式不受请求页面的支持。 |
416 | 请求范围不符合要求 | 如果页面无法提供请求的范围,则服务器会返回此状态代码。 |
417 | 未满足期望值 | 服务器未满足"期望"请求标头字段的要求。 |
7.8.HTTP状态返回代码5xx(服务器错误)
表示服务器在尝试处理请求时发生内部错误。这些错误可能是副武器本身的错误,而不是请求出错。
code | 代码 | 说明 |
---|---|---|
500 | 服务器内部错误 | 服务器遇到错误,无法完成请求。 |
501 | 尚未实施 | 服务器不具备完成请求的功能。例如,服务器无法识别请求方法时可能会返回此代码。 |
502 | 错误网关 | 服务器作为网关或代理,从上游服务器收到无效响应。 |
503 | 服务不可用 | 服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。 |
504 | 网关超时 | 服务器作为网关或代理,但是没有及时从上游服务器收到请求。 |
505 | HTTP 版本不受支持 | 服务器不支持请求中所用的 HTTP 协议版本。 |
八、邮件协议簇
8.1.SMTP
是一种电子邮件传输的协议,是一组用于原地址到目的地址传输的规范。不启用SSL端口号是25,启用时端口号为465或994。
8.2.POP3
用于支持使用客户端远程管理在服务器上的电子邮件。不启用SSL时端口号为110,启用时端口号是995。
8.3.IMAP
交互式邮件存取协议。开启IMAP后,电子邮件客户端收到的邮件仍然保留在服务器上,同时在客户端上的操作都会反馈到服务器上。不开启SSL时端口是143,开启时端口号是993。
8.4.防护策略
-
SPF:发件人策略框架,判断是否由网域授权的邮件服务器基础,防止钓鱼或垃圾邮件 。
-
DKIM:域名密钥识别邮件。检测发件人地址是否伪造,利用DNS记录中的公钥。
-
DMARC:基于网域的消息认证、报告和一致性。解决在邮件栏中现实的域名和验证的域名不一致的问题。通过DMARC验证,必须通过SPF、DKIM(二者选一或者都)的身份验证。
九、SSL/TLS
9.1.SSL(Secure Sockets Layer,安全套接字层)
主要是用于WEB的安全传输协议,网络通信中保证机密性、认证性以及数据完整性。 从3.1版本,改为TLS。
9.2.点到点通信
SSL/TLS保障传输层安全,只能保护点到点通信,不能用于多条端到端通信。——>原因是协议自身特性(数字证书机制)。
9.3.安全目标
- 认证性
- 机密性
- 完整性
- 重放保护
9.4.两个阶段
- 握手阶段(协商阶段):确认身份并协商规定。
- 应用阶段:进行通信 。
十、IPsec
10.1.简介
是IETF指定的三层隧道加密协议,为数据传输提供了安全保证。特定的通信方之间的IP层通过加密与数据源认证等方式,提供数据机密性(对包加密)、数据完整性(数据是否被篡改)、数据来源认证(发送端是否合法)、防重放(拒绝接受过时或者重复的报文)。
10.2.优点
- 支持IKE(因特网密钥交换。
- 所有使用IP协议进行数据传输的应用系统和服务都可以使用IPsec。
- 对数据的加密是以数据包为单位的,而不是以整个数据流为单位,有助于提高IP数据包的安全性。
十一、Wi-Fi
11.1.攻击
-
暴力破解:抓取报文,批量密码爆破。
-
伪造热点:伪造AP发送对探针请求的响应包,让客户端错误识别。
-
密钥重装攻击:Wi-Fi在握手时双方会更新秘钥,该攻击通过重放握手信息,令客户端重新安装相同的秘钥。
-
Dragonblood:包含拒绝服务攻击、降级攻击、侧信道泄露等。
-
握手阶段(协商阶段):确认身份并协商规定。
-
应用阶段:进行通信 。
十、IPsec
10.1.简介
是IETF指定的三层隧道加密协议,为数据传输提供了安全保证。特定的通信方之间的IP层通过加密与数据源认证等方式,提供数据机密性(对包加密)、数据完整性(数据是否被篡改)、数据来源认证(发送端是否合法)、防重放(拒绝接受过时或者重复的报文)。
10.2.优点
- 支持IKE(因特网密钥交换。
- 所有使用IP协议进行数据传输的应用系统和服务都可以使用IPsec。
- 对数据的加密是以数据包为单位的,而不是以整个数据流为单位,有助于提高IP数据包的安全性。
十一、Wi-Fi
11.1.攻击
- 暴力破解:抓取报文,批量密码爆破。
- 伪造热点:伪造AP发送对探针请求的响应包,让客户端错误识别。
- 密钥重装攻击:Wi-Fi在握手时双方会更新秘钥,该攻击通过重放握手信息,令客户端重新安装相同的秘钥。
- Dragonblood:包含拒绝服务攻击、降级攻击、侧信道泄露等。