计算机网络篇

计算机网络篇

网络体系概述:

OSI七层模型、tcp/ip 5层模型(重点)

tcp/ip 四层。5层,OSI 7层模型

经典的五层:

应用层 :为特定应用程序提供数据传输服务,例如 HTTP、DNS、FTP、SMTP等。数据单位为报文。

传输层 :为进程提供通用数据传输服务。由于应用层协议很多,定义通用的传输层协议就可以支持不断增多的应用层协议。运输层包括两种协议:传输控制协议 TCP,提供面向连接、可靠的数据传输服务,数据单位为报文段;用户数据报协议UDP,提供无连接、尽最大努力的数据传输服务,数据单位为用户数据报。TCP 主要提供完整性服务,UDP 主要提供及时性服务。

网络层 :为主机提供数据传输服务。而传输层协议是为主机中的进程提供数据传输服务。网络层把传输层传递下来的报文段或者用户数据报封装成分组。上层的数据段在这一层被分割,封装后叫做包(Packet),包有两种,一种叫做用户数据包(Data packets),是上层传下来的用户数据;另一种叫路由更新包(Route update packets),是直接由路由器发出来的,用来和其他路由器进行路由信息的交换。负责对子网间的数据包进行路由选择。网络层还可以实现拥塞控制、网际互连等功能。

数据链路层 :网络层针对的还是主机之间的数据传输服务,而主机之间可以有很多链路,链路层协议就是为同一链路的主机提供数据传输服务。数据链路层把网络层传下来的分组封装成帧。负责准备物理传输,CRC校验,错误通知,网络拓扑,流控等。我们所熟知的MAC地址和交换机都工作在这一层。上层传下来的包在这一层被分割封装后叫做帧(Frame)。在不可靠的物理介质上提供可靠的传输。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。

物理层 :考虑的是怎样在传输媒体和介质上传输数据比特流,而不是指具体的传输媒体。物理层的作用是尽可能屏蔽传输媒体和通信手段的差异,使数据链路层感觉不到这些差异

OSI七层模型:

表示层 :数据压缩、加密以及格式化数据等,程序不必关心在各台主机中数据内部格式不同的问题。

会话层 :建立及管理会话。

在这里插入图片描述

TCP/IP四层:

应用层、传输层、网络层、网络接口层
它只有四层,相当于五层协议中数据链路层和物理层合并为网络接口层。TCP/IP 协议族是一种沙漏形状,中间小两边大,IP 协议在其中占据举足轻重的地位。

三种交换:

电路交换:整个报文的比特流从源点连续的直达终点,像在一个管道中传输。包括建立连接、传 输数据和断开连接三个阶段。典型的电路交换网络是传统电话网络。
报文交换:将整个报文转发到相邻节点,全部存储下来,查找转发表,转发到下一个节点。是存储-转发类型的网络。
分组交换:将报文分组转发到相邻节点,查找转发表,转发到下一个节点。也是存储-转发类型的 网络。

电路交换
优点:传输时延小、没有冲突、实时性强;
缺点:独占式信道利用率低、建立连接时间长、灵活性差。

报文交换
优点:无需建立连接、信道利用率高;
缺点:转发时延长、要求的缓存空间大。

分组交换(无连接的数据报、面向连接的虚电路)
优点:无需建立连接、信道利用率高、简化了存储管理、加速了传输;
缺点:存在发送时延、可能会存在分组失序、丢失、重复。

image-20210304165221246

计算机网络的性能包括什么?

1速率:数据的传输速率,数据率 (比特率、bit/s)
2带宽:在单位时间内网络中某信道所能通过的最高数据率bit/s
3吞吐量:单位时间通过某个网络的实际数据量
4时延:指数据从网络的一端传送到另一端所需的时间。包括发送时延、传播时延、处理时延和排队时延;
5时延带宽积:时延带宽积 = 传播时延 * 带宽;
6往返时间RTT:互联网上的信息双向交互一次所需的时间

网络时延由哪几部分组成?各产生于何处?

答:一般来讲,网络时延主要由传输时延和传播时延组成,传输时延是将数据分组从第一个比特到最后一个比特全部推到链路上传输所花费的时间,传播时延是数据分组在链路上传输所需要的时间;若链路拥塞的时候,分组还要经受排队时延,这是分组在链路上等待传输所花费的时间。

计算机网络提供的服务的三种分类?

1、面向连接服务与无连接服务
在面向连接服务中, 通信前双方必须先建立连接, 分配相应的资源(如缓冲区), 以保证通 信能正常进行, 传输结束后释放连接和所占用的资源。因此这种服务可以分为连接建立、数据传输和连接释放三个阶段。例如TCP就是一种面向连接服务的协议。 在无连接服务中, 通信前双方不需要先建立连接, 需要发送数据时可直接发送,把每个带有 目的地址的包(报文分组) 传送到线路上, 由系统选定路线进行传输。这是一种不可靠的服务。 这种服务常被描述为“尽大努力交付" (Best-Effort-Delivery), 它并不保证通信的可靠性。例如 IP、UDP就是一种无连接服务的协议。

