首页 > 技术文章 > 网络基础之---常见网络协议

Insa 2021-08-08 20:46 原文

ICMP

ping 使用的是ICMP协议,它发送icmp回送请求消息给目的主机。ICMP协议规定:目的主机必须返回ICMP回送应答消息给源主机。如果源主机在一定时间内收到应答,则认为主机可达。

ICMP协议通过IP协议发送的,IP协议是一种无连接的,不可靠的数据包协议。


ARP Address Resolution Protocol

它的作用是在以太网环境下,通过3层的IP地址来找寻2层的MAC地址,得到一张ARP缓存表。转发数据的时候根据ARP缓存表来进行传输。用于实现从 IP 地址到 MAC 地址的映射,即询问目标IP对应的MAC地址,工作在数据链路层;

  1. PC1发送的请求广播包同时被其他主机收到,其他PC收到之后(发现不是问自己)则丢弃。
  2. 而PC2收到之后,根据请求包里面的信息(有自己的IP地址),判断是给自己的,所以不会丢弃;
  3. 将ARP请求里包含的PC1的IP地址,MAC地址保存到ARP本地ARP缓存表,并通过单播发回响应包;
  4. PC1收到响应包后,将PC2的IP地址,MAC地址保存在本地;

参考:图解ARP协议(一)


HTTP/HTTPS

HTTPS协议

HTTPS 即 HTTP over TLS,是一种在加密信道进行 HTTP 内容传输的协议。

TLS 的早期版本叫做 SSL。SSL 的 1.0, 2.0, 3.0 版本均已经被废弃,出于安全问题考虑广大浏览器也不再对老旧的 SSL
版本进行支持了,因此这里 就统一使用 TLS 名称了。

TLS(Transport Layer Security,传输层安全):其前身是 SSL,它最初的几个版本(SSL 1.0、SSL 2.0、SSL 3.0)由网景公司开发,1999年从 3.1 开始被 IETF 标准化并改名,发展至今已经有 TLS 1.0、TLS 1.1、TLS 1.2 三个版本。SSL3.0和TLS1.0由于存在安全漏洞,已经很少被使用到。TLS 1.3 改动会比较大,目前还在草案阶段,目前使用最广泛的是TLS 1.1、TLS 1.2。

参考:

HTTPS 基本过程
十分钟搞懂HTTP和HTTPS协议?

HTTP请求

由于HTTP在每次请求结束后都会主动释放连接,因此HTTP连接是一种“短连接”,要保持客户端程序的在线状态,需要不断地向服务器发起连接请求。

通常 的做法是即时不需要获得任何数据,客户端也保持每隔一段固定的时间向服务器发送一次“保持连接”的请求,服务器在收到该请求后对客户端进行回复,表明知道 客户端“在线”。若服务器长时间无法收到客户端的请求,则认为客户端“下线”,若客户端长时间无法收到服务器的回复,则认为网络已经断开。

一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成

请求头

请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。例如,GET /index.html HTTP/1.1。

HTTP协议的请求方法有:

方法 说明 支持的HTTP协议版本
GET 获取资源 1.0、1.1
POST 传输实体主体 1.0、1.1
PUT 传输文件 1.0、1.1
HEAD 获得报文首部 1.0、1.1
DELETE 删除资源 1.0、1.1
OPTIONS 询问支持的方法 1.1
TRACE 追踪路径 1.1
CONNECT 由于代理服务器 1.1
LINK 建立和资源之间的联系 1.0
UNLINK 断开连接关系 1.0

参考

HTTP请求报文和HTTP响应报文
HTTP 报文结构


VPN协议

  • PPTP(点对点隧道协议)

大多数设备都支持PPTP,因为设置起来非常简单,在VPN公司中也很受欢迎。PPTP非常快,因此,想要规避网络中地理限制的人更喜欢该协议。
优点:速度快,多数设备支持,缺点:安全性较低

  • OpenVPN

优点:开源,安全;
缺点:配置困难,延迟

  • L2TP/IPsec(二层隧道协议)

L2TP不能单独作为安全协议使用,必须与IPsec配对;
优点:较为安全,易于设置,支持多线程;
缺点:防火墙可以轻易拦截,只能通过UDP通信,由于双重封装,速度比OpenVpn慢

  • SSTP(安全套接字隧道协议)

与OpenVpn相似,唯一的区别在于它是Microsoft在Windows Vista中开发和引入的专有软件。
缺点:只能在Windows平台上操作。

  • IKEv2

IKEv2是一种提供安全密钥交换会话的隧道协议,非常适合移动版VPN解决方案。
优点:非常快,易于设置;
缺点:支持的平台不多,防火墙可以拦截

参考

