安徽工程大学计算机网络期末考试复习(研究生)

一、前言

        TCP/IP 中有两个具有代表性的传输层协议,分别是 TCP 和 UDP。

二、TCP/IP网络模型

        计算机与网络设备要相互通信,双方就必须基于相同的方法。比如,如何探测到通信目标、由哪一边先发起通信、使用哪种语言进行通信、怎样结束通信等规则都需要事先确定。不同的硬件、操作系统之间的通信,所有的这一切都需要一种规则。而我们就把这种规则称为协议(protocol)。

        TCP/IP 是互联网相关的各类协议族的总称,比如:TCP,UDP,IP,FTP,HTTP,ICMP,SMTP 等都属于 TCP/IP 族内的协议。

        TCP/IP模型是互联网的基础,它是一系列网络协议的总称。这些协议可以划分为四层,分别为应用层、传输层、网络层和链路层。

应用层:负责向用户提供应用程序,比如HTTP、FTP、Telnet、DNS、SMTP等。

传输层:负责对报文进行分组和重组,并以TCP或UDP协议格式封装报文。

网络层:负责路由以及把分组报文发送给目标网络或主机。

链路层:负责封装和解封装IP报文,发送和接受ARP/RARP报文等。

 

 接下去介绍TCP/IP 中有两个具有代表性的传输层协议----TCP 和 UDP。

三、TCP

        当一台计算机想要与另一台计算机通讯时,两台计算机之间的通信需要畅通且可靠,这样才能保证正确收发数据。例如,当你想查看网页或查看电子邮件时,希望完整且按顺序查看网页,而不丢失任何内容。当你下载文件时,希望获得的是完整的文件,而不仅仅是文件的一部分,因为如果数据丢失或乱序,都不是你希望得到的结果,于是就用到了TCP。

        TCP协议全称是传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。

1. TCP连接过程

如下图所示,可以看到建立一个TCP连接的过程为(三次握手的过程):

 

 第一次握手

        客户端向服务端发送连接请求报文段。该报文段中包含自身的数据通讯初始序号。请求发送后,客户端便进入 SYN-SENT 状态。

第二次握手

        服务端收到连接请求报文段后,如果同意连接,则会发送一个应答,该应答中也会包含自身的数据通讯初始序号,发送完成后便进入 SYN-RECEIVED 状态。

第三次握手

        当客户端收到连接同意的应答后,还要向服务端发送一个确认报文。客户端发完这个报文段后便进入 ESTABLISHED 状态,服务端收到这个应答后也进入 ESTABLISHED 状态,此时连接建立成功。

        这里可能大家会有个疑惑:为什么 TCP 建立连接需要三次握手,而不是两次?这是因为这是为了防止出现失效的连接请求报文段被服务端接收的情况,从而产生错误。

2. TCP断开链接

 

TCP 是全双工的,在断开连接时两端都需要发送 FIN 和 ACK。

第一次握手

        若客户端 A 认为数据发送完成,则它需要向服务端 B 发送连接释放请求。

第二次握手

        B 收到连接释放请求后,会告诉应用层要释放 TCP 链接。然后会发送 ACK 包,并进入 CLOSE_WAIT 状态,此时表明 A 到 B 的连接已经释放,不再接收 A 发的数据了。但是因为 TCP 连接是双向的,所以 B 仍旧可以发送数据给 A。

第三次握手

        B 如果此时还有没发完的数据会继续发送,完毕后会向 A 发送连接释放请求,然后 B 便进入 LAST-ACK 状态。

第四次握手

        A 收到释放请求后,向 B 发送确认应答,此时 A 进入 TIME-WAIT 状态。该状态会持续 2MSL(最大段生存期,指报文段在网络中生存的时间,超时会被抛弃) 时间,若该时间段内没有 B 的重发请求的话,就进入 CLOSED 状态。当 B 收到确认应答后,也便进入 CLOSED 状态。

3. TCP协议的特点

面向连接

        面向连接,是指发送数据之前必须在两端建立连接。建立连接的方法是“三次握手”,这样能建立可靠的连接。建立连接,是为数据的可靠传输打下了基础。

仅支持单播传输

        每条TCP传输连接只能有两个端点,只能进行点对点的数据传输,不支持多播和广播传输方式。

面向字节流

        TCP不像UDP一样那样一个个报文独立地传输,而是在不保留报文边界的情况下以字节流方式进行传输。

可靠传输

        对于可靠传输,判断丢包,误码靠的是TCP的段编号以及确认号。TCP为了保证报文传输的可靠,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。

提供拥塞控制

        当网络出现拥塞的时候,TCP能够减小向网络注入数据的速率和数量,缓解拥塞