2、可靠服务和不可靠服务
可靠服务是指网络具有纠错、检错、应答机制, 能保证数据正确、可靠地传送到目的地。 不可靠服务是指网络只是尽量正确、可靠地传送, 而不能保证数据正确、可靠地传送到目的 地, 是一种尽力而为的服务。 对于提供不可靠服务的网络, 其网络的正确性、可靠性要由应用或用户来保障。例如, 用户 收到信息后要判断信息的正确性, 如果不正确, 那么用户要把出错信息报告给信息的发送者, 以 便发送者采取纠正措施。通过用户的这些措施, 可以把不可靠的服务变成可靠的服务。

3、有应答服务和无应答服务
有应答服务是指接收方在收到数据后向发送方给出相应的应答,该应答由传输系统内部自动 实现, 而不由用户实现。所发送的应答既可以是肯定应答, 也可以是否定应答, 通常在接收到 的 数据有错误时发送否定应答。例如, 文件传输服务就是一种有应答服务。 无应答服务是指接收方收到数据后不自动给出应答。若需要应答, 则由高层实现。例如, 对 于WWW服务, 客户端收到服务器发送的页面文件后不给出应答。

端到端通信和点到点通信的区别?

从本质上说,由物理层、数据链路层和网络层组成的通信子网为网络环境中的主机提供点到点的服务, 而传输层为网络中的主机提供端到端的通信。 直接相连的结点之间的通信称为点到点通信, 它只提供一台机器到另一台机器之间的通信, 不涉及程序或进程的概念。同时,点到点通信并不能保证数据传输的可靠性,也不能说明源主机与目的主机之间是哪两个进程在通信,这些工作都是由传输层来完成的。
端到端通信建立在点到点通信的基础上,它是由一段段的点到点通信信道构成的,是比点到点通信更高一级的通信方式,以完成应用程序(进程) 之间的通信。”端” 是指用户程序的端口, 端口号标识了应用层中不同的进程

物理层:

信号传输:

信道 一般用来表示向某一个方向传送信息的媒体

单向通信(单工通信)能有一个方向的通信而没有反方向的交互。

双向交替通信(半双工通信)通信的双方都可以发送信息,但不能双方同时发送,当然也就不能同时接收

双向同时通信(全双工通信)通信的双方可以同时发送和接收信息。

香农公式

信道的带宽或信道中的信噪比越大,则信息的极限传输速率就越高。

只要信息传输速率低于信道的极限信息传输速率,就一定可以找到某种办法来实现无差错的传输。

若信道带宽 W 或信噪比 S/N 没有上限(当然实际信道不可能是这样的),则信道的极限信息传输速率 C 也就没有上限。

实际信道上能够达到的信息传输速率要比香农的极限传输速率低不少

对于频带宽度已确定的信道,如果信噪比不能再提高了,并且码元传输速率也达到了上限值,那么还有办法提高信息的传输速率。

答:编码的方法让每一个码元携带更多比特的信息量。

码分复用:

码分复用是用一组包含互相正交的码字的码组携带多路信号。每一个用户可以在同样的时间使用同样的频带进行通信。由于各用户使用经过特殊挑选的不同码型,各用户之间不会造成干扰,因此这种系统发送的信号有很强的抗干扰能力。

链路层:

数据链路层三个基本问题是什么?

帧定界(封装成帧)

数据链路层的发送方应当让接收方的数据链路层知道,所发送的帧是从什么地方开始到什么地方结束。
在一段数据的前后分别添加首部和尾部,这样就构成了一个帧。接收端在接受到后就可以方便准确的确定帧的首尾,也称为帧定界符。同时定义出了最大传输单元(MTU)–表示一次可以传输的最大长度上限

透明传输

由于使用特定的字符来表示帧的开始和结束,所以传输的内容中不能出现和帧定界符相同的字符,但这显然是不可能的,为了解决这个办法,就可以在内容中和帧定界符一样的字符前边加上规定好的转义字符,这种方法称为字符填充或者是字节填充。

差错检测

比特在传输过程中可能产生差错,差错检测就是用于检测出现的差错,以便及时的重传,最常用的差错检测算法就是CRC(循环冗余检验)
注:只能检测到比特差错,出现传输差错(帧丢失、帧重复、帧失序)不能检测

数据链路层使用的信道主要有哪两种类型?

点对点信道:这种信道使用一对一的点对点通信方式。

广播信道:这种信道使用一对多的广播通信方式,因此过程比较复杂。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送。

CSMA/CD 载波监听多点接入/碰撞检测协议

多点接入:表示许多计算机以多点接入的方式连接在一根总线上。

