深入理解网络协议

1.协议

        在计算机网络的世界中,要说最重要的必然会想到协议,那么问题来了,什么是协议?协议是控制两个或多个对等实体进行通信的规则的集合.因此在计算机网络分层中协议是水平的.OSI将计算机网络分为7层,自底向上为物理层-链路层-网络层-传输层-会话层-表示层-应用层,TCP/IP体系将网络分为四层,自底向上为物理链路层-网络层-传输层-应用层.之间的对应关系如图1所示,无论是哪种划分方法,对于协议来说,网络层的协议只能是双方的网络层使用,而不能是网络层对其他层使用。
        各种各样的协议应用于不同的场合下,例如IP地址解析就需要ARP协议,反向解析就需要RARP协议.IP协议只向上提供无连接的服务,何为无连接服务?就是尽最大努力交付,因此网络层不提供服务质量的承诺,因此网络层是可以出现分组丢失,失序等。目前主流的IP协议为IPv4,但是IPv6一直在不断发展。IP数据的基础单位称为分组.

2.网络包的传输过程

        在TCP/IP体系中,网络涉及到四层:链路层,网络层,传输层,应用层。 以太网(帧)在链路层,IP(分组)在网络层,TCP或者UDP(报文)在传输层,HTTP等应用层协议数据在应用层.数据包在发送端产生,每通过一层均会添加首部,在接收端每通过一层均删除首部。具体的网络流过程如图所示

因此从图中可以看出,报文的首部越长,传输的比率也就越低,这也就解释了为什么在云环境下传输文件或者提交代码到GitHub/GitLab中,感觉速度变慢了,实际上也确实是变慢了,相对于http协议,https会更加的慢一些,因为https在tcp的三次握手的基础上又增加了9次加密通道的步骤。https的握手过程如下图所示:


简单的说https=http+ssl,http的三次握手不变,增加了9次ssl通道加密过程。因此,一次https的通道构建需要tcp握手包3个+ssl握手包9个,在ssl过程中加密解密需要消耗CPU的计算资源,因此容易成为瓶颈。

3.路由

在网络中,路由是一个非常重要的概念,路由是指从源到目的地时,决定端到端路径的网络范围的进程。路由又有单播,多播,广播等。路由又分为内部网关路由(IGP)和边界网关路由(EGP),IGP需要用到两个非常经典的路由算法RIP和OSPF。EGP则使用BGP协议。

3.1RIP-距离矢量算法

特点:

  • 如果两个路由器之间是直连的,这两个路由器就是相邻的
  • 路由器交换的是整个路由表,即全量数据
  • 按固定的时间间隔发送路由协议,例如1分一次

下图为某一个路由表R1

和R2

R1收到了R2的路由表,便会更新自己的路由表,更新的结果为R1-new

RIP协议的缺点是:

  • 1.规模小
  • 2.收敛速度慢
  • 3.不一定是最有路由(即跳数不一定是低延时的链路)

3.2 OSPF协议(使用了Dijkstra算法)

OSPF的主要特征就是使用分布式的链路状态协议,相对于RIP协议它的特点如下
- 向本自治系统的所有路由器发送路由表(洪泛)
- 发送的信息是所有路由器的链路状态
- 只有当链路状态发生改变的时候才洪泛
- 最终所有的路由器能建立一个链路数据库,即全网的拓扑结构

优点:

  • 收敛速度快
  • 网络规模可以扩大

缺点:

  • 只能通过距离计算,不能通过时延计算

3.3NAT

NAT是一个地址转换协议,在IP地址中有一些IP地址是公网地址,有一些IP地址只有本地才能访问,如果把本地才能访问的IP地址放到公网中就是NAT的任务。NAT是为了解决IP地址不足的问题。NAT主要包括静态NAT,动态NAT和NAPT,在此主要介绍NAPT,NAPT又包括SNAT和DNAT。
NAT的原理如图所示:



图中的

1.本机发出一个数据包,目的网络地址是12.120.76.24:8080

2.NAT服务器对数据包的源地址进行修改122.167.12.89:8000
即SNAT

5.NAT对数据包的目的IP进行修改,DNAT

NAT服务器有两个网卡,一个对内,一个对外,并且维护着一个对照表
通过对照表进行地址映射.

 

收藏 评论(1)
分享到:
共1条回复 最后由二号月台zd 回复于2019-09-06 20:47