四、UDP

        UDP协议全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第四层——传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。

它有以下几个特点:

1. 面向无连接

首先 UDP 是不需要和 TCP一样在发送数据前进行三次握手建立连接的,想发数据就可以开始发送了。并且也只是数据报文的搬运工,不会对数据报文进行任何拆分和拼接操作。

具体来说就是:

在发送端,应用层将数据传递给传输层的 UDP 协议,UDP 只会给数据增加一个 UDP 头标识下是 UDP 协议,然后就传递给网络层了

在接收端,网络层将数据传递给传输层,UDP 只去除 IP 报文头就传递给应用层,不会任何拼接操作

2. 有单播,多播,广播的功能

        UDP 不止支持一对一的传输方式,同样支持一对多,多对多,多对一的方式,也就是说 UDP 提供了单播,多播,广播的功能。

3. UDP是面向报文的

        发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。因此,应用程序必须选择合适大小的报文

4. 不可靠性

        首先不可靠性体现在无连接上,通信都不需要建立连接,想发就发,这样的情况肯定不可靠。

        并且收到什么数据就传递什么数据,并且也不会备份数据,发送数据也不会关心对方是否已经正确接收到数据了。

        再者网络环境时好时坏,但是 UDP 因为没有拥塞控制,一直会以恒定的速度发送数据。即使网络条件不好,也不会对发送速率进行调整。这样实现的弊端就是在网络条件不好的情况下可能会导致丢包,但是优点也很明显,在某些实时性要求高的场景(比如电话会议)就需要使用 UDP 而不是 TCP。

5. 头部开销小,传输数据报文时是很高效的。

四、TCP和UDP的比较

1. 对比

2. 总结

TCP向上层提供面向连接的可靠服务 ,UDP向上层提供无连接不可靠服务。

虽然 UDP 并没有 TCP 传输来的准确,但是也能在很多实时性要求高的地方有所作为

对数据准确性要求高,速度可以相对较慢的,可以选用TCP

一. 什么是SDN?

SDN字面意思是软件定义网络,其试图摆脱硬件对网络架构的限制,这样便可以像升级、安装软件一样对网络进行修改,便于更多的APP(应用程序)能够快速部署到网络上。

如果把现有的网络看成手机,那SDN的目标就是做出一个网络界的Android系统,可以在手机上安装升级,同时还能安装更多更强大的手机APP。

过去30年里,IP网络一直是全分布式的,战功卓著,解决了各种客户需求,今天SDN是为了未来更好更快的实现用户需求。并不是有什么需求通过传统方法不能做到,只是SDN做得更快、更好、更简单。

SDN的本质是网络软件化,提升网络可编程能力,是一次网络架构的重构,而不是一种新特性、新功能。SDN将比原来网络架构更好、更快、更简单的实现各种功能特性。

二.SDN解决什么问题?

IP网络的生存能力很强,得益于其分布式架构。看看IP的历史,当年美国军方希望在遭受核打击后,整个网络能够自主恢复,这样就不能允许网络集中控制,不能存在中心结点,否则在这个中心节点丢一颗核弹,整个网络就挂了。但正是这种全分布式架构导致了许多问题:

看看现在的IP网络管理多复杂,举个运营商部署VPN的例子:要配置MPLS、BFD、IGP、BGP、VPNV4、要绑定接口…且需要在每个PE上配置;当新增加一个PE时,还需要回去修改每个涉及到的PE。

现在各厂家的网络设备都太复杂了。如果您准备成为某个厂商设备的百事通,你需要掌握的命令行超过10000条,而其数量还在增加。 如果你准备成为IP骨灰级专家,你需要阅读网络设备相关RFC 2500篇,如果一天阅读一篇,你知道要看多久能看完?6年多!而这只是整个RFC的1/3,其数量还在增加。

此外,这些协议标准都是在解决各种各样的控制面需求,而这些需求都是需要经过需求提出、定义标准、互通测试、现网设备升级来完成部署,一般要个3~5年才能完成部署。这样的速度,已经Hold不住网络上运营业务的OTT们的各种快速网络调整需求,必须想办法解决这个问题。 很幸运,现在已经找到了解决以上问题的方法。没错,就是SDN !它是目前系统性的解决以上问题的最好方法。

三.传统网络概念和结构体

传统网络数据控制与转发:

传统网络是分布式控制的架构,每台设备都包含独立的控制平面,数据平面。

传统网络是分布式控制的架构:

这里的分布式控制指在传统IP网络中,用于协议计算的控制平面和报文转发的数据平面位于同一台设备中。