载波监听是指每一个站在发送数据之前先要检测一下总线上是否有其他计算机在发送数据,如果有,则暂时不要发送数据,以免发生碰撞。== 简单的说就是,发送前、发送中,不停检测信道==

碰撞检测就是计算机边发送数据边检测信道上的信号电压大小。当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大(互相叠加)。当一个站检测到的信号电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞。简单的说就是,边发边检测,检测到碰撞后:在发生碰撞时,总线上传输的信号产生了严重的失真,无法从中恢复出有用的信息来。每一个正在发送数据的站,一旦发现总线上出现了碰撞,就要立即停止发送,免得继续浪费网络资源,然后等待一段随机时间后再次发送。

CSMA:载波监听
CD:碰撞检测,即边发送边侦听
重要概念:
总线的传播时延对CSMA/CD影响大:在A、B两结点互发数据的过程中,A给B发送数据,B检测到信道空闲,也开始发送数据,过程中A、B的数据发生碰撞,但他俩却不知道,再过一段时间后,A、B检测到碰撞然后停发。(因此采用CSMA/CD的以太网不可能进行全双工通信,只能进行半双工通信)。

争用期(碰撞窗口):A在B后检测到冲突,且A最多经过2T(T为单程传播时延)就可以检测到。(具体2T怎么来的看书哦~),每个站在发送数据之后一段时间内都有发生冲突的可能,只有经过争用期(2T)还未冲突则可确定安全。
最小帧长:存在这种情况:当A发送了一个很短的帧,并且发生了碰撞,不过由于这个帧太短了,发完了才检测到碰撞,根本来不及停发。因此,要设置最小帧长。为了确保发送站在发送数据的同时能检测到可能存在的冲突需要在发完帧之前就能收到自己发送的数据,故:最小帧长=总线传播时延×数据传输率×2。(以太网规定的最小帧长为64B)
二进制退避算法:在随机重传中使用该算法可以使重传需要推迟的平均时间随重传次数的增大而增大,因而可降低发生碰撞的概率。

PPP协议

点到点协议(Point to Point Protocol,PPP)是为在同等单元之间传输数据包这样的简单链路设计的链路层协议。这种链路提供全双工操作,并按照顺序传递数据包。设计目的主要是用来通过 拨号或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一 种共通的解决方案。PPP具有以下功能:

(1)PPP具有动态分配IP地址的能力,允许在连接时刻协商IP地址;
(2)PPP支持多种网络协议,比如TCP/IP、NetBEUI、NWLINK等;
(3)PPP具有错误检测能力,但不具备纠错能力,所以ppp是不可靠传输协议;
(4)无重传的机制,网络开销小,速度快。
(5)PPP具有身份验证功能。
(6) PPP可以用于多种类型的物理介质上,包括串口线、电话线、移动电话和光纤(例如 SDH),PPP也用于Internet接入

网络层:

虚电路技术

主要特点:在数据传输之前必须通过虚呼叫设置一条虚电路,可靠由网络来保证,它适用于两端之间长时间的数据交换。 有连接。分组均按同一路由进行转发。分组按顺序到达。当接电出故障,所有通过故障结点的虚电路均不能工作。

优点:可靠、保持顺序;

缺点:如有故障,则经过故障点的数据全部丢失.

数据报

特点:在数据报方式中,每个分组被称为一个数据报,在目的地需要重新组装报文,可靠性由用户主机来保证。 无连接。分组独立选择路由进行转发。分组到达顺序不一定。接电

优点:如有故障可绕过故障点。

缺点:不能保证按顺序到达,丢失不能立即知晓。

从单独的通信网来说,采用有连接的虚电路方式,或是采用无连接的数据报方式都是可以的。但是对于网间互联或IP业务,则是采用数据报方式有利。因为数据报方式可以最大限度地节省对网络节点的处理要求,不需要采取可靠性措施或流量控制,不需要预先建立逻辑的连接路径。

它在遇到网内拥塞等情况时,可以迅速改变路由,因而适用于各种不同类型的网络。在国际计算机互联网(因特网)中,用的就是数据报方式。虚电路适合于交互式通信,数据报方式更适合于单向地传送短信息。

在这里插入图片描述

路由器的主要功能?

路由器主要完成两个功能:一是路由选择(确定哪一条路径),二是分组转发(当一个分组到达 时所采取的动作)。前者是根据特定的路由选择协议构造出路由表,同时经常或定期地和相邻路 由器交换路由信息而不断地更新和维护路由表。后者处理通过路由器的数据流,关键操作是转发表查询、转发及相关的队列管理和任务调度等。

  1. 路由选择。指按照复杂的分布式算法,根据从各相邻路由器所得到的关于整个网络拓扑的变化 情况,动态地改变所选择的路由。
  2. 分组转发。指路由器根据转发表将用户的IP 数据报从合适的端口转发出去。路由表是根据路由 选择算法得出的,而转发表是从路由表得出的。转发表的结构应当使查找过程优化,路由表则 需要对网络拓扑变化的计算优化。在讨论路由选择的原理时,往往不去区分转发表和路由表, 而是笼统地使用路由表一词。