不同VPN协议的优缺点
OpenVPN 简介


TCP(传输控制协议)

TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接;


位码即tcp标志位,有6种标示:

标志位 全拼 含义
SYN synchronous 建立联机
ACK acknowledgement 确认
PSH push 传送
FIN finish 结束
RST reset 重置
URG urgent 紧急
Seq Sequence number 顺序号码
Ack Acknowledge number 确认号码
第一次握手

主机A发送位码为syn=1,随机产生seq number=1234567的数据包到服务器,主机B由SYN=1知道,A要求建立联机;

第二次握手

主机B收到请求后要确认联机信息,向A发送ack number=(主机A的seq+1),syn=1,ack=1,随机产生seq=7654321的包;

第三次握手

主机A收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,主机A会再发送ack number=(主机B的seq+1),ack=1,主机B收到后确认seq值与ack=1则连接建立成功。

TCP和UDP的区别

1、TCP是面向链接的,虽然说网络的不安全不稳定特性决定了多少次握手都不能保证连接的可靠性,但TCP的三次握手在最低限度上(实际上也很大程度上保证了)保证了连接的可靠性;而UDP不是面向连接的,UDP传送数据前并不与对方建立连接,对接收到的数据也不发送确认信号,发送端不知道数据是否会正确接收,当然也不用重发,所以说UDP是无连接的、不可靠的一种数据传输协议。

2、也正由于1所说的特点,使得UDP的开销更小数据传输速率更高,因为不必进行收发数据的确认,所以UDP的实时性更好。知道了TCP和UDP的区别,就不难理解为何采用TCP传输协议的MSN比采用UDP的QQ传输文件慢了,但并不能说QQ的通信是不安全的,因为程序员可以手动对UDP的数据收发进行验证,比如发送方对每个数据包进行编号然后由接收方进行验证啊什么的,即使是这样,UDP因为在底层协议的封装上没有采用类似TCP的“三次握手”而实现了TCP所无法达到的传输效率。

参考:TCP三次握手中SYN,ACK,Seq三者的关系


RSTP快速生成树协议

802.1w由802.1d发展而成,这种协议在网络结构发生变化时,能更快的收敛网络。它比802.1d多了两种端口类型:预备端口类型(alternate port)和备份端口类型。

STP快速生成树协议

生成树协议主要是防止网络环路。

多台设备多线路链接,而形成的环路,二层环路往往无药可救,只能堵塞端口防止。而现在的网络环境多数使用堆叠+接口捆绑,这种环境下很少使用生成树。

网络中任意一个节点产生故障,将导致整个网络无法通讯,即为单点故障,存在单点故障的网络需要使用设备和线路冗余方式;
二层网络采用冗余链路连接能够解决网络中的单点故障稳定,但是伴随出现的是二层网络中的二层环路问题:

  • 广播风暴:
  • 多帧复制:
  • MAC地址漂移:指相同源MAC地址的报文被网络设备不同的接口学习到,导致设备MAC地址表项频繁的发生变化,而导致MAC地址漂移的原因就是二层环路。

参考:如何理解STP生成树协议?


IEEE 802.1协议组

IEEE 802.1D

为了解决二层网络中的“广播风暴”,IEEE(电气和电子工程协会)制定了802.1d生成树协议。

IEEE 802.1p

IEEE 802.1P是流量优先权控制标准,工作在媒体访问控制(MAC)子层,使得二层交换机能够提供流量优先级和动态组播过滤服务。IEEE 802.1p标准也提供了组播流量过滤功能,以确保该流量不超出第二层交换网络范围。

IEEE 802.1q

虚拟桥接局域网,简称“虚拟局域网”协议,主要规定了VLAN的实现方法。

IEEE 802.1w

为了解决STP协议缺陷,IEEE再21世纪初推出了802.1w标准,它同样是属于生成树协议类型,称之为“快速生成树协议(RSTP)”,作为对802.1D标准的补充。之所以要制定IEEE 802.1w协议的原因是IEEE 802.1d协议虽然解决了链路闭合引起的死循环问题,但是生成树的收敛过程仍需比较长的时间。

IEEE 802.1s

IEEE 802.1s标准中的多生成树(MSTP)技术把IEEE 802.1w快速单生成树(RSTP)算法扩展到多生成树,这为虚拟局域网(VLANs)环境提供了快速收敛和负载均衡的功能,是IEEE 802.1 VLAN标记协议的扩展协议。

IEEE 802.1x

IEEE 802.1x也称为“基于端口的访问控制协议”。它的体系结构包括三个重要的部分:Supplicant System(客户端系统)、Authenticator System(认证系统)、Authentication Server System(认证服务器系统)。