路由计算和拓扑变化后,每台设备都要重新进行路由计算过程,并称为分布式控制过程。

在传统IP网络中,每台设备都是独立收集网络信息,独立计算,并且都只关心自己的选路。

这种模型的弊端就是所有设备在计算路径时缺乏统一性。

传统网络的管理平面、控制平面、数据平面:

管理平面:管理设备(SNMP)

控制平面:路由协议(IGP、BGP)

数据平面:转发表(FIB)

OSS:Operation Support System,运营支撑系统。

NMS:Network Management Server,网络管理服务器。

传统网络架构:

== 传统网络分为管理平面、控制平面和数据平面. ==
管理平面主要包括设备管理系统和业务管理系统,设备管理系统负责网络拓扑、设备接口、设备特性的管理,同时可以给设备下发配置脚本。业务管理系统用于对业务进行管理,比如业务性能监控、业务告警管理等。
控制平面负责网络控制,主要功能为协议处理与计算。比如路由协议用于路由信息的计算、路由表的生成。
数据平面是指设备根据控制平面生成的指令完成用户业务的转发和处理。例如路由器根据路由协议生成的路由表对接收的数据包从相应的出接口转发出去。

1.传统网络局限性:

流量路径的灵活调整能力不足。

网络协议实现复杂,运维难度较大。

网络新业务升级速度较慢。

传统网络通常部署网管系统作为管理平面,而控制平面和数据平面分布在每个设备上运行。

流量路径的调整需要通过在网元上配置流量策略来实现,但对于大型网络的流量进行调整,不仅繁琐而且还很容易出现故障;当然也可以通过部署TE隧道来实现流量调整,但由于TE隧道的复杂性,对于维护人员的技能要求很高。

传统网络协议较复杂,有IGP、BGP、MPLS、组播协议等,而且还在不断增加。

设备厂家除标准协议外都有一些私有协议扩展,不仅设备操作命令繁多,而且不同厂家设备操作界面差异较大,运维复杂。

传统网络中由于设备的控制面是封闭式的,且不同厂家设备实现机制也可能有所不同,所以一种新功能的部署可能会造成周期较长;且如果需要对设备软件进行升级,还需要在每台设备上进行操作,大大降低了工作效率。

四.SDN概述

SDN(Software Defined Network)软件定义网络。

2006年,以斯坦福大学教授Nike Mckewn为首的团队提出了OpenFlow的概念,并基于OpenFlow技术实现网络的可编程能力(OpenFlow只是实现SDN的一个协议),是网络像软件一样灵活编程,SDN技术应运而生。
SDN的定义
SDN的定义是其字面意思,控制与转发分离,管理与控制分离只是满足SDN的一种手段,OpenFlow只是满足SDN的一种协议

SDN的分类

SDN的分类区别在于其实现的是控制与转发分离,还是管理与控制分离

SDN分类:

控制与转发分离 (超广义)

管理与控制分离 (广义)

SDN的三个主要特征:

转控分离:网元的控制平面在控制器上,负责协议计算,产生流表;而转发平面只在网络设备上。

集中控制:设备网元通过控制器集中管理和下发流表,这样就不需要对设备进行逐一操作,只需要对控制器进行配置即可。

开放接口:第三方应用只需要通过控制器提供的开放接口,通过编程方式定义一个新的网络功能,然后在控制器上运行即可。

SDN控制器既不是网管,也不是规划工具:

网管没有实现转控分离:网管只负责管理网络拓扑、监控设备告警和性能、下发配置脚本等操作,但这些仍然需要设备的控制平面负责产生转发表项。

规划工具的目的和控制器不同:规划工具是为了下发一些规划表项,这些表项并非用于路由器转发,是一些为网元控制平面服务的参数,比如IP地址,VLAN等。控制器下发的表项是流表,用于转发器转发数据包。

五.SDN网络架构

SDN是对传统网络架构的一次重构,由原来分布式控制的网络架构重构为集中控制的网络架构。

SDN网络体系架构的三层模型:

 

应用层:这一层主要是体现用户意图的各种上层应用程序,此类应用程序称为协同层应用程序,典型的应用包括OSS(Operation support system 运营支撑系统)、Openstack等。传统的IP网络同样具有转发平面、控制平面和管理平面,SDN网络架构也同样包含这3个平面,只是传统的IP网络是分布式控制的,而SDN网络架构下是集中控制的。

控制层:控制层是系统的控制中心,负责网络的内部交换路径和边界业务路由的生成,并负责处理网络状态变化事件。

转发层:转发层主要由转发器和连接器的线路构成基础转发网络,这一层负责执行用户数据的转发,转发过程中所需要的转发表项是由控制层生成的。