IP地址和MAC地址?

IP 地址是网络层使用的地址,它是分层次等级的。MAC地址是数据链路层使用的地址,它是平面式的。在网络层及网络层之上使用IP 地址, IP 地址放在IP 数据报的首部,而MAC 地址放在MAC 帧的首部。通过数据封装,把IP 数据报分组封装为MAC 帧后,数据链路层看不见数据报分组中的 IP地址。 由于路由器的隔离, IP 网络中无法通过广播方式依靠MAC 地址来完成跨网络的寻址,因此在IP 网络的网络层只使用IP 地址来完成寻址。寻址时,IP每个路由器依据其路由表(依靠静态路由或 动态路由协议生成)选择到目标网络(即主机号全为0 的网络地址)需要转发到的下一跳(路由 器的物理端口号或下一网络地址),而IP 分组通过多次路由转发到达目标网络后,改为在目标 LAN 中通过数据链路层的MAC 地址以广播方式寻址。这样可以提高路由选择的效率。
注意:路由器由于互联多个网络,因此它不仅有多个IP 地址,也有多个硬件地址。

ARP地址解析协议?

无论网络层使用什么协议,在实际网络的链路上传送数据帧时,终必须使用硬件地址。所以需 要一种方法来完成IP 地址到MAC 地址的映射,这就是地址解析协议(Address Resolution Protocol)。每台主机都设有一个ARP 高速缓存,用来存放本局域网上各主机和路由器的IP地址 到MAC 地址的映射表,称ARP 表。使用ARP 来动态维护此ARP 表。

工作原理:
主机A向主机B发送IP数据报,先在A的ARP高速缓存中查看是否有B主机的IP地址,若有,则查出对应的硬件地址,再将此地址写入MAC帧中;若没有,则以广播的方式发送给该局域网中的全部主机,主机B收到请求后作出响应,发出响应ARP分组,分组中包含主机B的IP到MAC地址的映射关系,主机A收到后再写入ARP缓存中。

注意: ARP 用于解决同一个局域网上的主机或路由器的IP 地址和硬件地址的映射问题。如果所要找的主机和源主机不在同一个局域网上,那么就要通过ARP 找到一个位于本局域网上的某个路由 器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的 工作就由下一个网络来做,尽管ARP 请求分组是广播发送的,但ARP 响应分组是普通的单播,即 从一个源地址发送到一个目的地址。

ARP欺骗:地址解析协议是建立在网络中各个主机互相信任的基础上的,网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。

为什么不直接使用硬件地址进行通信?

由于全世界存在着各式各样的网络,它们使用不同的硬件地址。要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作,因此几乎是不可能的事。IP 编址把这个复杂问题解决了。连接到互联网的主机只需各自拥有一个唯一的 IP 地址,它们之间的通信就像连接在同一个网络上那样简单方便,因为上述的调用 ARP 的复杂过程都是由计算机软件自动进行的,对用户来说是看不见这种调用过程的。

l因此,在虚拟的 IP 网络上用 IP 地址进行通信给广大的计算机用户带来了很大的方便。**

ICMP网际控制报文协议?

为了提高IP 数据报交付成功的机会,在网络层使用了网际控制报文协议(Internet Control Message Protocol, ICMP) 来让主机或路由器报告差错和异常情况。ICMP 报文作为IP 层数据报的数据,加上数据报的首部,组成IP 数据报发送出去。ICMP 是IP 层协议。ICMP 报文的种类有两种,即ICMP 差错报告报文和ICMP 询问报文。ICMP 差错报告报文用于目标主机或到目标主机路 径上的路由器向源主机报告差错和异常情况。共有以下5种类型:

  1. 终点不可达。当路由器或主机不能交付数据报时,就向源点发送终点不可达报文。

  2. 源点抑制。当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知 道应当把数据报的发送速率放慢。

  3. 时间超过。当路由器收到生存时间(TTL) 为零的数据报时,除丢弃该数据报外,还要向源点发送 时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到 的数据报片都丢弃,并向源点发送时间超过报文。

  4. 参数问题。当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃 该数据报,并向源点发送参数问题报文。

  5. 改变路由(重定向)。路由器把改变路由报文发送给主机,让主机知道下次应将数据报发 送给另外的路由器(可通过更好的路由)。