参考: 百度百科:IEEE 802.1


VRRP(虚拟路由冗余协议)

通过几台设备联合组成一台虚拟路由设备,将虚拟路由设备IP地址作为用户默认网关实现与外部网络通信。当网关设备发生故障时,VRRP机制能够选举新的网关设备承担数据流量,从而保障网络的可靠通信。

  1. VRRP是一种容错协议,在提高可靠性的同时,简化了主机的配置。在具有多播或广播能力的局域网(如以太网)中,借助VRRP 能在某台设备出现故障时仍然提供高可靠的缺省链路,有效避免单一链路发生故障后网络中断的问题,而无需修改动态路由协议、路由发现协议等配置信息

  2. VRRP协议包括两个版本:VRRPv2和VRRPv3。VRRPv2仅适用于IPv4网络,VRRPv3适用于IPv4和IPv6两种网络

  3. VRRP路由器: 所有运行VRRP协议的路由器就叫做VRRP路由器

  4. VRRP备份组: 多台路由器被分到一个组中,在这个组中选举出一台主路由器,其他作为备份路由器。平常时候都是主路由器一个工作,备份路由器空闲,当主路由器故障后,从多台备份路由器中选举出一台替代故障的主路由器工作。这一组中的路由器构成了一个备份组。

参考

虚拟路由冗余协议(VRRP)
虚拟路由器冗余协议【原理篇】VRRP详解

BGP(边界网关协议)

BGP是互联网上一个核心的去中心化自治路由协议。从这个解释来看,首先这是一个用于互联网(Internet)上的路由协议。它的地位是核心的(目前是最重要的,互联网上唯一使用的路由协议),它的目的是去中心化,以达到各个网络自治。

相关的概念:

AS(Autonomous system):自治系统,指在一个(有时是多个)组织管辖下的所有IP网络和路由器的全体,它们对互联网执行共同的路由策略。也就是说,对于互联网来说,一个AS是一个独立的整体网络。而BGP实现的网络自治也是指各个AS自治。每个AS有自己唯一的编号。

IGP(Interior Gateway Protocol):内部网关协议,在一个AS内部所使用的一种路由协议。一个AS内部也可以有多个路由器管理多个网络。各个路由器之间需要路由信息以知道子网络的可达信息。IGP就是用来管理这些路由。代表的实现有RIP和OSPF。

EGP(Exterior Gateway Protocol):外部网关协议,在多个AS之间使用的一种路由协议,现在已经淘汰,被BGP取而代之。

BGP可以说是最复杂的路由协议。它是应用层协议,其传输层使用TCP,默认端口号是179。因为是应用层协议,可以认为它的连接是可靠的,并且不用考虑底层的工作,例如fragment,确认,重传等等。BGP是唯一使用TCP作为传输层的路由协议,其他的路由协议可能都还到不了传输层。

BGP如何工作

BGP是一种路径矢量协议(Path vector protocol)的实现。因此,它的工作原理也是基于路径矢量。下面说的BGP route指的是BGP自己维护的路由信息,区分于设备的主路由表,也就是平常看见的那个路由表。

BGP route是BGP协议传输的数据,并存储在BGP router的数据库中。并非所有的BGP route都会写到主路由表。每条BGP route都包含了目的网络,下一跳和完整的路径信息。路径信息是由AS号组成,当BGP router收到了一条 路由信息,如果里面的路径包含了自己的AS号,那它就能判定这是一条自己曾经发出的路由信息,收到的这条路由信息会被丢弃。

这里把每个BGP服务的实体叫做BGP router,而与BGP router连接的对端叫BGP peer。每个BGP router在收到了peer传来的路由信息,会存储在自己的数据库,前面说过,路由信息包含很多其他的信息,BGP router会根据自己本地的policy结合路由信息中的内容判断,如果路由信息符合本地policy,BGP router会修改自己的主路由表。

本地的policy可以有很多,举个例子,如果BGP router收到两条路由信息,目的网络一样,但是路径不一样,一个是AS1->AS3->AS5,另一个是AS1->AS2,如果没有其他的特殊policy,BGP router会选用AS1->AS2这条路由信息。policy还有很多其他的,可以实现复杂的控制。

除了修改主路由表,BGP router还会修改这条路由信息,将自己的AS号加在BGP数据中,将下一跳改为自己,并且将自己加在路径信息里。在这之后,这条消息会继续向别的BGP peer发送。而其他的BGP peer就知道了,可以通过指定下一跳到当前BGP router,来达到目的网络地址。

所以说,BGP更像是一个可达协议,可达信息传来传去,本地根据收到的信息判断决策,再应用到路由表。

引用

BGP漫谈
BGP路由协议技术详解

推荐阅读