北向接口:应用层和控制层通信的接口,应用层通过控制开放的API,控制设备转发功能

南向接口:控制层和数据层通信的接口,控制器通过OpenFlow或其他协议下发流表。

SDN网络部署方式

Underlay的网络
所有的转发行为都由控制器通过OpenFlow协议或定制的BGP协议将转发表下发给转发器,转发器仅仅执行动作,没有单独控制面

Overlay的网络
这种网络的转发器一般都是传动设备,不支持OpenFlow,或者私有定制协议不能部署时,就要用隧道技术,基础网络还是传统网络形式,通过路由协议打同各个节点,但是在服务器接入点,才用隧道技术将数据报文进行封装或者解封装。对传统网络来说见到的就是普通数据报文,转发即可。隧道技术实际上就是报文的马甲,迷惑网络设备,让设备以为时自己人,但实际上报文的心是虚拟化的心。现一般才用Vxlan,GRE,NVGRE等隧道技术,而这些新增的协议,也需要升级现有网络设备才能支持(不支持上述协议的网络设备)。穿马甲索然能够在不进行大改造的情况下增加新的功能,但无疑会降低网络性能。

六.SDN的价值

网络业务快速创新:

SDN的可编程性和开放性,使得我们可以快速开发新的网络业务和加速业务创新。如果希望在网络上部署新业务,可以通过针对SDN软件的修改实现网络快速编程,业务快速上线。

SDN网络关键的地方是在网络架构中增加了一个SDN控制器,把原来的分布式控制平面集中到一个SDN控制器上,由这个集中的控制器来实现网络集中控制。SDN网络架构具备3个基本特征:转控分离、集中控制、开放接口。

 

SDN通过在网络中增加一个集中的SDN控制器,可以简化网络和快速进行业务创新。但是其本质的技术原理是通过SDN控制器的网络软件化过程来提升网络可编程能力。通信平面仍包含管理平面、控制平面和数据平面,SDN网络架构只是把系统的三个平面的功能进行了重新分配,传统网络控制平面是分布式的,分布在每个转发设备上,而SDN网络架构则是把分布式控制平面集中到一个SDN控制器内,实现集中控制,而管理平面和数据平面并没有太多什么变化。

SDN网络具备快速网络创新能力,如果这个新业务有价值则保留,没有价值可以快速下线。不像传统网络那样,一个新业务上线需要经过需求提出、讨论和定义开发商开发标准协议,然后在网络上升级所有的网络设备,经过数年才能完成一个新业务。SDN使得新业务的上线速度从几年提升到几个月或者更快。

简化网络:

SDN的网络架构简化了网络,消除了很多IETF的协议。协议的去除,意味着学习成本的下降,运行维护成本下降,业务部署快速提升。这个价值主要得益于SDN网络架构下的网络集中控制和转控分离。

因为SDN网络架构下的网络集中控制,所以被SDN控制器所控制的网络内部很多协议基本就不需要了,比如RSVP协议、LDP协议、MBGP协议、PIM组播协议等等。原因是网络内部的路径计算和建立全部在控制器完成,控制器计算出流表,直接下发给转发器就可以了,并不需要协议。未来大量传统的东西向协议会消失,而南北向控制协议比如Openflow协议则会不断的演进来满足SDN网络架构需求

网络设备白牌化:

基于SDN架构,如果标准化了控制器和转发器之间的接口,比如OpenFlow协议逐渐成熟,那么网络设备的白牌化将成为可能,比如专门的OpenFlow转发芯片供应商,控制器厂商等,这也正是所谓的系统从垂直集成开发走向水平集成。

 

垂直集成是一个厂家供应从软件到硬件到服务。水平集成则是把系统水平分工,每个厂家都完成产品的一个部件,有的集成商把他们集成起来销售。水平分工有利于系统各个部分的独立演进和更新,快速进化,促进竞争,促进各个部件的采购价格的下降。

业务自动化:

SDN网络架构下,由于整个网络归属控制器控制,那么网络业务网自动化就是理所当然的,不需要另外的系统进行配置分解。在SDN网络架构下,SDN控制器可以自己完成网络业务部署,提供各种网络服务,比如L2VPN、L3VPN等,屏蔽网络内部细节,提供网络业务自动化能力。

网络路径流量优化:

通常传统网络的路径选择依据是通过路由协议计算出的“最优”路径,但结果可能会导致“最优”路径上流量拥塞,其他非“最优”路径空闲。当采用SDN网络架构时,SDN控制器可以根据网络流量状态智能调整网络流量路径,提升网络利用率。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

跑马去追XX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值