在浏览器中输入网址后执行的全部过程

  现在假设如果我们在客户端(客户端)浏览器中输入http://www.baidu.com,而baidu.com为要访问的服务器(服务器),下面详细分析客户端为了访问服务器而执行的一系列关于协议的操作:

  1)客户端浏览器通过DNS解析到www.baidu.com的IP地址220.181.27.48,通过这个IP地址找到客户端到服务器的路径****。客户端浏览器发起一个HTTP会话到220.161.27.48,然后通过TCP进行封装数据包,输入到网络层**。

  2)在客户端的传输层,把HTTP会话请求分成报文段,添加源和目的端口,如服务器使用80端口监听客户端的请求,客户端由系统随机选择一个端口如5000,与服务器进行交换,服务器把相应的请求返回给客户端的5000端口。然后使用IP层的IP地址查找目的端。

  3)客户端的网络层不用关系应用层或者传输层的东西,主要做的是通过查找路由表确定如何到达服务器,期间可能经过多个路由器,这些都是由路由器来完成的工作,不作过多的描述,无非就是通过查找路由表决定通过那个路径到达服务器。

  4)客户端的链路层,包通过链路层发送到路由器,通过ARP协议查找给定IP地址的MAC地址,然后发送ARP请求查找目的地址,如果得到回应后就可以使用ARP的请求应答交换的IP数据包现在就可以传输了,然后发送IP数据包到达服务器的地址。


传输层:

TCP/IP协议:

TCP/IP协议是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP是给因特网的每一台联网设备规定一个地址。IP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层---TCP或UDP层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是否按顺序发送的或者有没有被破坏,IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。

传输层的功能如下:

l) 传输层提供应用进程之间的逻辑通信(即端到端的通信)。与网络层的区别是,网络层提供的 是主机之间的逻辑通信。从网络层来说,通信的双方是两台主机, IP 数据报的首部给出了这两台 主机的IP 地址。但“两台主机之间的通信”实际上是两台主机中的应用进程之间的通信,应用进程 之间的通信又称端到端的逻辑通信。

  1. 复用和分用。复用是指发送方不同的应用进程都可使用同一个传输层协议传送数据分用是指 接收方的传输层在剥去报文的首部后能够把这些数据正确交付到目的应用进程。

  2. 传输层还要对收到的报文进行差错检测(首部和数据部分)。而网络层只检查IP 数据报的首 部,不检验数据部分是否出错。

  3. 提供两种不同的传输协议,即面向连接的TCP 和无连接的UDP 。而网络层无法同时实现两种协 议(即在网络层要么只提供面向连接的服务,如虚电路;要么只提供无连接服务,如数据报,而 不可能在网络层同时存在这两种方式)。

运输层的 UDP 用户数据报与网际层的IP数据报区别。

1.IP 数据报要经过互连网中许多路由器的存储转发。

2.UDP 用户数据报是在运输层的端到端抽象的逻辑信道中传送的。

TCP 报文段是在运输层抽象的端到端逻辑信道中传送,这种信道是可靠的全双工信道。但这样的信道却不知道究竟经过了哪些路由器,而这些路由器也根本不知道上面的运输层是否建立了 TCP 连接。

两个主要协议:

1.用户数据报协议 UDP (User Datagram Protocol)

2.传输控制协议 TCP (Transmission Control Protocol)

在这里插入图片描述

TCP对应的协议:

(1) FTP:定义了文件传输协议,使用21端口。常说某某计算机开了FTP服务便是启动了文件传输服务。下载文件,上传主页,都要用到FTP服务。

(2) Telnet:它是一种用于远程登陆的端口,用户可以以自己的身份远程连接到计算机上,通过这种端口可以提供一种基于DOS模式下的通信服务。如以前的BBS是-纯字符界面的,支持BBS的服务器将23端口打开,对外提供服务。

(3) SMTP:定义了简单邮件传送协议,现在很多邮件服务器都用的是这个协议,用于发送邮件。如常见的免费邮件服务中用的就是这个邮件服务端口,所以在电子邮件设置-中常看到有这么SMTP端口设置这个栏,服务器开放的是25号端口。

(4) POP3:它是和SMTP对应,POP3用于接收邮件。通常情况下,POP3协议所用的是110端口。也是说,只要你有相应的使用POP3协议的程序(例如Fo-xmail或Outlook),就可以不以Web方式登陆进邮箱界面,直接用邮件程序就可以收到邮件(如是163邮箱就没有必要先进入网易网站,再进入自己的邮-箱来收信)。

(5)HTTP协议:是从Web服务器传输超文本到本地浏览器的传送协议。

UDP对应的协议:

(1) DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口。

(2) SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。

(3) TFTP(Trival File Transfer Protocal),简单文件传输协议,该协议在熟知端口69上使用UDP服务。

UDP特点:

1.UDP 是无连接的,发送数据之前不需要建立连接,,因此减少了开销和发送数据之前的时延。

2.UDP 使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态表。

3.UDP 是面向报文的。UDP 对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。UDP 一次交付一个完整的报文。

4.UDP 没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用是很重要的。很适合多媒体通信的要求。

