计算机网络_基础知识

发布时间 2023-12-26 14:13:45作者: Espre-sso

计算机网络_基础知识

常见HTTP状态码以及含义

  • 200~299 成功
    200: OK,请求没问题。
    204: No Content,响应报文没有实体的主体部分。
  • 300~399 重定向
    304: Not Modified,所请求的资源未修改,服务器不会返回任何资源。
  • 400~499 客户端错误
    400: Bad Request,客户端请求的语法错误。
    401: Unauthorized,客户端未对自己进行认证。
    403: Forbidden,请求被服务器拒绝了。
    404: Not Found,服务器无法找到请求的URL。
  • 500~599 服务端错误
    500:Internal Server Error,服务器内部错误。
    502: Bad Gateway,网关或代理服务器从远程服务器接收到了一个无效的响应。
    503: Service Unavailable,服务器无法为该请求提供服务。
    504: Gateway Timeout,网关或代理服务器,没有及时从远端服务器获取请求。

HTTP报文结构

  1. 请求报文:
  • 请求方法+请求地址+HTTP版本
  • 请求头(编码方式、语言)
  • 请求内容
  1. 响应报文
  • 请求地址
  • 状态码/状态解释
  • 应答头(持久连接还是非持久、内容长度、日期)

请求方法

  • get:请求服务器发送某个资源。(幂等
  • head:与get类似,只返回首部(判断响应码是否正常、检查某些资源是否改变)。(幂等
  • post:向服务器写入数据。(取决于后台的实现。
  • put:向服务器写入资源。(取决于后台的实现
  • trace:观察请求报文到达服务器的最终样子。(幂等
  • delete:请求服务器删除请求url所指定的资源。(幂等
  • options:(代理、防火墙等会使用到)让服务器返回资源支持操作的方法。(幂等

OSI七层模型

OSI七层模型:应表会传网链物
TCP/IP四层协议:应传网接

相关协议

  • 网路层:IP协议、ICMP协议(Internet控制报文协议)
  • 传输层:TCP协议、UDP协议
  • 应用层:HTTP协议、FTP协议、SMTP协议、DNS等。

各层的作用

  • 应用层:提供不同应用之间的通信
  • 传输层:提供主机不同进程之间的通信
  • 网路层:提供主机间的通信(简单的、无连接的数据报服务)

HTTP1.0/1.1/2.0 的主要区别?

0.9:HTTP协议原型不支持多媒体内容
1.0:支持多媒体对象
1.1:长连接keep-alive
2.0:多路复用(二进制分帧是基础,通信单位为帧。多请求并行不依赖多TCP连接。并行在一个TCP连接交互多种类型信息。)、服务端推送(服务端“未卜先知”,主动推送资源。)(头部压缩

对称加密、非对称加密的异同

  • 密钥:一串密钥---一组密钥(公钥、私钥)
  • 效率:效率高---效率低
  • 安全性:较高---更高
  • 管理成本:高---低
  • 常见算法:DES、3DES、AES---RSA、DH、ECC

散列算法:
哈希算法,从任何一种数据中创建小的数字“指纹”的方法。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。

安全性:
严格意义上说,哈希散列算法不能算加密算法,以为哈希散列是单向的,不具备逆向解密的能力。(彩虹表可以尝试破解)

TLS技术

Transport Layer Security 传输层安全协议
传输层之上,服务于应用层,前身是SSL(Secure Socket Layer)安全套接字层。
作用:

  • 数据安全和数据完整
  • 对传输层数据进行加密后传输
    综合了对称加密、非对称加密技术设计的安全协议

HTTP VS HTTPS

  • 安全性:不安全---安全
  • 复杂度:低---高
  • 效率:高---低
  • 端口:80---443

数字证书:
指在互联网通讯中标识通讯各方身份信息的一个数字认证,人们可以在网上用它来识别对方的身份。
数字证书是可信任组织颁发给特定对象的认证
使用非对称加密算法来生成对称密钥(私钥加密,公钥解密)

SSL安全参数握手:
客户端-服务端建立HTTPS,需要TLS协议,其中需要SSL支持

  1. 客户端->随机数1,协议版本,加密算法
  2. 确定加密算法,数字证书,随机数2<-服务端
  3. 客户端->确认数字证书是否有效,生成随机数3,使用服务器的公钥加密随机数3
  4. 服务端:根据随机数1、2、3和相同的算法生成对称密钥,双方使用对称密钥进行加密通信。
    双方使用对称密钥进行加密通信。

DNS服务(域名系统的工作流程)

Domain Name System域名系统:
它是一项互联网服务,存储域名和IP地址相互映射关系的一个分布式数据库,它能够使人更方便地访问互联网。
进程服务:IP+端口

工作原理:

  • 域名由点、字母、数字组成
  • 点分割不同的域
  • 域名可以分为顶级域、二级域、三级域

根域名服务器 根域名服务器
->
顶级域名服务器 .com域名服务器 .cn .net
->
权威域名服务器 .edu.cn域名服务器 .immoc.com .tobao.com

  1. 迭代查询:每次查询返回结果,根据结果再次查询
  2. 递归查询:根域名服务器->顶级域名服务器...层层深入,直到找到,层层返回结果。

DNS攻击,原理是什么-DNS安全

可能出现的情况:

  1. 错误域名解析到纠错导航页面
  2. 错误域名解析到非正常页面
  3. 将正常站点解析到恶意页面

DNS劫持
劫持本地DNS服务(黑客攻击or地方运营商出于盈利目的)

DNS欺骗
冒充(伪)权威域名服务器,返回攻击者希望访问的主页。

DDoS攻击
distirbuted denial-of-service attack 分布式拒绝服务攻击
是一种网络攻击手法,其目的在于是目标电脑的网络或系统资源耗尽,使服务暂时中断或停止,导致其正常用户无法访问。

  • DNS本质上是一种程序
  • 物理设别有容量承载极限
  • 超过容量极限服务可能会宕机

TCP协议和UDP有什么区别-传输层协议详解

传输层属于主机间不同进程的通信。逻辑通信信道,当传输层采用TCP协议时,这条略记通信信道就是一条可靠的通信信道,尽管下面的网络是不可靠的。

UDP协议

  • 源端口、目的端口
  • 16位UDP长度
  • 16位UDP校验和

TCP协议

  • 16位源端口,16位目的端口
  • 序号(32位。TCP数据是字节流-每个字节都有唯一的序号。起始序号在建立TCP连接的时候设置。序号表示本报文数据的第一个字节的序号)
  • 确认号(32位。期待收到对方下一个报文的第一个数据字节序号。若确认号=N,则序号N-1为止的所有数据都已经正确收到。
  • 控制位(6位,URG紧急位-紧急数据、ACK确认位-=1时确认号生效、PSH推送位-尽快把数据交付给应用层、RST重置位-重新建立连接、SYN同步位-连接请求报文、FIN终止位-释放连接)
  • 窗口(16位,指明允许对方发送的数据量。数据缓冲空间有限,不能无限缓存数据)

UDP vs TCP
性能:性能负载低---性能负载高
速度:速度快---速度慢
实现难度:实现简单---实现复杂
应用场景:简单场景---复杂场景
面向连接:无连接服务---有连接服务
可靠性:不可靠服务---可靠服务

用到UDP的应用层协议
DNS、TFTP简单文件传送协议、DHCP动态主机配置协议

用到TCP的应用层协议
SMTP、FTP、TELNET远程终端协议、HTTP

TCP协议为什么三次握手

TCP四次挥手

TIME-WAIT状态
指第四次挥手后,主动中断连接方所处的状态,这个状态下,主动方尚未完全关闭TCP连接,端口不可复用。

为什么TIME-WAIT状态需要等待2MSL?

  1. 最后一个报文没有确认

  2. 确认最后一个ACK报文一定能到达对方

  3. 2MSL时间内,如果没有到达对方,那么对方会重新进行第三次挥手,确保连接正常释放

  4. 确保当前连接的所有报文都已经过期。

滑动窗口的工作过程-TCP的可靠传输

  1. 窗口指明允许对方发送的数据量
  2. TCP协议时传输数据流的协议,通过TCP协议头部序列号、确认号、窗口等字段的控制,可以在有限的缓冲资源下,接收几乎无限的数据。

TCP常见的拥塞避免算法

网络拥塞:
在某段时间内,若对网络中的某一资源(带宽、缓存、处理机等)的需求超过了该资源所能提供的可用部分,网络性能就会变坏,这种情况称为网络拥塞。

  • 网络拥塞往往由很多因素引起,它并不是一个单点问题。
  • 拥塞避免是全局角度的一个问题。

拥塞窗口:
是TCP协议基于窗口拥塞控制需要的一个变量配置。发送方在发送数据时会维持一个叫拥塞窗口cwnd(congestion window)的状态变量,并且可以动态变化,在TCP报文头部,发送方让自己的发送窗口等于拥塞窗口。

门限值:
拥塞避免算法启动阈值。

传输轮次:
一次报文发送和确认的时间称为一次传输轮次,RTT(Route-Trip Time)定义的是一次传输轮次的往返时间。

快重传和快恢复:
快重传:让发送方尽早知道个别报文段的丢失,并立即重传,以避免发送方认为网络发生了拥塞,从而因为拥塞避免算法降低发送数据。

  • 不是捎带确认,而是立即确认
  • 对丢失报文多次重复确认(连续3个ACK)

TCP粘包问题

TCP协议与应用层协议:

  • 应用层的众多协议使用了TCP作为传输层协议
  • TCP协议解决的是传输的可靠性和顺序问题
  • TCP协议是面向字节流的数据传输协议

应用层协议-HTTP
Content-Length:是一个实体消息首部,用来指明发送给接收方的消息主体的大小,即用十进制数字表示的数据字节的大小。( !=实际内容长度)

应用层的数据拆分:

  • 基于长度的标识

  • 基于特殊分隔符

  • TCP协议是面向字节流的协议,它可能会组合或者拆分应用层协议的数据。

  • 粘包并不是TCP协议造成的,而是应用层协议设计缺陷导致的问题

Nagle算法:
是一种通过减少数据包的方式提高TCP传输性能的算法。
因为网络带宽有限,它不会将小的数据块直接发送给目的主机,而是会在本地缓冲区中等待更多待发送的数据,这种批量发送数据的策略虽然会影响实时性和网络延迟,但是能够降低网络拥堵的可能性并减少额外开销。

  • 缓冲区中数据超过最大数据段(MSS)
  • 上一个数据段被确认(ACK)后

总结:

  • TCP协议数据传输的核心机制 - 基于字节流,不存在消息、数据包的概念
  • TCP粘包是应用层开发者错误设计实现导致的
  • 应用层协议需要自行设计消息边界,以正确分离消息,避免消息粘连
  • 分离消息的两个方法:基于长度的拆分,基于特殊字符的拆分
  • Nagle算法是通过合并字节流数据,减少数据包来提升TCP协议传输能力的协议。

什么是VPN-虚拟专用网技术

背景:

  • 一些机构组织不需要所有计算机都接入网络
  • 机构成员跨地域通信存在加密安全的需求

公司内网、校园网、工业专用网

专用IP地址:
指一些只能提供给机构内部通信的IP地址。这类IP地址不能接入到互联网上与其它网络主机进行通信。
即专用IP地址只能作为本地地址而不能用作全球地址,因为专用IP地址在全球并不是唯一的,互联网上的路由器对目的地址为专用IP地址的数据报一缕不进行转发。

  • 10.0.0.0 ~ 10.255.255.255

  • 172.16.0.0 ~ 172.31.255.255

  • 192.168.0.0 ~ 192.168.255.255

  • IPSec

  • PPTP

  • L2TP