5.UDP 支持一对一、一对多、多对一和多对多的交互通信。

6.UDP 的首部开销小,只有 8 个字节,比 TCP 的 20 个字节的首部要短。

注意:发送方 UDP 对应用程序交下来的报文,在添加首部后就向下交付 IP 层。UDP 对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。应用层交给 UDP 多长的报文,UDP 就照样发送,即一次发送一个报文。

TCP特点:

1.TCP 是面向连接的运输层协议。

2.每一条 TCP 连接只能有两个端点 (endpoint),每一条 TCP 连接只能是点对点的(一对一)。

3.TCP 提供可靠交付的服务。

4.TCP 提供全双工通信。

5.面向字节流

TCP 不保证接收方应用程序所收到的数据块和发送方应用程序所发出的数据块具有对应大小的关系。

但接收方应用程序收到的字节流必须和发送方应用程序发出的字节流完全一样。把它还原成有意义的应用层数据。

TCP三次握手

(我要和你建立链接,你真的要和我建立链接么,我真的要和你建立链接,成功):

第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。

第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。

第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。

TCP四次挥手

(我要和你断开链接;好的,断吧。我也要和你断开链接;好的,断吧):

第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。

第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。此时TCP链接处于半关闭状态,即客户端已经没有要发送的数据了,但服务端若发送数据,则客户端仍要接收。

第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。

第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。

在这里插入图片描述

为什么TCP连接要建立三次连接?

为了防止失效的连接请求又传送到主机,因而产生错误。

如果使用的是两次握手建立连接,假设有这样一种场景:客户端发送了第一个请求连接并且没有丢失,只是因为在网络结点中滞留的时间太长了,由于TCP的客户端迟迟没有收到确认报文,以为服务器没有收到,此时重新向服务器发送这条报文,此后客户端和服务器经过两次握手完成连接,传输数据,然后关闭连接。此时此前滞留的那一次请求连接,网络通畅了到达了服务器,这个报文本该是失效的,但是,两次握手的机制将会让客户端和服务器再次建立连接,不会对客户端进行确认,直接传输不需要的数据,这将导致不必要的错误和资源的浪费。

为何不采用“三次握手“释放连接,且发送最后一次握手报文后要等待2MSL 的时间呢?

原因有两个:

  1. 保证A 发送的后一个确认报文段能够到达B 。如果A 不等待2MSL, 若A 返回的后确认报文 段丢失,则B 不能进入正常关闭状态,而A 此时已经关闭,也不可能再重传。

  2. 防止出现“已失效的连接请求报文段“。A 在发送后一个确认报文段后,再经过2MSL可保证本 连接持续的时间内所产生的所有报文段从网络中消失。
    所以服务器结束TCP 连接的时间要比客户机早一些,因为客户机后要等待2MSL 后才可进入CLOSED 状态

如何保证数据可靠传输:

1、确认和重传:接收方收到报文就会确认,发送方发送一段时间后没有收到确认就重传。

2、数据校验

3、数据合理分片和排序:
例如:UDP:IP数据报大于1500字节,大于MTU.这个时候发送方IP层就需要分片(fragmentation).把数据报分成若干片,使每一片都小于MTU.而接收方IP层则需要进行数据报的重组.这样就会多做许多事情,而更严重的是,由于UDP的特性,当某一片数据传送中丢失时,接收方便无法重组数据报.将导致丢弃整个UDP数据报.

  tcp会按MTU合理分片,接收方会缓存未按序到达的数据,重新排序后再交给应用层。

4、流量控制:当接收方来不及处理发送方的数据,能提示发送方降低发送的速率,防止包丢失。

5、拥塞控制:当网络拥塞时,减少数据的发送。

停止等待协议:

1.停止等待。发送方每次只发送一个分组。在收到确认后再发送下一个分组。

2.编号。对发送的每个分组和确认都进行编号。

2.自动重传请求。发送方为每个发送的分组设置一个超时计时器。若超时计时器超时,发送方会自动重传分组。

3.简单,但信道利用率太低。

连续 ARQ协议:

1.发送方一次可以发出多个分组。

2.使用滑动窗口协议控制发送方和接收方所能发送和接收的分组的数量和编号。

3.每收到一个确认,发送方就把发送窗口向前滑动。

4.接收方一般采用累积确认的方式。

5.采用回退N(Go-Back-N)方法进行重传。

TCP中的流量控制和拥塞控制

流量控制主要针对的是端到端传输中控制流量大小并保证传输可靠性(未收到ack就不滑动)。流量控制往往是指点对点通信量的控制,所要做的是抑制发送端发送数据的速率。利用滑动窗口实现流量控制,如果发送方把数据发送得过快,接收方可能会来不及接收,这就会造成数据的丢失。所谓流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。

拥塞控制主要是一个全局性过程,涉及到所有主机,路由器,以及与降低网络传输性能有关的所有因素。防止过多的数据注入到网络中。如果有发生丢包则通过拥塞控制减小窗口,确定出合适(慢启动 拥塞避免 快重传 快恢复)的拥塞窗口(增性加乘性减)。

注:
1). 慢启动:不要一开始就发送大量的数据,先探测一下网络的拥塞程度,也就是说由小到大逐渐增加拥塞窗口的大小;

2). 拥塞避免:拥塞避免算法让拥塞窗口缓慢增长,即每经过一个往返时间RTT就把发送方的拥塞窗口cwnd加1,而不是加倍,这样拥塞窗口按线性规律缓慢增长。

3). 快重传:快重传要求接收方在收到一个 失序的报文段 后就立即发出 重复确认(为的是使发送方及早知道有报文段没有到达对方)而不要等到自己发送数据时捎带确认。快重传算法规定,发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段,而不必继续等待设置的重传计时器时间到期。

4). 快恢复:快重传配合使用的还有快恢复算法,当发送方连续收到三个重复确认时,就执行“乘法减小”算法,把ssthresh门限减半,但是接下去并不执行慢开始算法:因为如果网络出现拥塞的话就不会收到好几个重复的确认,所以发送方现在认为网络可能没有出现拥塞。所以此时不执行慢开始算法,而是将cwnd设置为ssthresh的大小,然后执行拥塞避免算法。

在这里插入图片描述****

Get与POST的区别:

GET与POST是我们常用的两种HTTP Method,二者之间的区别主要包括如下五个方面:

(1). 从功能上讲,GET一般用来从服务器上获取资源,POST一般用来更新服务器上的资源;

(2). 从REST服务角度上说,GET是幂等的,即读取同一个资源,总是得到相同的数据,
而POST不是幂等的,因为每次请求对资源的改变并不是相同的;进一步地,GET不会改变服务器上的资源,而POST会对服务器资源进行改变;

(3). 从请求参数形式上看,GET请求的数据会附在URL之后,即将请求数据放置在HTTP报文的 请求头 中,以?分割URL和传输数据,参数之间以&相连。而POST请求会把提交的数据则放置在是HTTP请求报文的请求体 中。

(4). 就安全性而言,POST的安全性要比GET的安全性高,因为GET请求提交的数据将明文出现在URL上,而且POST请求参数则被包装到请求体中,相对更安全。

(5). 从请求的大小看,GET请求的长度受限于浏览器或服务器对URL长度的限制,允许发送的数据量比较小,而POST请求则是没有大小限制的。

IPv4向IPv6的过渡技术

双协议栈:在完全过渡到IPv6之前,使一部分主机或路由器装有两个协议栈,通过双协议栈进行转换;

隧道技术:将整个IPv6数据报封装到IPv4数据报的数据部分,使得IPv6数据报可以在IPv4网络中传输.

应用层:

网络通信过程:

在这里插入图片描述

在这里插入图片描述

DNS解析:

DNS,域名系统(Domain Name System缩写DNS,Domain Name被译为域名)是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。

域名系统(Domain Name System,DNS)是Internet上解决网上机器命名的一种系统。就像拜访朋友要先知道别人家怎么走一样,Internet上当一台主机要访问另外一台主机时,必须首先获知其地址,TCP/IP中的IP地址是由四段以“.”分开的数字组成,记起来总是不如名字那么方便,所以,就采用了域名系统来管理名字和IP的对应关系。

当客户端需要域名解析时,通过本机的DNS 客户端构造一个DNS 请求报文,以UDP 数据报方式发往本地域名服务器。域名解析有两种方式:递归查询和递归与迭代相结合的查询。

DHCP动态主机配置协议(Dynamic Host Configuration Protocol)

动态主机配置协议(Dynamic Host Configuration Protocol, DHCP) 常用于给主机动态地分配IP 地 址,它提供了即插即用联网的机制,这种机制允许一台计算机加入新的网络和获取IP 地址而不用 手工参与。DHCP 是应用层协议,它是基于UDP 的。 DHCP协议采用客户端/服务器模型,主机地址的动态分配任务由网络主机驱动。当DHCP服务器接收到来自网络主机申请地址的信息时,才会向网络主机发送相关的地址配置等信息,以实现网络主机地址信息的动态配置。

DHCP具有以下功能:

  1. 保证任何IP地址在同一时刻只能由一台DHCP客户机所使用。
  2. DHCP应当可以给用户分配永久固定的IP地址。
  3. DHCP应当可以同用其他方法获得IP地址的主机共存(如手工配置IP地址的主机)。
  4. DHCP服务器应当向现有的BOOTP客户端提供服务
  5. DHCP 使用客户-服务器方式,采用请求/应答方式工作
  6. 在这里插入图片描述

FTP协议:

FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。

默认情况下FTP协议使用TCP端口中的 20和21这两个端口,其中20用于传输数据,21用于传输控制信息。但是,是否使用20作为传输数据的端口与FTP使用的传输模式有关,如果采用主动模式,那么数据传输端口就是20;如果采用被动模式,则具体最终使用哪个端口要服务器端和客户端协商决定。

SMTP简单邮件传输协议:

简单邮件传输协议(Simple Mail Transfer Protocol, SMTP) 是一种提供可靠且有效的电子邮件传输 的协议,它控制两个相互通信的SMTP 进程交换信息。由于SMTP 使用客户/服务器方式,因此 负责发送邮件的SMTP 进程就是SMTP 客户,而负责接收邮件的SMTP 进程就是SMTP 服务器。 SMTP 用的是TCP 连接,端口号为25 。SMTP 通信有以下三个阶段:(1) 连接建立(2) 邮件传送(3) 连接释放。

POP3

邮局协议(Post Office Protocol, POP) 是一个非常简单但功能有限的邮件读取协议,现在使用的是 它的第3 个版本POP3 。POP3 采用的是“拉" (Pull) 的通信方式,当用户读取邮件时,用户代理向 邮件服务器发出请求,“拉”取用户邮箱中的邮件。POP 也使用客户/服务器的工作方式,在传输 层使用TCP, 端口号为110 。接收方的用户代理上必须运行POP 客户程序,而接收方的邮件服务器 上则运行POP 服务器程序。POP 有两种工作方式:“下载并保留”和“下载并删除"。在“下载并保 留”方式下,用户从邮件服务器上读取邮件后,邮件依然会保存在邮件服务器上,用户可再次从服 务器上读取该邮件;而使用“下载并删除“方式时,邮件一旦被读取,就被从邮件服务器上删除, 用户不能再次从服务器上读取。

HTTP:

为了使超文本的链接能够高效率地完成,需要用 HTTP 协议来传送一切必须的信息。

从层次的角度看,HTTP 是面向事务的 (transaction-oriented) 应用层协议,它是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。

特点:

HTTP 使用了面向连接的 TCP 作为运输层协议,保证了数据的可靠传输。

HTTP 协议本身也是无连接的,虽然它使用了面向连接的 TCP 向上提供的服务。

HTTP 是面向事务的客户服务器协议。

HTTP 1.0 协议是无状态的 (stateless)。HTTP/1.1 协议使用持续连接 (persistent connection)。万维网服务器在发送响应后仍然在一段时间内保持这条连接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的 HTTP 请求报文和响应报文。

IO中同步与异步,阻塞与非阻塞区别

同步和异步关注的是消息通信机制 (synchronous communication/asynchronous communication)
所谓同步,就是在发出一个调用时,在没有得到结果之前,该调用就不返回。但是一旦调用返回,就得到返回值了。
换句话说,就是调用者主动等待这个调用的结果。
而异步则是相反,调用在发出之后,这个调用就直接返回了,所以没有返回结果。换句话说,当一个异步过程调用发出后,调用者不会立刻得到结果。而是在调用发出后被调用者通过状态、通知来通知调用者,或通过回调函数处理这个调用。

阻塞和非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态.

阻塞调用是指调用结果返回之前,当前线程会被挂起。函数只有在得到结果之后才会返回。

非阻塞:不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。

对称密钥与非对称密钥

对称密钥加密(Symmetric-key Cryptography):
又称私钥加密或会话密钥加密算法,即信息的发送方和接收方使用同一个密钥去加密和解密数据。它的最大优势是加/解密速度快,适合于**对大数据量进行加密,但密钥管理困难。加密的人与解密的人用的密钥是一样的。这种加密方式被称为对称密钥加密。
对称密钥加密的工作机制:对于送信的一方,使用公共密钥加密明文之后传输给受信一方,受信一方用同一个公共密钥解密密文拿到明文。一旦密钥泄露那么盗听的人可以轻易地破解传输中的密文拿到机密情报。这也是为什么这种加密方式仅在早期被使用的原因。

非对称密钥加密系统 (Asymmetric Cryptography):又称公钥密钥加密。它需要使用不同的密钥来分别完成加密和解密操作,一个公开发布,即公开密钥,另一个由用户自己秘密保存,即私用密钥。信息发送者用公开密钥去加密,而信息接收者则用私用密钥去解密。公钥机制灵活,但加密和解密速度却比对称密钥加密慢得多。也因这种公钥私钥不一致的特性,被称为非对称加密。

非对称密钥加密工作原理,对于送信的一方,使用公开密钥加密明文之后传输给受信一方,受信一方用另同一个私有密钥解密密文拿到明文。所以在实际的应用中,人们通常将两者结合在一起使用,例如,对称密钥加密系统用于存储大量数据信息,而公开密钥加密系统则用于加密密钥。

image-20210305094904127

原文地址:https://www.cnblogs.com/xiaxiaopi/p/14484815.html