导航:首页 > 网络连接 > 计算机网络肯定确认与否定确认

计算机网络肯定确认与否定确认

发布时间:2023-01-11 05:54:19

计算机网络自学笔记:TCP

如果你在学习这门课程,仅仅为了理解网络工作原理,那么只要了解TCP是可靠传输,数据传输丢失时会重传就可以了。如果你还要参加研究生考试或者公司面试等,那么下面内容很有可能成为考查的知识点,主要的重点是序号/确认号的编码、超时定时器的设置、可靠传输和连接的管理。

1 TCP连接

TCP面向连接,在一个应用进程开始向另一个应用进程发送数据之前,这两个进程必须先相互“握手”,即它们必须相互发送某些预备报文段,以建立连接。连接的实质是双方都初始化与连接相关的发送/接收缓冲区,以及许多TCP状态变量。

这种“连接”不是一条如电话网络中端到端的电路,因为它们的状态完全保留在两个端系统中。

TCP连接提供的是全双工服务 ,应用层数据就可在从进程B流向进程A的同时,也从进程A流向进程B。

TCP连接也总是点对点的 ,即在单个发送方与单个接收方之间建立连接。

一个客户机进程向服务器进程发送数据时,客户机进程通过套接字传递数据流。

客户机操作系统中运行的 TCP软件模块首先将这些数据放到该连接的发送缓存里 ,然后会不时地从发送缓存里取出一块数据发送。

TCP可从缓存中取出并放入报文段中发送的数据量受限于最大报文段长MSS,通常由最大链路层帧长度来决定(也就是底层的通信链路决定)。 例如一个链路层帧的最大长度1500字节,除去数据报头部长度20字节,TCP报文段的头部长度20字节,MSS为1460字节。

报文段被往下传给网络层,网络层将其封装在网络层IP数据报中。然后这些数据报被发送到网络中。

当TCP在另一端接收到一个报文段后,该报文段的数据就被放人该连接的接收缓存中。应用程序从接收缓存中读取数据流(注意是应用程序来读,不是操作系统推送)。

TCP连接的每一端都有各自的发送缓存和接收缓存。

因此TCP连接的组成包括:主机上的缓存、控制变量和与一个进程连接的套接字变量名,以及另一台主机上的一套缓存、控制变量和与一个进程连接的套接字。

在这两台主机之间的路由器、交换机中,没有为该连接分配任何缓存和控制变量。

2报文段结构

TCP报文段由首部字段和一个数据字段组成。数据字段包含有应用层数据。

由于MSS限制了报文段数据字段的最大长度。当TCP发送一个大文件时,TCP通常是将文件划分成长度为MSS的若干块。

TCP报文段的结构。

首部包括源端口号和目的端口号,它用于多路复用/多路分解来自或送至上层应用的数据。另外,TCP首部也包括校验和字段。报文段首部还包含下列字段:

32比特的序号字段和32比特的确认号字段。这些字段被TCP发送方和接收方用来实现可靠数据传输服务。

16比特的接收窗口字段,该字段用于流量控制。该字段用于指示接收方能够接受的字节数量。

4比特的首部长度字段,该字段指示以32比特的字为单位的TCP首部长度。一般TCP首部的长度就是20字节。

可选与变长的选项字段,该字段用于当发送方与接收方协商最大报文段长度,或在高速网络环境下用作窗口调节因子时使用。

标志字段ACK比特用于指示确认字段中的ACK值的有效性,即该报文段包括一个对已被成功接收报文段的确认。 SYN和FIN比特用于连接建立和拆除。 PSH、URG和紧急指针字段通常没有使用。

•序号和确认号

TCP报文段首部两个最重要的字段是序号字段和确认号字段。

TCP把数据看成一个无结构的但是有序的字节流。TCP序号是建立在传送的字节流之上,而不是建立在传送的报文段的序列之上。

一个报文段的序号是该报文段首字节在字节流中的编号。

例如,假设主机A上的一个进程想通过一条TCP连接向主机B上的一个进程发送一个数据流。主机A中的TCP将对数据流中的每一个字节进行编号。假定数据流由一个包含4500字节的文件组成(可以理解为应用程序调用send函数传递过来的数据长度),MSS为1000字节(链路层一次能够传输的字节数),如果主机决定数据流的首字节编号是7。TCP模块将为该数据流构建5个报文段(也就是分5个IP数据报)。第一个报文段的序号被赋为7;第二个报文段的序号被赋为1007,第三个报文段的序号被赋为2007,以此类推。前面4个报文段的长度是1000,最后一个是500。

确认号要比序号难理解一些。前面讲过,TCP是全双工的,因此主机A在向主机B发送数据的同时,也可能接收来自主机B的数据。从主机B到达的每个报文段中的序号字段包含了从B流向A的数据的起始位置。 因此主机B填充进报文段的确认号是主机B期望从主机A收到的下一报文段首字节的序号。

假设主机B已收到了来自主机A编号为7-1006的所有字节,同时假设它要发送一个报文段给主机A。主机B等待主机A的数据流中字节1007及后续所有字节。所以,主机B会在它发往主机A的报文段的确认号字段中填上1007。

再举一个例子,假设主机B已收到一个来自主机A的包含字节7-1006的报文段,以及另一个包含字节2007-3006的报文段。由于某种原因,主机A还没有收到字节1007-2006的报文段。

在这个例子中,主机A为了重组主机B的数据流,仍在等待字节1007。因此,A在收到包含字节2007-3006的报文段时,将会又一次在确认号字段中包含1007。 因为TCP只确认数据流中至第一个丢失报文段之前的字节数据,所以TCP被称为是采用累积确认。

TCP的实现有两个基本的选择:

1接收方立即丢弃失序报文段;

2接收方保留失序的字节,并等待缺少的字节以填补该间隔。

一条TCP连接的双方均可随机地选择初始序号。 这样做可以减少将那些仍在网络中的来自两台主机之间先前连接的报文段,误认为是新建连接所产生的有效报文段的可能性。

•例子telnet

Telnet由是一个用于远程登录的应用层协议。它运行在TCP之上,被设计成可在任意一对主机之间工作。

假设主机A发起一个与主机B的Telnet会话。因为是主机A发起该会话,因此主机A被标记为客户机,主机B被标记为服务器。用户键入的每个字符(在客户机端)都会被发送至远程主机。远程主机收到后会复制一个相同的字符发回客户机,并显示在Telnet用户的屏幕上。这种“回显”用于确保由用户发送的字符已经被远程主机收到并处理。因此,在从用户击键到字符显示在用户屏幕上之间的这段时间内,每个字符在网络中传输了两次。

现在假设用户输入了一个字符“C”,假设客户机和服务器的起始序号分别是42和79。前面讲过,一个报文段的序号就是该报文段数据字段首字节的序号。因此,客户机发送的第一个报文段的序号为42,服务器发送的第一个报文段的序号为79。前面讲过,确认号就是主机期待的数据的下一个字节序号。在TCP连接建立后但没有发送任何数据之前,客户机等待字节79,而服务器等待字节42。

如图所示,共发了3个报文段。第一个报文段是由客户机发往服务器,其数据字段里包含一字节的字符“C”的ASCII码,其序号字段里是42。另外,由于客户机还没有接收到来自服务器的任何数据,因此该报文段中的确认号字段里是79。

第二个报文段是由服务器发往客户机。它有两个目的:第一个目的是为服务器所收到的数据提供确认。服务器通过在确认号字段中填入43,告诉客户机它已经成功地收到字节42及以前的所有字节,现在正等待着字节43的出现。第二个目的是回显字符“C”。因此,在第二个报文段的数据字段里填入的是字符“C”的ASCII码,第二个报文段的序号为79,它是该TCP连接上从服务器到客户机的数据流的起始序号,也是服务器要发送的第一个字节的数据。

这里客户机到服务器的数据的确认被装载在一个服务器到客户机的数据的报文段中,这种确认被称为是捎带确认.

第三个报文段是从客户机发往服务器的。它的唯一目的是确认已从服务器收到的数据。

3往返时延的估计与超时

TCP如同前面所讲的rdt协议一样,采用超时/重传机制来处理报文段的丢失问题。最重要的一个问题就是超时间隔长度的设置。显然,超时间隔必须大于TCP连接的往返时延RTT,即从一个报文段发出到收到其确认时。否则会造成不必要的重传。

•估计往返时延

TCP估计发送方与接收方之间的往返时延是通过采集报文段的样本RTT来实现的,就是从某报文段被发出到对该报文段的确认被收到之间的时间长度。

也就是说TCP为一个已发送的但目前尚未被确认的报文段估计sampleRTT,从而产生一个接近每个RTT的采样值。但是,TCP不会为重传的报文段计算RTT。

为了估计一个典型的RTT,采取了某种对RTT取平均值的办法。TCP据下列公式来更新

EstimatedRTT=(1-)*EstimatedRTT+*SampleRTT

即估计RTT的新值是由以前估计的RTT值与sampleRTT新值加权组合而成的。

参考值是a=0.125,因此是一个加权平均值。显然这个加权平均对最新样本赋予的权值

要大于对老样本赋予的权值。因为越新的样本能更好地反映出网络当前的拥塞情况。从统计学观点来讲,这种平均被称为指数加权移动平均

除了估算RTT外,还需要测量RTT的变化,RTT偏差的程度,因为直接使用平均值设置计时器会有问题(太灵敏)。

DevRTT=(1-β)*DevRTT+β*|SampleRTT-EstimatedRTT|

RTT偏差也使用了指数加权移动平均。B取值0.25.

•设置和管理重传超时间隔

假设已经得到了估计RTT值和RTT偏差值,那么TCP超时间隔应该用什么值呢?TCP将超时间隔设置成大于等于估计RTT值和4倍的RTT偏差值,否则将造成不必要的重传。但是超时间隔也不应该比估计RTT值大太多,否则当报文段丢失时,TCP不能很快地重传该报文段,从而将给上层应用带来很大的数据传输时延。因此,要求将超时间隔设为估计RTT值加上一定余量。当估计RTT值波动较大时,这个余最应该大些;当波动比较小时,这个余量应该小些。因此使用4倍的偏差值来设置重传时间。

TimeoutInterval=EstimatedRTT+4*DevRTT

4可信数据传输

因特网的网络层服务是不可靠的。IP不保证数据报的交付,不保证数据报的按序交付,也不保证数据报中数据的完整性。

TCP在IP不可靠的尽力而为服务基础上建立了一种可靠数据传输服务。

TCP提供可靠数据传输的方法涉及前面学过的许多原理。

TCP采用流水线协议、累计确认。

TCP推荐的定时器管理过程使用单一的重传定时器,即使有多个已发送但还未被确认的报文段也一样。重传由超时和多个ACK触发。

在TCP发送方有3种与发送和重传有关的主要事件:从上层应用程序接收数据,定时器超时和收到确认ACK。

从上层应用程序接收数据。一旦这个事件发生,TCP就从应用程序接收数据,将数据封装在一个报文段中,并将该报文段交给IP。注意到每一个报文段都包含一个序号,这个序号就是该报文段第一个数据字节的字节流编号。如果定时器还没有计时,则当报文段被传给IP时,TCP就启动一个该定时器。

第二个事件是超时。TCP通过重传引起超时的报文段来响应超时事件。然后TCP重启定时器。

第三个事件是一个来自接收方的确认报文段(ACK)。当该事件发生时,TCP将ACK的值y与变量SendBase(发送窗口的基地址)进行比较。TCP状态变量SendBase是最早未被确认的字节的序号。就是指接收方已正确按序接收到数据的最后一个字节的序号。TCP采用累积确认,所以y确认了字节编号在y之前的所有字节都已经收到。如果Y>SendBase,则该ACK是在确认一个或多个先前未被确认的报文段。因此发送方更新其SendBase变量,相当于发送窗口向前移动。

另外,如果当前有未被确认的报文段,TCP还要重新启动定时器。

快速重传

超时触发重传存在的另一个问题是超时周期可能相对较长。当一个报文段丢失时,这种长超时周期迫使发送方等待很长时间才重传丢失的分组,因而增加了端到端时延。所以通常发送方可在超时事件发生之前通过观察冗余ACK来检测丢包情况。

冗余ACK就是接收方再次确认某个报文段的ACK,而发送方先前已经收到对该报文段的确认。

当TCP接收方收到一个序号比所期望的序号大的报文段时,它认为检测到了数据流中的一个间隔,即有报文段丢失。这个间隔可能是由于在网络中报文段丢失或重新排序造成的。因为TCP使用累计确认,所以接收方不向发送方发回否定确认,而是对最后一个正确接收报文段进行重复确认(即产生一个冗余ACK)

如果TCP发送方接收到对相同报文段的3个冗余ACK.它就认为跟在这个已被确认过3次的报文段之后的报文段已经丢失。一旦收到3个冗余ACK,TCP就执行快速重传 ,

即在该报文段的定时器过期之前重传丢失的报文段。

5流量控制

前面讲过,一条TCP连接双方的主机都为该连接设置了接收缓存。当该TCP连接收到正确、按序的字节后,它就将数据放入接收缓存。相关联的应用进程会从该缓存中读取数据,但没必要数据刚一到达就立即读取。事实上,接收方应用也许正忙于其他任务,甚至要过很长时间后才去读取该数据。如果应用程序读取数据时相当缓慢,而发送方发送数据太多、太快,会很容易使这个连接的接收缓存溢出。

TCP为应用程序提供了流量控制服务以消除发送方导致接收方缓存溢出的可能性。因此,可以说 流量控制是一个速度匹配服务,即发送方的发送速率与接收方应用程序的读速率相匹配。

前面提到过,TCP发送方也可能因为IP网络的拥塞而被限制,这种形式的发送方的控制被称为拥塞控制(congestioncontrol)。

TCP通过让接收方维护一个称为接收窗口的变量来提供流量控制。接收窗口用于告诉发送方,该接收方还有多少可用的缓存空间。因为TCP是全双工通信,在连接两端的发送方都各自维护一个接收窗口变量。 主机把当前的空闲接收缓存大小值放入它发给对方主机的报文段接收窗口字段中,通知对方它在该连接的缓存中还有多少可用空间。

6 TCP连接管理

客户机中的TCP会用以下方式与服务器建立一条TCP连接:

第一步: 客户机端首先向服务器发送一个SNY比特被置为1报文段。该报文段中不包含应用层数据,这个特殊报文段被称为SYN报文段。另外,客户机会选择一个起始序号,并将其放置到报文段的序号字段中。为了避免某些安全性攻击,这里一般随机选择序号。

第二步: 一旦包含TCP报文段的用户数据报到达服务器主机,服务器会从该数据报中提取出TCPSYN报文段,为该TCP连接分配TCP缓存和控制变量,并向客户机TCP发送允许连接的报文段。这个允许连接的报文段还是不包含应用层数据。但是,在报文段的首部却包含3个重要的信息。

首先,SYN比特被置为1。其次,该 TCP报文段首部的确认号字段被置为客户端序号+1最后,服务器选择自己的初始序号,并将其放置到TCP报文段首部的序号字段中。 这个允许连接的报文段实际上表明了:“我收到了你要求建立连接的、带有初始序号的分组。我同意建立该连接,我自己的初始序号是XX”。这个同意连接的报文段通常被称为SYN+ACK报文段。

第三步: 在收到SYN+ACK报文段后,客户机也要给该连接分配缓存和控制变量。客户机主机还会向服务器发送另外一个报文段,这个报文段对服务器允许连接的报文段进行了确认。因为连接已经建立了,所以该ACK比特被置为1,称为ACK报文段,可以携带数据。

一旦以上3步完成,客户机和服务器就可以相互发送含有数据的报文段了。

为了建立连接,在两台主机之间发送了3个分组,这种连接建立过程通常被称为 三次握手(SNY、SYN+ACK、ACK,ACK报文段可以携带数据) 。这个过程发生在客户机connect()服务器,服务器accept()客户连接的阶段。

假设客户机应用程序决定要关闭该连接。(注意,服务器也能选择关闭该连接)客户机发送一个FIN比特被置为1的TCP报文段,并进人FINWAIT1状态。

当处在FINWAIT1状态时,客户机TCP等待一个来自服务器的带有ACK确认信息的TCP报文段。当它收到该报文段时,客户机TCP进入FINWAIT2状态。

当处在FINWAIT2状态时,客户机等待来自服务器的FIN比特被置为1的另一个报文段,

收到该报文段后,客户机TCP对服务器的报文段进行ACK确认,并进入TIME_WAIT状态。TIME_WAIT状态使得TCP客户机重传最终确认报文,以防该ACK丢失。在TIME_WAIT状态中所消耗的时间是与具体实现有关的,一般是30秒或更多时间。

经过等待后,连接正式关闭,客户机端所有与连接有关的资源将被释放。 因此TCP连接的关闭需要客户端和服务器端互相交换连接关闭的FIN、ACK置位报文段。

② 计算机网络第三章(数据链路层)

3.1、数据链路层概述

概述

链路 是从一个结点到相邻结点的一段物理线路, 数据链路 则是在链路的基础上增加了一些必要的硬件(如网络适配器)和软件(如协议的实现)

网络中的主机、路由器等都必须实现数据链路层

局域网中的主机、交换机等都必须实现数据链路层

从层次上来看数据的流动

仅从数据链路层观察帧的流动

主机H1 到主机H2 所经过的网络可以是多种不同类型的

注意:不同的链路层可能采用不同的数据链路层协议

数据链路层使用的信道

数据链路层属于计算机网路的低层。 数据链路层使用的信道主要有以下两种类型:

点对点信道

广播信道

局域网属于数据链路层

局域网虽然是个网络。但我们并不把局域网放在网络层中讨论。这是因为在网络层要讨论的是多个网络互连的问题,是讨论分组怎么从一个网络,通过路由器,转发到另一个网络。

而在同一个局域网中,分组怎么从一台主机传送到另一台主机,但并不经过路由器转发。从整个互联网来看, 局域网仍属于数据链路层 的范围

三个重要问题

数据链路层传送的协议数据单元是 帧

封装成帧

封装成帧 (framing) 就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。

首部和尾部的一个重要作用就是进行 帧定界 。

差错控制

在传输过程中可能会产生 比特差错 :1 可能会变成 0, 而 0 也可能变成 1。

可靠传输

接收方主机收到有误码的帧后,是不会接受该帧的,会将它丢弃

如果数据链路层向其上层提供的是不可靠服务,那么丢弃就丢弃了,不会再有更多措施

如果数据链路层向其上层提供的是可靠服务,那就还需要其他措施,来确保接收方主机还可以重新收到被丢弃的这个帧的正确副本

以上三个问题都是使用 点对点信道的数据链路层 来举例的

如果使用广播信道的数据链路层除了包含上面三个问题外,还有一些问题要解决

如图所示,主机A,B,C,D,E通过一根总线进行互连,主机A要给主机C发送数据,代表帧的信号会通过总线传输到总线上的其他各主机,那么主机B,D,E如何知道所收到的帧不是发送给她们的,主机C如何知道发送的帧是发送给自己的

可以用编址(地址)的来解决

将帧的目的地址添加在帧中一起传输

还有数据碰撞问题

随着技术的发展,交换技术的成熟,

在 有线(局域网)领域 使用 点对点链路 和 链路层交换机 的 交换式局域网 取代了 共享式局域网

在无线局域网中仍然使用的是共享信道技术

3.2、封装成帧

介绍

封装成帧是指数据链路层给上层交付的协议数据单元添加帧头和帧尾使之成为帧

帧头和帧尾中包含有重要的控制信息

发送方的数据链路层将上层交付下来的协议数据单元封装成帧后,还要通过物理层,将构成帧的各比特,转换成电信号交给传输媒体,那么接收方的数据链路层如何从物理层交付的比特流中提取出一个个的帧?

答:需要帧头和帧尾来做 帧定界

但比不是每一种数据链路层协议的帧都包含有帧定界标志,例如下面例子

前导码

前同步码:作用是使接收方的时钟同步

帧开始定界符:表明其后面紧跟着的就是MAC帧

另外以太网还规定了帧间间隔为96比特时间,因此,MAC帧不需要帧结束定界符

透明传输

透明

指某一个实际存在的事物看起来却好像不存在一样。

透明传输是指 数据链路层对上层交付的传输数据没有任何限制 ,好像数据链路层不存在一样

帧界定标志也就是个特定数据值,如果在上层交付的协议数据单元中, 恰好也包含这个特定数值,接收方就不能正确接收

所以数据链路层应该对上层交付的数据有限制,其内容不能包含帧定界符的值

解决透明传输问题

解决方法 :面向字节的物理链路使用 字节填充 (byte stuffing) 或 字符填充 (character stuffing),面向比特的物理链路使用比特填充的方法实现透明传输

发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面 插入一个转义字符“ESC” (其十六进制编码是1B)。

接收端的数据链路层在将数据送往网络层之前删除插入的转义字符。

如果转义字符也出现在数据当中,那么应在转义字符前面插入一个转义字符 ESC。当接收端收到连续的两个转义字符时,就删除其中前面的一个。

帧的数据部分长度

总结

3.3、差错检测

介绍

奇偶校验

循环冗余校验CRC(Cyclic Rendancy Check)

例题

总结

循环冗余校验 CRC 是一种检错方法,而帧校验序列 FCS 是添加在数据后面的冗余码

3.4、可靠传输

基本概念

下面是比特差错

其他传输差错

分组丢失

路由器输入队列快满了,主动丢弃收到的分组

分组失序

数据并未按照发送顺序依次到达接收端

分组重复

由于某些原因,有些分组在网络中滞留了,没有及时到达接收端,这可能会造成发送端对该分组的重发,重发的分组到达接收端,但一段时间后,滞留在网络的分组也到达了接收端,这就造成 分组重复 的传输差错

三种可靠协议

停止-等待协议SW

回退N帧协议GBN

选择重传协议SR

这三种可靠传输实现机制的基本原理并不仅限于数据链路层,可以应用到计算机网络体系结构的各层协议中

停止-等待协议

停止-等待协议可能遇到的四个问题

确认与否认

超时重传

确认丢失

既然数据分组需要编号,确认分组是否需要编号?

要。如下图所示

确认迟到

注意,图中最下面那个数据分组与之前序号为0的那个数据分组不是同一个数据分组

注意事项

停止-等待协议的信道利用率

假设收发双方之间是一条直通的信道

TD :是发送方发送数据分组所耗费的发送时延

RTT :是收发双方之间的往返时间

TA :是接收方发送确认分组所耗费的发送时延

TA一般都远小于TD,可以忽略,当RTT远大于TD时,信道利用率会非常低

像停止-等待协议这样通过确认和重传机制实现的可靠传输协议,常称为自动请求重传协议ARQ( A utomatic R epeat re Q uest),意思是重传的请求是自动进行,因为不需要接收方显式地请求,发送方重传某个发送的分组

回退N帧协议GBN

为什么用回退N帧协议

在相同的时间内,使用停止-等待协议的发送方只能发送一个数据分组,而采用流水线传输的发送方,可以发送多个数据分组

回退N帧协议在流水线传输的基础上,利用发送窗口来限制发送方可连续发送数据分组的个数

无差错情况流程

发送方将序号落在发送窗口内的0~4号数据分组,依次连续发送出去

他们经过互联网传输正确到达接收方,就是没有乱序和误码,接收方按序接收它们,每接收一个,接收窗口就向前滑动一个位置,并给发送方发送针对所接收分组的确认分组,在通过互联网的传输正确到达了发送方

发送方每接收一个、发送窗口就向前滑动一个位置,这样就有新的序号落入发送窗口,发送方可以将收到确认的数据分组从缓存中删除了,而接收方可以择机将已接收的数据分组交付上层处理

累计确认

累计确认

优点:

即使确认分组丢失,发送方也可能不必重传

减小接收方的开销

减小对网络资源的占用

缺点:

不能向发送方及时反映出接收方已经正确接收的数据分组信息

有差错情况

例如

在传输数据分组时,5号数据分组出现误码,接收方通过数据分组中的检错码发现了错误

于是丢弃该分组,而后续到达的这剩下四个分组与接收窗口的序号不匹配

接收同样也不能接收它们,讲它们丢弃,并对之前按序接收的最后一个数据分组进行确认,发送ACK4, 每丢弃一个数据分组,就发送一个ACK4

当收到重复的ACK4时,就知道之前所发送的数据分组出现了差错,于是可以不等超时计时器超时就立刻开始重传,具体收到几个重复确认就立刻重传,根据具体实现决定

如果收到这4个重复的确认并不会触发发送立刻重传,一段时间后。超时计时器超时,也会将发送窗口内以发送过的这些数据分组全部重传

若WT超过取值范围,例如WT=8,会出现什么情况?

习题

总结

回退N帧协议在流水线传输的基础上利用发送窗口来限制发送方连续发送数据分组的数量,是一种连续ARQ协议

在协议的工作过程中发送窗口和接收窗口不断向前滑动,因此这类协议又称为滑动窗口协议

由于回退N帧协议的特性,当通信线路质量不好时,其信道利用率并不比停止-等待协议高

选择重传协议SR

具体流程请看视频

习题

总结

3.5、点对点协议PPP

点对点协议PPP(Point-to-Point Protocol)是目前使用最广泛的点对点数据链路层协议

PPP协议是因特网工程任务组IEIF在1992年制定的。经过1993年和1994年的修订,现在的PPP协议已成为因特网的正式标准[RFC1661,RFC1662]

数据链路层使用的一种协议,它的特点是:简单;只检测差错,而不是纠正差错;不使用序号,也不进行流量控制;可同时支持多种网络层协议

PPPoE 是为宽带上网的主机使用的链路层协议

帧格式

必须规定特殊的字符作为帧定界符

透明传输

必须保证数据传输的透明性

实现透明传输的方法

面向字节的异步链路:字节填充法(插入“转义字符”)

面向比特的同步链路:比特填充法(插入“比特0”)

差错检测

能够对接收端收到的帧进行检测,并立即丢弃有差错的帧。

工作状态

当用户拨号接入 ISP 时,路由器的调制解调器对拨号做出确认,并建立一条物理连接。

PC 机向路由器发送一系列的 LCP 分组(封装成多个 PPP 帧)。

这些分组及其响应选择一些 PPP 参数,并进行网络层配置,NCP 给新接入的 PC 机

分配一个临时的 IP 地址,使 PC 机成为因特网上的一个主机。

通信完毕时,NCP 释放网络层连接,收回原来分配出去的 IP 地址。接着,LCP 释放数据链路层连接。最后释放的是物理层的连接。

可见,PPP 协议已不是纯粹的数据链路层的协议,它还包含了物理层和网络层的内容。

3.6、媒体接入控制(介质访问控制)——广播信道

媒体接入控制(介质访问控制)使用一对多的广播通信方式

Medium Access Control 翻译成媒体接入控制,有些翻译成介质访问控制

局域网的数据链路层

局域网最主要的 特点 是:

网络为一个单位所拥有;

地理范围和站点数目均有限。

局域网具有如下 主要优点 :

具有广播功能,从一个站点可很方便地访问全网。局域网上的主机可共享连接在局域网上的各种硬件和软件资源。

便于系统的扩展和逐渐地演变,各设备的位置可灵活调整和改变。

提高了系统的可靠性、可用性和残存性。

数据链路层的两个子层

为了使数据链路层能更好地适应多种局域网标准,IEEE 802 委员会就将局域网的数据链路层拆成 两个子层 :

逻辑链路控制 LLC (Logical Link Control)子层;

媒体接入控制 MAC (Medium Access Control)子层。

与接入到传输媒体有关的内容都放在 MAC子层,而 LLC 子层则与传输媒体无关。 不管采用何种协议的局域网,对 LLC 子层来说都是透明的。

基本概念

为什么要媒体接入控制(介质访问控制)?

共享信道带来的问题

若多个设备在共享信道上同时发送数据,则会造成彼此干扰,导致发送失败。

随着技术的发展,交换技术的成熟和成本的降低,具有更高性能的使用点对点链路和链路层交换机的交换式局域网在有线领域已完全取代了共享式局域网,但由于无线信道的广播天性,无线局域网仍然使用的是共享媒体技术

静态划分信道

信道复用

频分复用FDM (Frequency Division Multiplexing)

将整个带宽分为多份,用户在分配到一定的频带后,在通信过程中自始至终都占用这个频带。

频分复用 的所有用户在同样的时间 占用不同的带宽资源 (请注意,这里的“带宽”是频率带宽而不是数据的发送速率)。

③ 计算机网络之RDMA技术(三)服务类型

姓名:周肇星;学号:22011110028;学院:通信工程学院

补充改编自 https://zhuanlan.hu.com/p/144099636

【嵌牛导读】RDMA技术全称远程直接数据存取,就是为了解决网络传输中服务器端数据处理的延迟而产生的。RDMA通过网络把资料直接传入计算机的存储区,将数据从一个系统快速移动到远程系统存储器中,而不对操作系统造成任何影响,这样就不需要用到多少计算机的处理功能。它消除了外部存储器复制和上下文切换的开销,因而能解放内存带宽和CPU周期用于改进应用系统性能。本专题将针对RDMA技术进行介绍!

【嵌牛鼻子】计算机网络,高性能网络,RDMA

【嵌牛提问】读完本文,对RDMA技术的服务类型有所认识了吗?

【嵌牛正文】

InfiniBand specification R1.3, Chapter3, 3.2.2, Page 101【连接类型的概述】
InfiniBand specification R1.3, Chapter3, 3.5.2, Page 109【服务类型的概述】
InfiniBand specification R1.3, Chapter3, 3.6.2, Page 127【服务类型具体介绍】
InfiniBand specification R1.3, Chapter3, 3.7.4, Page 135【数据包序号PSN】
InfiniBand specification R1.3, Chapter9, 9.1, Page 242【服务类型与丢包的处理】
InfiniBand specification R1.3, Chapter9, 9.4.5.3, Page 276【Connection Conext与EE Context】
InfiniBand specification R1.3, Chapter9, 9.7, Page 293【可靠性】

RDMA的基本通信单元是QP,而基于QP的通信模型有很多种,我们在RDMA领域称其为“服务类型”。IB协议中通过“可靠”和“连接”两个维度来描述一种服务类型

The five IBA transport service types are:

The non-IBA protocol encapsulation services are:

通信中的可靠性指的是通过一些机制保证发出去的数据包都能够被正常接收,可靠连接中的通道适配器可以维护序列号并确认所有消息

其特征是:在没有不可恢复错误出现的情况下,数据只被发送一次;并且每个数据都被隐式或显式确认。

不可靠服务主要是没有应答机制,注意不可靠服务仍会使用PSN序号与CRC校验和,使得接收端对错包、丢包进行检测

响应者认为操作已经完成的条件:

接收者认为操作已经完成的条件:

发端会对Header和Payload(有效载荷,也就是真正要收发的数据)通过一定的算法(IB协议使用的CRC校验)得到一个校验值放到数据包的末尾。对端收到数据包后,也会用相同的算法计算出校验值,然后与数据包中的校验值比对,如果不一致,说明数据中包含错误,那么接收端就会丢弃这个包,并回复否定确认NAK(Not Acknowledge)告知发送端重发

无论可靠还是不可靠均有该机制,不可靠类型的服务在校验错误后将进行丢包

保证先被发送到物理链路上的数据包一定要先于后发送的数据包被接收方收到

IB协议中有PSN(Packet Sequence Number,数据包序号)的概念,即每个数据包的基本传输头BTH中都有一个递增的24位编号,可用于监测缺失或无序的包:

在连接建立的过程中,发送者的传输层协议将在合法PSN中(0~16777215)计算出一个初始PSN,而接收端的初始PSN为第一个数据包中的PSN。请求者应为其生成的每个请求包为当前PSN值增加1。唯一的例外是在RDMA READ请求消息之后的任何请求包,紧随RDMA READ请求消息之后的请求包应具有比最后一个预期的RDMA READ响应包的PSN大一个的PSN,即请求者就会在请求包的PSN序列后预留空间(由于请求者知道请求的RDMA READ数据总长度以及PMTU,因此请求者可以计算预期响应包的总数,从而能够计算出在RDMA READ之后请求的PSN),以使得所有的响应包都将具有单调递增的PSN

在逻辑上,一个接收队列或EE Context维护一个预期PSN(ePSN)。这是响应者希望在它接收到的下一个新请求包的BTH中找到的PSN

在数据包入站时,响应者(的接收队列)将数据包中的PSN与自己维护存储的ePSN进行比较来检查PSN;对于可靠的数据报服务,PSN由响应者的EE Context进行检查

特别注意,IBA不支持选择性的分组重传与分组的无序接收,例如发送的PSN依次为1、2、3、4、5、6,若接收端判定PSN=3发生了丢包,此时收端会丢弃随后所有的数据包(PSN=4、5、6),并发送NAK要求发送者重新传输PSN=3、4、5、6【响应者将继续等待一个有效的入站请求数据包,即:其PSN等于其预期的PSN或在其有效区域内。在该过程中,响应者接收到的任何无效的请求数据包将被丢弃、且不返回NAK】

但Mellanox CX-6系列网卡已经支持选择性重传,但存在一些限制

需要注意的是对于无确认机制的服务,PSN同样启用,可以帮助接收端尽可能的监测到是否发生了丢包

此PSN保序外,接收端将通过校验OpCode以确保顺序正确,即“First”、“Middle”、“Last”、“Only”

在IB协议的可靠服务类型中,使用了应答机制来保证数据包被对方收到。IB的可靠服务类型中,接收方不是每一个包都必须回复,也可以一次回复多个包的确认ACK(Acknowledge)【隐式确认Fig91】

注意应答机制并不是用户级别的确认,确认ACK仅表示数据已经到达目的地

对于接收重复入站的SEND或RDMA Write请求的HCA,响应者不得重新执行该请求,而只为重复包生成一个响应包,同时支持ACK确认合并,即回复最近接收到的PSN

对于RDMA Read的响应,在图中:

响应数据包必须重新生成,且需要显式回复,不能使用确认合并进行隐式回复

IBA支持面向连接和数据报的服务。对于面向连接的服务来说,每个QP都和另一个(且仅有一个)远端节点的QP相关联。在这种情况下,QP Context中包含有远端节点的QP信息。面向连接的服务需要通信连接建立的过程,以关联QP,在建立通信的过程中,两个节点会交换包括稍后用于通信的QP在内的对端信息

QP Context(简称QPC)可以简单理解为是记录一个QP相关信息的表格,关于QP的信息需要记录到一张表里面,这些信息可能包括队列的深度,队列的编号等等

在连接服务类型中的每个QP,都和唯一的另一个QP建立了连接,也就是说QP下发的每个WQE的目的地都是唯一的

两个节点在建立连接的过程中,会交换稍后用于数据交互的QP Number,然后分别记录在QPC中

对于数据报服务来说,QP不会跟一个唯一的远端节点绑定,而是通过WQE来指定目的节点。和连接类型的服务一样,建立通信的过程也需要两端交换对端信息,但是数据报服务对于每个目的节点都需要执行一次这个交换过程

对于可靠的传输方式,QP将包括PSN、响应回复报文等信息存储在Connetion Context中

对于可靠的面向连接服务,Connnection Context实际上就是QP Context

QPC中包含有远端的QP信息,两个节点在建立连接时会交换用于数据交互的QPN,并记录在QPC中

对于可靠的数据报服务中,Connection Context实际上就是End-to-End Context

在数据报类型的QP的Context中,不包含对端信息,即每个QP不跟另一个QP绑定。QP下发给硬件的每个WQE都可能指向不同的目的地。比如节点A的QP2下发的第一个WQE,指示给节点C的QP3发数据;而下一个WQE,可以指示硬件发给节点B的QP7。

每个发送队列与EEC相关联,多个RD类型的QP可以使用相同的EE Context,一个RD类型的QP可以使用多个EEC(本端某RD类型QP可针对某远端节点的多个RD类型QP各使用一个EEC)

每个用户只需要创建一个QP,节点可以为与其通信的每个节点创建一个EEC。因此如果N个节点上都有M个用户,都希望通过IBA可靠的数据报服务进行通信,那么每个节点都需要M个QP和N个EEC

EEC通过数据报的序列号和ACK确认,以确保可靠性

与连接服务类型一样,本端QP可以和哪个对端QP发送数据,是在准备阶段提前通过某些方式相互告知的。这也是定义中“数据报服务对于每个目的节点都需要执行一次这个交换过程”的含义。

InfiniBand支持IBA传输服务及原始数据包传输模式

当InfiniBand作为原始数据包传输模式时,IBA将使用通道适配器作为数据链路的引擎,在节点之间传送原始数据包

上面介绍的两个维度两两组合就形成了IB的四种基本服务类型,RC和UD是应用最多也是最基础的两种服务类型,我们可以将他们分别类比成TCP/IP协议栈传输层的TCP和UDP

RC用于对数据完整性和可靠性要求较高的场景,跟TCP一样,需要各种机制来保证可靠,所以开销自然会大一些。另外由于RC服务类型和每个节点间需要各自维护一个QP,而QP和QPC本身是需要占用网卡资源或者内存的,当节点数很多时,存储资源消耗将会非常大,例如N个节点需要相互通信,每个节点上有M个用户,那么需要M (N M)个QP

UD硬件开销小并且节省存储资源,比如N个节点需要相互通信,每个节点上有M个用户,各节点上只需要创建M个QP就可以了,但是可靠性跟UDP一样没法保证。常用于管理器发现、配置新接入的IBA交换机或端节点设备,但UD不支持RDMA和ATOMIC操作

④ 何谓计算机网络的体系结构与网络协议

计算机协议及体系结构网络协议与层次结构

1.2.1网络体系结构

1.网络协议

通过通信信道和网络设备互联起来的不同地理位置的多个计算机系统,要使其能协同工作实现信息交换和资源共享,它们之间必须具有共同的语言。交流什么、怎样交流及何时交流,都必须遵循某种互相都能接受的规则。

网络协议(Protocol)是为进行计算机网络中的数据交换而建立的规则、标准或约定的集

合。准确地说,它是对同等实体之间通信而制定的有关规则和约定的集合;

网络协议的三个要素: 、

l)语义(Semarlties)涉及用于协调与差错处理的控制信息。

2)语法(Syntax)涉及数据及控制信息的格式、编码及信号电平等。

3)定时(Timing)涉及速度匹配和定序等。

2.网络的体系结构及其划分所遵循的原则计算机网络系统是一个十分复杂的系统。将一个复杂系统分解为若干个容

易处理的子系统。分层就是系统分解的最好方法之一。

在图1-4所示的一般分层结构中,n层是n-l层的用户,又是n+l层的服务提供者。n+1层虽然只直接使用了n层提供的服务,实际上它通过n层还间接地使用了n-1层以及以下所有各层的服务。、

层次结构的好处在于使每一层实现一种相对独立的功能。分层结构还有利于交流、理解和标准化。

所谓网络的层次模型就是计算机网络各层次及其协议的 集合。层次结构一般以垂直分层模型来表示, 层次结构的要点:

1)除了在物理媒体上进行的是实通信之外,其余各 对等实体间进行的都是虚通信。

2)对等层的虚通信必须遵循该层的协议。

3)n层的虚通信是通过n/n-l层间接口处n-l层提供的服务以及n-1层的通信(通常也

是虚通信)来实现的。

1.2.2网络体系结构

网络体系结构最常用的分为两种:

OSI七层结构和TCP/IP(TramferControlProtocol/InternetProtocol,传输控制协议/网际协议)四层结构。TCP/IP协议是Internet的核心协议。

1.OSI/RM基本参考模型

开放系统互联(OpenSystemIntercomectim)基本参考模型是由国际标准化组织(ISO)

制定的标准化开放式计算机网络层次结构模型,又称ISO/OSI参考模型。"开放"这个词表示能使任何两个遵守参考模型和有关标准的系统可以进行互联。

OSI/RM包括了体系结构、服务定义和协议规范三级抽象。OSI的体系结构定义了一个七层模型,用以进行进程间的通信,并作为一个框架来协调各层标准的制定gOSI的服务定义描述了各层所提供的服务,以及层与层之间的抽象接口和交互用的服务原语:OSI各层的协议规范,精确地定义了应当发送何种控制信息及何种过程来解释该控制信息。

OSI/RM的七层参考模型结构包括:从下至上分别为物理层、数据链路层、网络层、传输层,

会话层、表示层和应用层。

2.Internet层次模型

Internet网络结构以TCP/IP协议层次模型为核心,

共分四层结构:应用层、传输层、网际层和网络接口层。TCP/IP的体系结构与ISO的OSI七层参考模型的对应关系如图1-6所示。TCP/IP是Internet的核心,利用TCP/IP协议可以方便地实现各种网络的平滑、无缝连接。在TCP/IP四层模型中,作为最高层的应用层相当于OSI的5~7层,该层中包括了所有的高层协议,如常见的文件传输协议FTP(文件传输协议)、电子邮件SMTP,(简单邮件传送协议)、域名系统DNS(域名服务)、网络管理协议SNMP、访问WWW的超文本传输协议HTTP、远程终端访问协议TELNET等。

TCP/IP的次高层为传输层,相当于OSI的传输层,该层负责在源主机和目的主机之间提供端到端的数据传输服务。这一层上主要定义了两个协议:面向连接的传输控制协议TCP和无连接的用户数据报协议UDP(UserDatagramProtocol)。

TCP/IP的第二层相当于OSI的网络层,该层负责将报文(数据包)独立地从信源传送到信宿,主要解决路由选择、阻塞控制级网际互联问题。这一层上定义了网际协议(InternetProtocol,IP协议)、地址转换协议ARP(AddressResolutionProtocol)、反向地址转换协议RARP(ReverseARP)和网际控制报文协议ICMP()等协议。

TCP/IP的最低层为网络接口层,该层负责将IP分组封装成适合在物理网络上传输的帧格式并发送出去,或将从物理网络接收到的帧卸装并递交给高层。这一层与物理网络的具体实现有关,自身并无专用的协议。事实上,任何能传输IP报文的协议都可以运行。虽然该层一般不需要专门的TCP/IP协议,各物理网络可使用自己的数据链路层协议和物理层协议。

3.Internet主要协议

TCP/IP协议集的各层协议的总和亦称作协议枝。给出了TCP/IP协议集与OSI参

考模型的对应关系。其中每一层都有着多种协议。一般来说,TCP提供传输层服务,而IP提供网络层服务。

(l)TCP/IP的数据链路层

数据链路层不是TCP/IP协议的一部分,但它是TCP/IP与各种通信网之间的接口。这些通信网包括多种广域网和各种局域网。

一般情况下,各物理网络可以使用自己的数据链路层协议和物理层协议,不需要在数据链路层上设置专门的TCP/IP协议。但是,当使用串行线路连接主机与网络,或连接网络与网络时,例如用户使用电话线接入网络肘,则需要在数据链路层运行专门的SLIP(SerialLineIP)协议的PPP(PointtoPointProtocol)协议。

(2)TCP/IP网络层

网络层最重要的协议是IP,它将多个网络联成一个互联网,可以把高层的数据以多个数据报的形式通过互联网分发出去。

网络层的功能主要由IP来提供。除了提供端到端的报文分发功能外,IP还提供了很多扩充功能。例如:为了克服数据链路层对帧大小的限制,网络层提供了数据分块和重组功能,这使得很大的IP数据报能以较小的报文在网上传输。

网络层的另一个重要服务是在互相独立的局域网上建立互联网络,即网际网。网间的报文来往根据它的目的IP地址通过路由器传到另一网络。

IP的基本任务是通过互联网传送数据报,各个IP数据报之间是相互独立的。主机上的IP层向传输层提供服务。IP从源传输实体取得数据,通过它的数据链路层服务传给目的主机的IP层。IP不保证服务的可靠性,在主机资源不足的情况下,它可能丢弃某些数据报,同时IP也不检查被数据链路层丢弃的报文。

在传送时,高层协议将数据传给IP层,IP层再将数据封装为互联网数据报,并交给数据链路层协议通过局域网传送。若目的主机直接连在本局域网中,IP可直接通过网络将数据报传给

目的主机;若目的主机在其他网络中,则IP路由器传送数据报,而路由器则依次通过下一网络将数据报传送到目的主机或再下一个路由器。即IP数据报是通过互联网络逐步传递,直到终点 为止。

(3)TCP/IP传输层

TCP/IP在这一层提供了两个主要的协议:传输控制协议(TCP)和用户数据协议(UDP)。TCP提供的是一种可靠的数据流服务。当传送有差错数据,或网络故障,或网络负荷太

重不能正常工作时,就需要通过其他协议来保证通信的可靠。TCP就是这样的协议,它对应于OSI模型的传输层,它在IP协议的基础上,提供端到端的面向连接的可靠传输。

TCP采用"带重传的肯定确认"技术来实现传输的可靠性。简单的"带重传的肯定确认"是指与发送方通信的接收者,每接收一次数据,就送回一个确认报文J发送者对每个发出去的

报文都留一份记录,等到收到确认之后再发出下一报文。发送者发出报文时,启动计时器,若计时器计数完毕,确认还未到达,则发送者重新发送该报文。

TCP通信建立在面向连接的基础上,实现了一种"虚电路"的概念。双方通信之前,先建立一条连接,然后双方就可以在其上发送数据流。这种数据交换方式能提高效率,但事先建立连接和事后拆除连接需要开销。

4.TCP/IP协议族中的其他协议

TCP/IP是网络中使用的基本的通信协议,是一系列协议和服务的总集。虽然从名字上看

τCP/IP包括两个协议一一…传输控制协议(TCP)和网际协议(IP),但TCP/IP实际上是一组协议,包括了上百个各种功能的协议,如:远程登录、文件传输和电子邮件(PPP,ICMP,ARP/

RARP,UDP,FTP,HTTP,SMTP,SNMP,RIP,OSPF)等协议,而TCP协议和IP协议是保证数据完整传输的两个最基本的重要协议。通常说TCP/IP是指TCP/IP协议族,而不单单是TCP和IP。TCP/IP依靠TCP和IP这两个主要协议提供的服务,加上高层应用层的服务,共同实现了TCP/IP协议族的功能。

TCP/IP的最高层与OSI参考模型的上三层有较大区别,也没有非常明确的层次划分。其中FTP,TELNET,SMTP,DNS是几种广泛应用的协议,TCP/IP中还定义了许多别的高层协议。

(l)文件传输协议FTP

FTP(FileTransferProtocol):文件传输协议,允许用户将远程主机上的文件拷贝到自

己的计算机上。

文件传输协议是用于访问远程机器的专门协议,它使用户可以在本地机与远程机之间进行有关文件的操作。FTP工作时建立两条TCP连接,条用于传送文件,另一条用于传送控制。

FTP采用客户/服务器模式,它包含FTP客户端和FTP服务器。客户启动传送过程,而服 务器对其做出应答。客户FTP大多有交互式界面,使客户可以方便地上传或下载文件。

(2)远程终端访问TELNET

Telnet(RemoteLogin):提供远程登录功能,用户可以登录到远程的另一台计算机土,如同在远程主机上直接操作一样。

设备或终端进程交互的方讼,支持终端到终端的连接及进程到进程分布式计算的通信。

(3)域名服务DNS

DNS是一个域名服务的协议,提供域名到IP地址的转换,允许对域名资源进行分散管理。(4)简单邮件传送协议SMTP

SMTP(SimpleMailTransferProtocol,简单邮件传输协议),用于传输电子邮件。

互联网标准中的电子邮件是基于文件的协议,用于可靠、有效的数据传输。SMTP作为应用层的服务,并不关心它下面采用的是何种传输服务,它可通过网络在TCP连接上传送邮件, 或者简单地在同一机器的进程之间通过进程通信的通道来传送邮件。

邮件发送之前必须协商好发送者、接收者。SMTP服务进程同意为接收方发送邮件时,它将邮件直接交给接收方用户或将邮件经过若干段网络传输,直到邮件交给接收方用户。在邮件传输过程中,所经过的路由被记录下来。这样,当邮件不能正常传输时可按原路由找到发送者。

13网络互联基础

1.3.1IP地址

IP地址和域名是Internet使用的、符合TCP/IP协议规定的地址方案。这种地址方案与日常生活中涉及的电话号码和通信地址相似,涉及到Internet服务的每一环节。IP协议要求所有Internet的网络节点要有统一规定格式的地址,简称IP地址。IP地址是运行TCP/IP协议的唯一标识符。TCP/IP协议是上层协议,无论下层是何种拓扑结构的网络,均应统一在上层IP地址上。任何网络接入Internet,均应使用IP地址。

IP地址是唯一的、全球识别的InterIEt网络地址,采用32位二进制(即4字节)的格式。

在Internet上,每台计算机或网络设备都被分配一个IP地址,这个IP地址在整个InterIIet网络中是唯一的,保证了Internet成为全球开放互联的网络系统。

1.3.2IP地址的格式和分类

IP地址可表达为二进制格式和十进制格式。二进制的IP地址为32位,分为4个8位二进制数。为书写方便起见,常将每个字节作为一段并以十进制数来表示,每段间用"."分隔,每段取值为0~255,。例如:135.111.5.27(二进制格式:10000111.01101111.00000101.00011011)就是合怯的IP地址。

IP地址由网络标识和主机标识两部分组成。常用的IP地址有ATB,C三类,每类均规定

了网络标识和主机标识在32位中所占的位数。这三类IP地址的格式表示范围分别为:

A类地址:0.0.0.O~127.255.255.255

B类地址:128.0.0.O~191.255.255.255

C类地址:192.0.0.O~233.255.255.255

A类IP地址一般用于主机数多达160余万台的大型网络,前8位代表网络号,后3个8

位代表主机号。32位的最高位为Og十进制的第一组数值范围为000~127。IP地址范围为:001.x.y.z~126.x.y.z。

B类IP地址一般用于中等规模的各地区网管中心,前两个8位二进制代表网络号,后两个8位代表主机号。32位的最高两位为10;十进制的第一组数值范围为128~191。IP地址范围为:128.x.y.Z~191.x.y.z。

C类地址一般用于规模较小的本地网络,如校园网、企业网、政府机构网等。前三个8位代表网络号,最后8位代表主机号。32位的最高3位为110,十进制第一组数值范围为192~223。IP地址范围为:192.x.y.z~223.x.y.z。一个C类地址可连接256个主机。

A类地址一般分配给具有大量主机的网络使用,B类地址通常分配给规模中等的网络使用,C类地址通常分配给小型局域网使用。为了确保唯→性,IP地址由世界各大地区的权威机构InterNIC()管理和分配。

1.3.3子网的划分与掩码

在Internet中,如果每个物理网络就要占用一个网络号,是不够用的。另外,如果每个单位增添新的物理网络(例如新建楼房或新部门中新建的网络)就要向Internet的NIC申请新网络号,也太麻烦,并且不便于IP地址的分配管理。

,
在IP地址的某个网络标识中,可以包含大量的主机(如A类地址的主机标识域为24位,B类地址的主机标识域为16位),而在实际应用中不可能将这么多的主机连接到单一的网络中, 这将给网络寻址和管理带来不便。为解决这个问题,可以在网络中引入"子网"的概念。

注意:这里的子网与前面所说的通信子网是两个完全不同的概念。将主机标识域进一步划分为子网标识和子网主机标识,通过灵活定义子网标识域的位数,可以控制每个子网的规模。将一个大型网络划分为若干个既相对独立又相互联系的子网后,网络内部各子网便可独立寻址和管理,各子网间通过跨子网的路由器连接,这样也提高了网络的安全性。

利用子网掩码可以判断两台主机是否在同一子网中。子网掩码与IP地址一样也是32位二进制数,不同的是它的子网主机标识部分为全"。"。若两台主机的IP地址分别与它们的子网掩码相"与"后的结果相同,则说明这两台主机在同一网中。

1.子网划分

为使多个物理网络共用一个IP地址,可以采取把IP地址中主机号部分进一步划分为子网号和主机号两部分。例如:一个B类IP地址,可以把第三个字节作为子网号,第四个字节作为子网(物理网络)上主机号。

2.子网掩码

IP路由选择算法是根据IP数据报报头中目的地址的网络号,查找它的路由表,找到一个表项的目的网络号能与它匹配,然后用匹配上表项的中继IP地址作为发送该数据报到达目的主机的下一个路由器地址。IP数据报报头中目的地址的网络号是根据该地址最高位值来决定它是哪一类IP地址,网络号应占用多少位。

划分了子网后,就不能从地址的最高位值来判断网络号占用的位数了,用户可以自行决定子网号占用的位数。为了解决这个问题,必须使用子网掩码(mask)子网掩码是一个32位的数,其中取值为1的位,对应网络号或子&网号:取值为0的位,对应主机号。

⑤ [计算机网络]Ch.3 数据链路层

数据链路层使用物理层提供的服务在通信信道上发送和接收比特。
(1) 向网络层提供一个定义良好的接口
(2) 处理传输错误
(3) 调节数据流,确保慢速的接收方不会被快速的发送方淹没
提供的服务
(1) 无确认的无连接服务 (局域网)
(2) 有确认的无连接服务 (无线通信)
(3) 有确认的有连接服务 (电话)
无线通信,信道使用率很低但数据传输的误码率相对较高,确认是必要的

成帧:将原始的位流分散到离散的帧中。
成帧的方法有:
(1)字符计数法
(2)带字节/字符填充的标志字节法
(3)比特填充的比特标志法
(4)物理层编码违例法

字节计数法:利用帧头部的一个字段来标识该帧中的字符数
缺点:简单,无法恢复,已经很少使用

该方法考虑了错误之后重新开始同步的问题,用一些特殊字节(FLAG)作为帧开始和结束标志,用转义字符(ESC)来区分二进制数据中存在的特殊字节。

采用冗余编码技术,如曼切斯特编码,即两个脉冲宽来表示一个二进制位
数据0:低-高电平对
数据1:高-低电平对
高-高电平对和低-低电平对没有使用,可用作帧边界

差错的种类:

差错的处理:

计算机网络中主要采用:

海明距离的意义 :如果海明距离为d,则一个码字需要发生d个1位错误才能变成另外一个码字
海明距离与检错和纠错的关系:

纠正单比特错的冗余位下界, m为数据位数 r为校验位数

将某一位数据位的编号展开成2的乘幂的和,那末每一项所对应的位即为该数据位的校验位(收方使用)。
如: 11 = 1 + 2 + 8
29 = 1 + 4 + 8 + 16
校验位1的检验集合为所有奇数位。
校验位2的检验集合:2、3、6、7、10、11、…
校验位4的检验集合:4、5、6、7、……
校验位8的检验集合:8、9、10、11、……

海明码纠错过程(只纠错1位)
首先将差错计数器置“0”。
当海明码数据到达接收端后,接收端逐个检查各个校验位的奇偶性。
如发现某一校验位和它所检测的集合的奇偶性不正确,就将该检验位的编号加到差错计数器中。
待所有校验位核对完毕:
若差错计数器仍为“0”值,则说明该码字接收无误。
非“0”值,差错计数器的值为出错位的编号,将该位求反就可得到正确结果。

例子:

经计算需要的检验字个数的最小值 r应满足 ( 所以r最小值为4,再根据校验位的对应规则可得下表:

Data: 1011010
Even: 1011010 0 (偶校验)
Odd: 1011010 1 (奇校验)

使用CRC编码时发送方和接收方必须预先商定一个生成多项式G(x),假设有一个m为的帧M(x),使用G(x)生成的帧的步骤如下:
假设G(x)的阶为r, 那么M(x)在末尾添加r个0,得到 m+r位的位模式 。
利用模2出发,用G(x)去除 ,得到对应的余数(总是小于等于r位)。
利用 减去(模2减法)第2步中得到的余数,得到的位模式就是即将被传输的带校验和的帧
Sender
在数据帧的低端加上r个零,对应多项式为XrM(x)
采用模2除法,用G(x)去除XrM(x),得余数
采用模2减法,用XrM(x)减去余数,得到带CRC校验和的帧
Receiver
用收到的帧去除以G(x)
为零:无错误产生。非零:发生了错误,重传

在一定条件下运作:

缺点

缺点

对协议2的改进:

确认帧
只在接收无差错时才发确认帧,出错时不发确认帧。
重发
网络中采用检错码,无法纠正错误,由重发原来帧的方式来恢复正确的帧。
计时器
控制何时重发,防止无限期等待(死锁)。
帧序号
防止重发时接收端收到重复的帧,序号还用于接收时排序。
保证送给网络层的都是按序无重复的分组

帧格式:

****

与前三个协议不同,这是一个双向传递的协议。 之后的三个协议都属于滑动窗口协议。

滑动窗口协议
如果发送端可以连续发送一批数据帧,必须考虑接收端是否来得及接纳与处理这么多的帧,这里就提出了网络流量控制问题

N回退协议 选择重传协议:
由于传输过程中存在延迟,即数据在传播过程中需要时间,那么如果使用上面所提及的协议,传输过程中有大量的时间存在阻塞状态,所以为了充分利用带宽,我们让发送方一次发送w个帧。所以就存在如何处理在传输过程中出现的帧错误的问题

协议四的基本工作原理:
窗口设置

窗口滑动机制

特点

出错情况
连续发送W个数据帧,其中有一帧出错,但其后续帧被成功发送

接收方的接收策略: 丢弃错帧,其后续帧因不是期望接收帧也被丢弃(接收窗口为1)。
发送方的重传策略: 缓存在发送窗口中的出错帧以及其后续帧全部重发

W<=2BD+1(个帧)
BD:带宽-延迟乘积,bit乘积出来之后换算成帧的个数

该图的发送方和接收方的窗口大小都是7,那么也就是说发送方一次最多只能发送7个帧,刚开始发送方只能发送序号为0~6的数据帧,图中发送方收到序列号为第0和第1号帧的确认帧,那么整个窗口向前滑动,发送方可以发送序列号为7和8 的数据帧,但是不幸的是2号数据帧并没有收到确认帧,所以整个窗口并不会向前滑动,此时只能等待2号数据帧的计时器超时,那么超时后发送方将会从2号数据帧开始发送,重复这个过程。
实现

出错情况

原因:如果错误很少发生,那么协议5可以很好的工作。一旦线路质量很差,那么重传帧需要浪费大量带宽。而选择重传节约了带宽,允许接收方缓存丢失帧之后的所有帧

接收方的接收策略: 丢弃错帧,缓存后续正确接收帧
发送方的重传策略: 只重发出错帧。

基本概念:

选择重传策略:
接收方丢掉坏帧,但接受并缓存坏帧后面的所有好帧。

否定重传策略
当接收方收到错误,他就发送一个否定确认(NAK)信息,而不需要等到相应的计数器超时,提高协议性能。

滑动窗口长度w的选择
协议5(回退n帧) W = MAX_SEQ
协议6(选择重传) W= (MAX_SEQ + 1) / 2

发送方和接收方的窗口大小 W=((MAX_SEQ+1))/2,原因是 防止窗口重叠,在确认帧丢失的情况下而导致的数据错误

接收方在某个帧出错后继续接受和缓存后续发送的数据包,直到整个窗口的填满后,把帧进行排序后才传递给网络层。

面向字符的数据链路协议
PPP 是一种在链路上传输分组的常用方法

3个主要特性:

PPP两种认证协议: PAP and CHAP

PPP的帧格式

PPP成帧是面向字节填充的:
具体细节可以参考上面的字节填充法, 因为PPP重用了HDLC的技术,所以PPP使用标志字(0x7E 01111110)来标记帧的起始,使用0x7D来作为转义字符, 具体操作如下:

接收方接收到帧后进行下面处理:
在帧中遇到0x7D 就把0x7D删除,在把紧跟在0x7D 后的字节和0x20进行异或运算,就得到对应的数据

LCP ( Link Control Protocol)提供了建立、配置、维护和终止点对点链接的方法

PPP的工作过程

⑥ 计算机网络的基础是什么

TCP/IP协议(又名:网络通讯协议)即传输控制协议/互联网协议,是一个网络通信模型,以及一整个网络传输协议家族。这一模型是Internet最基本的协议,也是Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。 其定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。TCP负责发现传输的问题,而IP是给因特网的每一台联网设备规定一个地址。
为了减少网络设计的复杂性,大多数网络都采用分层结构。对于不同的网络,层的数量、名字、内容和功能都不尽相同。在相同的网络中,一台机器上的第N层与另一台机器上的第N层可利用第N层协议进行通信,协议基本上是双方关于如何进行通信所达成的一致。

不同机器中包含的对应层的实体叫做对等进程。在对等进程利用协议进行通信时,实际上并不是直接将数据从一台机器的第N层传送到另一台机器的第N层,而是每一层都把数据连同该层的控制信息打包交给它的下一层,它的下一层把这些内容看做数据,再加上它这一层的控制信息一起交给更下一层,依此类推,直到最下层。最下层是物理介质,它进行实际的通信。相邻层之间有接口,接口定义下层向上层提供的原语操作和服务。相邻层之间要交换信息,对等接口必须有一致同意的规则。层和协议的集合被称为网络体系结构。

每一层中的活动元素通常称为实体,实体既可以是软件实体,也可以是硬件实体。第N层实体实现的服务被第N+1层所使用。在这种情况下,第N层称为服务提供者,第N+1层称为服务用户。

服务是在服务接入点提供给上层使用的。服务可分为面向连接的服务和面向无连接的服务,它在形式上是由一组原语来描述的。这些原语可供访问该服务的用户及其他实体使用。
TCP是面向连接的通信协议,通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的所以只能用于端到端的通讯。

TCP提供的是一种可靠的数据流服务,采用“带重传的肯定确认”技术来实现传输的可靠性。TCP还采用一种称为“滑动窗口”的方式进行流量控制,所谓窗口实际表示接收能力,用以限制发送方的发送速度。

如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向‘上’传送到TCP层。TCP将包排序并进行错误检查,同时实现虚电路间的连接。TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。

TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序。应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物理介质,最后到接收方。

面向连接的服务(例如 Telnet、 FTP、 rlogin、 X Windows和 SMTP)需要高度的可靠性,所以它们使用了TCP。DNS在某些情况下使用TCP(发送和接收 域名数据库),但使用UDP传送有关单个主机的信息。

⑦ 计算机网络知识点

一、计算机网络概述

1.1 计算机网络的分类

按照网络的作用范围:广域网(WAN)、城域网(MAN)、局域网(LAN);

按照网络使用者:公用网络、专用网络。

1.2 计算机网络的层次结构

TCP/IP四层模型与OSI体系结构对比:

1.3 层次结构设计的基本原则

各层之间是相互独立的;

每一层需要有足够的灵活性;

各层之间完全解耦。

1.4 计算机网络的性能指标

速率:bps=bit/s 时延:发送时延、传播时延、排队时延、处理时延 往返时间RTT:数据报文在端到端通信中的来回一次的时间。

二、物理层

物理层的作用:连接不同的物理设备,传输比特流。该层为上层协议提供了一个传输数据的可靠的物理媒体。简单的说,物理层确保原始的数据可在各种物理媒体上传输。

物理层设备:

中继器【Repeater,也叫放大器】:同一局域网的再生信号;两端口的网段必须同一协议;5-4-3规程:10BASE-5以太网中,最多串联4个中继器,5段中只能有3个连接主机;

集线器:同一局域网的再生、放大信号(多端口的中继器);半双工,不能隔离冲突域也不能隔离广播域。

信道的基本概念:信道是往一个方向传输信息的媒体,一条通信电路包含一个发送信道和一个接受信道。

单工通信信道:只能一个方向通信,没有反方向反馈的信道;

半双工通信信道:双方都可以发送和接受信息,但不能同时发送也不能同时接收;

全双工通信信道:双方都可以同时发送和接收。

三、数据链路层

3.1 数据链路层概述

数据链路层在物理层提供的服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。数据链路层在不可靠的物理介质上提供可靠的传输。

该层的作用包括: 物理地址寻址、数据的成帧、流量控制、数据的检错、重发 等。

有关数据链路层的重要知识点:

数据链路层为网络层提供可靠的数据传输;

基本数据单位为帧;

主要的协议:以太网协议;

两个重要设备名称:网桥和交换机。

封装成帧:“帧”是 数据链路层 数据的基本单位:

透明传输:“透明”是指即使控制字符在帧数据中,但是要当做不存在去处理。即在控制字符前加上转义字符ESC。

3.2 数据链路层的差错监测

差错检测:奇偶校验码、循环冗余校验码CRC

奇偶校验码–局限性:当出错两位时,检测不到错误。

循环冗余检验码:根据传输或保存的数据而产生固定位数校验码。

3.3 最大传输单元MTU

最大传输单元MTU(Maximum Transmission Unit),数据链路层的数据帧不是无限大的,数据帧长度受MTU限制.

路径MTU:由链路中MTU的最小值决定。

3.4 以太网协议详解

MAC地址:每一个设备都拥有唯一的MAC地址,共48位,使用十六进制表示。

以太网协议:是一种使用广泛的局域网技术,是一种应用于数据链路层的协议,使用以太网可以完成相邻设备的数据帧传输:

局域网分类:

Ethernet以太网IEEE802.3:

以太网第一个广泛部署的高速局域网

以太网数据速率快

以太网硬件价格便宜,网络造价成本低

以太网帧结构:

类型:标识上层协议(2字节)

目的地址和源地址:MAC地址(每个6字节)

数据:封装的上层协议的分组(46~1500字节)

CRC:循环冗余码(4字节)

以太网最短帧:以太网帧最短64字节;以太网帧除了数据部分18字节;数据最短46字节;

MAC地址(物理地址、局域网地址)

MAC地址长度为6字节,48位;

MAC地址具有唯一性,每个网络适配器对应一个MAC地址;

通常采用十六进制表示法,每个字节表示一个十六进制数,用 - 或 : 连接起来;

MAC广播地址:FF-FF-FF-FF-FF-FF。

四、网络层

网络层的目的是实现两个端系统之间的数据透明传送,具体功能包括寻址和路由选择、连接的建立、保持和终止等。数据交换技术是报文交换(基本上被分组所替代):采用储存转发方式,数据交换单位是报文。

网络层中涉及众多的协议,其中包括最重要的协议,也是TCP/IP的核心协议——IP协议。IP协议非常简单,仅仅提供不可靠、无连接的传送服务。IP协议的主要功能有:无连接数据报传输、数据报路由选择和差错控制。

与IP协议配套使用实现其功能的还有地址解析协议ARP、逆地址解析协议RARP、因特网报文协议ICMP、因特网组管理协议IGMP。具体的协议我们会在接下来的部分进行总结,有关网络层的重点为:

1、网络层负责对子网间的数据包进行路由选择。此外,网络层还可以实现拥塞控制、网际互连等功能;

2、基本数据单位为IP数据报;

3、包含的主要协议:

IP协议(Internet Protocol,因特网互联协议);

ICMP协议(Internet Control Message Protocol,因特网控制报文协议);

ARP协议(Address Resolution Protocol,地址解析协议);

RARP协议(Reverse Address Resolution Protocol,逆地址解析协议)。

4、重要的设备:路由器。

路由器相关协议

4.1 IP协议详解

IP网际协议是 Internet 网络层最核心的协议。虚拟互联网络的产生:实际的计算机网络错综复杂;物理设备通过使用IP协议,屏蔽了物理网络之间的差异;当网络中主机使用IP协议连接时,无需关注网络细节,于是形成了虚拟网络。

IP协议使得复杂的实际网络变为一个虚拟互联的网络;并且解决了在虚拟网络中数据报传输路径的问题。

其中,版本指IP协议的版本,占4位,如IPv4和IPv6;首部位长度表示IP首部长度,占4位,最大数值位15;总长度表示IP数据报总长度,占16位,最大数值位65535;TTL表示IP数据报文在网络中的寿命,占8位;协议表明IP数据所携带的具体数据是什么协议的,如TCP、UDP。

4.2 IP协议的转发流程

4.3 IP地址的子网划分

A类(8网络号+24主机号)、B类(16网络号+16主机号)、C类(24网络号+8主机号)可以用于标识网络中的主机或路由器,D类地址作为组广播地址,E类是地址保留。

4.4 网络地址转换NAT技术

用于多个主机通过一个公有IP访问访问互联网的私有网络中,减缓了IP地址的消耗,但是增加了网络通信的复杂度。

NAT 工作原理:

从内网出去的IP数据报,将其IP地址替换为NAT服务器拥有的合法的公共IP地址,并将替换关系记录到NAT转换表中;

从公共互联网返回的IP数据报,依据其目的的IP地址检索NAT转换表,并利用检索到的内部私有IP地址替换目的IP地址,然后将IP数据报转发到内部网络。

4.5 ARP协议与RARP协议

地址解析协议 ARP(Address Resolution Protocol):为网卡(网络适配器)的IP地址到对应的硬件地址提供动态映射。可以把网络层32位地址转化为数据链路层MAC48位地址。

ARP 是即插即用的,一个ARP表是自动建立的,不需要系统管理员来配置。

RARP(Reverse Address Resolution Protocol)协议指逆地址解析协议,可以把数据链路层MAC48位地址转化为网络层32位地址。

4.6 ICMP协议详解

网际控制报文协议(Internet Control Message Protocol),可以报告错误信息或者异常情况,ICMP报文封装在IP数据报当中。

ICMP协议的应用:

Ping应用:网络故障的排查;

Traceroute应用:可以探测IP数据报在网络中走过的路径。

4.7网络层的路由概述

关于路由算法的要求:正确的完整的、在计算上应该尽可能是简单的、可以适应网络中的变化、稳定的公平的。

自治系统AS: 指处于一个管理机构下的网络设备群,AS内部网络自治管理,对外提供一个或多个出入口,其中自治系统内部的路由协议为内部网关协议,如RIP、OSPF等;自治系统外部的路由协议为外部网关协议,如BGP。

静态路由: 人工配置,难度和复杂度高;

动态路由:

链路状态路由选择算法LS:向所有隔壁路由发送信息收敛快;全局式路由选择算法,每个路由器计算路由时,需构建整个网络拓扑图;利用Dijkstra算法求源端到目的端网络的最短路径;Dijkstra(迪杰斯特拉)算法

距离-向量路由选择算法DV:向所有隔壁路由发送信息收敛慢、会存在回路;基础是Bellman-Ford方程(简称B-F方程);

4.8 内部网关路由协议之RIP协议

路由信息协议 RIP(Routing Information Protocol)【应用层】,基于距离-向量的路由选择算法,较小的AS(自治系统),适合小型网络;RIP报文,封装进UDP数据报。

RIP协议特性:

RIP在度量路径时采用的是跳数(每个路由器维护自身到其他每个路由器的距离记录);

RIP的费用定义在源路由器和目的子网之间;

RIP被限制的网络直径不超过15跳;

和隔壁交换所有的信息,30主动一次(广播)。

4.9 内部网关路由协议之OSPF协议

开放最短路径优先协议 OSPF(Open Shortest Path First)【网络层】,基于链路状态的路由选择算法(即Dijkstra算法),较大规模的AS ,适合大型网络,直接封装在IP数据报传输。

OSPF协议优点:

安全;

支持多条相同费用路径;

支持区别化费用度量;

支持单播路由和多播路由;

分层路由。

RIP与OSPF的对比(路由算法决定其性质):

4.10外部网关路由协议之BGP协议

BGP(Border Gateway Protocol)边际网关协议【应用层】:是运行在AS之间的一种协议,寻找一条好路由:首次交换全部信息,以后只交换变化的部分,BGP封装进TCP报文段.

五、传输层

第一个端到端,即主机到主机的层次。传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输。此外,传输层还要处理端到端的差错控制和流量控制问题。

传输层的任务是根据通信子网的特性,最佳的利用网络资源,为两个端系统的会话层之间,提供建立、维护和取消传输连接的功能,负责端到端的可靠数据传输。在这一层,信息传送的协议数据单元称为段或报文。

网络层只是根据网络地址将源结点发出的数据包传送到目的结点,而传输层则负责将数据可靠地传送到相应的端口。

有关网络层的重点:

传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输以及端到端的差错控制和流量控制问题;

包含的主要协议:TCP协议(Transmission Control Protocol,传输控制协议)、UDP协议(User Datagram Protocol,用户数据报协议);

重要设备:网关。

5.1 UDP协议详解

UDP(User Datagram Protocol: 用户数据报协议),是一个非常简单的协议。

UDP协议的特点:

UDP是无连接协议;

UDP不能保证可靠的交付数据;

UDP是面向报文传输的;

UDP没有拥塞控制;

UDP首部开销很小。

UDP数据报结构:

首部:8B,四字段/2B【源端口 | 目的端口 | UDP长度 | 校验和】 数据字段:应用数据

5.2 TCP协议详解

TCP(Transmission Control Protocol: 传输控制协议),是计算机网络中非常复杂的一个协议。

TCP协议的功能:

对应用层报文进行分段和重组;

面向应用层实现复用与分解;

实现端到端的流量控制;

拥塞控制;

传输层寻址;

对收到的报文进行差错检测(首部和数据部分都检错);

实现进程间的端到端可靠数据传输控制。

TCP协议的特点:

TCP是面向连接的协议;

TCP是面向字节流的协议;

TCP的一个连接有两端,即点对点通信;

TCP提供可靠的传输服务;

TCP协议提供全双工通信(每条TCP连接只能一对一);

5.2.1 TCP报文段结构:

最大报文段长度:报文段中封装的应用层数据的最大长度。

TCP首部:

序号字段:TCP的序号是对每个应用层数据的每个字节进行编号

确认序号字段:期望从对方接收数据的字节序号,即该序号对应的字节尚未收到。用ack_seq标识;

TCP段的首部长度最短是20B ,最长为60字节。但是长度必须为4B的整数倍

TCP标记的作用:

5.3 可靠传输的基本原理

基本原理:

不可靠传输信道在数据传输中可能发生的情况:比特差错、乱序、重传、丢失

基于不可靠信道实现可靠数据传输采取的措施:

差错检测:利用编码实现数据包传输过程中的比特差错检测 确认:接收方向发送方反馈接收状态 重传:发送方重新发送接收方没有正确接收的数据 序号:确保数据按序提交 计时器:解决数据丢失问题;

停止等待协议:是最简单的可靠传输协议,但是该协议对信道的利用率不高。

连续ARQ(Automatic Repeat reQuest:自动重传请求)协议:滑动窗口+累计确认,大幅提高了信道的利用率。

5.3.1TCP协议的可靠传输

基于连续ARQ协议,在某些情况下,重传的效率并不高,会重复传输部分已经成功接收的字节。

5.3.2 TCP协议的流量控制

流量控制:让发送方发送速率不要太快,TCP协议使用滑动窗口实现流量控制。

5.4 TCP协议的拥塞控制

拥塞控制与流量控制的区别:流量控制考虑点对点的通信量的控制,而拥塞控制考虑整个网络,是全局性的考虑。拥塞控制的方法:慢启动算法+拥塞避免算法。

慢开始和拥塞避免:

【慢开始】拥塞窗口从1指数增长;

到达阈值时进入【拥塞避免】,变成+1增长;

【超时】,阈值变为当前cwnd的一半(不能<2);

再从【慢开始】,拥塞窗口从1指数增长。

快重传和快恢复:

发送方连续收到3个冗余ACK,执行【快重传】,不必等计时器超时;

执行【快恢复】,阈值变为当前cwnd的一半(不能<2),并从此新的ssthresh点进入【拥塞避免】。

5.5 TCP连接的三次握手(重要)

TCP三次握手使用指令:

面试常客:为什么需要三次握手?

第一次握手:客户发送请求,此时服务器知道客户能发;

第二次握手:服务器发送确认,此时客户知道服务器能发能收;

第三次握手:客户发送确认,此时服务器知道客户能收。

建立连接(三次握手):

第一次: 客户向服务器发送连接请求段,建立连接请求控制段(SYN=1),表示传输的报文段的第一个数据字节的序列号是x,此序列号代表整个报文段的序号(seq=x);客户端进入 SYN_SEND (同步发送状态);

第二次: 服务器发回确认报文段,同意建立新连接的确认段(SYN=1),确认序号字段有效(ACK=1),服务器告诉客户端报文段序号是y(seq=y),表示服务器已经收到客户端序号为x的报文段,准备接受客户端序列号为x+1的报文段(ack_seq=x+1);服务器由LISTEN进入SYN_RCVD (同步收到状态);

第三次: 客户对服务器的同一连接进行确认.确认序号字段有效(ACK=1),客户此次的报文段的序列号是x+1(seq=x+1),客户期望接受服务器序列号为y+1的报文段(ack_seq=y+1);当客户发送ack时,客户端进入ESTABLISHED 状态;当服务收到客户发送的ack后,也进入ESTABLISHED状态;第三次握手可携带数据;

5.6 TCP连接的四次挥手(重要)

释放连接(四次挥手)

第一次: 客户向服务器发送释放连接报文段,发送端数据发送完毕,请求释放连接(FIN=1),传输的第一个数据字节的序号是x(seq=x);客户端状态由ESTABLISHED进入FIN_WAIT_1(终止等待1状态);

第二次: 服务器向客户发送确认段,确认字号段有效(ACK=1),服务器传输的数据序号是y(seq=y),服务器期望接收客户数据序号为x+1(ack_seq=x+1);服务器状态由ESTABLISHED进入CLOSE_WAIT(关闭等待);客户端收到ACK段后,由FIN_WAIT_1进入FIN_WAIT_2;

第三次: 服务器向客户发送释放连接报文段,请求释放连接(FIN=1),确认字号段有效(ACK=1),表示服务器期望接收客户数据序号为x+1(ack_seq=x+1);表示自己传输的第一个字节序号是y+1(seq=y+1);服务器状态由CLOSE_WAIT 进入 LAST_ACK (最后确认状态);

第四次: 客户向服务器发送确认段,确认字号段有效(ACK=1),表示客户传输的数据序号是x+1(seq=x+1),表示客户期望接收服务器数据序号为y+1+1(ack_seq=y+1+1);客户端状态由FIN_WAIT_2进入TIME_WAIT,等待2MSL时间,进入CLOSED状态;服务器在收到最后一次ACK后,由LAST_ACK进入CLOSED;

为什么需要等待2MSL?

最后一个报文没有确认;

确保发送方的ACK可以到达接收方;

2MSL时间内没有收到,则接收方会重发;

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

六、应用层

为操作系统或网络应用程序提供访问网络服务的接口。应用层重点:

数据传输基本单位为报文;

包含的主要协议:FTP(文件传送协议)、Telnet(远程登录协议)、DNS(域名解析协议)、SMTP(邮件传送协议),POP3协议(邮局协议),HTTP协议(Hyper Text Transfer Protocol)。

6.1 DNS详解

DNS(Domain Name System:域名系统)【C/S,UDP,端口53】:解决IP地址复杂难以记忆的问题,存储并完成自己所管辖范围内主机的 域名 到 IP 地址的映射。

域名解析的顺序:

【1】浏览器缓存,

【2】找本机的hosts文件,

【3】路由缓存,

【4】找DNS服务器(本地域名、顶级域名、根域名)->迭代解析、递归查询。

IP—>DNS服务—>便于记忆的域名

域名由点、字母和数字组成,分为顶级域(com,cn,net,gov,org)、二级域(,taobao,qq,alibaba)、三级域(www)(12-2-0852)

6.2 DHCP协议详解

DHCP(Dynamic Configuration Protocol:动态主机设置协议):是一个局域网协议,是应用UDP协议的应用层协议。作用:为临时接入局域网的用户自动分配IP地址。

6.3 HTTP协议详解

文件传输协议(FTP):控制连接(端口21):传输控制信息(连接、传输请求),以7位ASCII码的格式。整个会话期间一直打开。

HTTP(HyperText Transfer Protocol:超文本传输协议)【TCP,端口80】:是可靠的数据传输协议,浏览器向服务器发收报文前,先建立TCP连接,HTTP使用TCP连接方式(HTTP自身无连接)。

HTTP请求报文方式:

GET:请求指定的页面信息,并返回实体主体;

POST:向指定资源提交数据进行处理请求;

DELETE:请求服务器删除指定的页面;

HEAD:请求读取URL标识的信息的首部,只返回报文头;

OPETION:请求一些选项的信息;

PUT:在指明的URL下存储一个文档。

6.3.1 HTTP工作的结构

6.3.2 HTTPS协议详解

HTTPS(Secure)是安全的HTTP协议,端口号443。基于HTTP协议,通过SSL或TLS提供加密处理数据、验证对方身份以及数据完整性保护

原文地址:https://blog.csdn.net/Royalic/article/details/119985591

⑧ 计算机网络中ack是什么意思

计算机网络中ack意思是确认字符。
确认消息也称为ACK消息,是在计算机网上中通信协议的一部分,是设备或是进程发出的消息,回复已收到数据。例如在传输控制协议(TCP,TransmissionControlProtocol)中就有用ACK来告知创建链接时有收到SYN数据包、使用链接时有收到数据包,或是在中止链接有收到FIN数据包。

⑨ 操作系统是如何将socket接受的数据发送给应用层的

在正篇开始之前,我先提问几个问题,不知道你是否全都了解:

(1) 网络请求是通过http发送的吗?

(2) http与tcp之间的关系?

(3) 网络请求是怎么发送的,通过什么形式去发送的?

在过往对于http与tcp的理解其实只是一个简单模糊的概念,仔细想想其实http只是一种协议,tcp只是用于建立一个持久连接,它们都不是用于网络发送数据的根本,真正发送数据的是我们的物理层,http协议只是作为一个标识的作用,简单来说是定位到某一主机。

下面来介绍一下计算机网络体系结构

计算机网络分为7层,分别是物理层,数据链路层,网络层,传输层,会话层,表示层以及应用层,由于7层太多所以后面经过演变之后定为5层,把应用层,会话层,表示层给合统称为应用层,我们客户端的每一步操作,举个例子,当我们点击发送按钮请求网络的时候,这时候会通过应用层逐渐往下传递直到物理层,物理层会提供一个互联网网络接口,这时候才真正通过互联网开始传输数据,这里最主要介绍的是传输层以及物理层,其它的网络一下,传输层是第一个端到端的层次,也是进程——进程的层次。

主要功能是实现端到端的可靠数据传输、复用与分解、连接控制、流量控制和拥塞控制(这些东西都是定义去网络一下,比如说流量控制,其实就是控制数据的发送量,你不能一次性发送很多数据,原因想一下就知道了),客户端的每一步操作都会在这5层体现出来,查下定义之后就会一目了然(比如说在我们终止会话,这时候就是由会话层管理,实体间交换数据的语法,解决格式和数据表示的差别是由表示层来完成等),在我们建立连接的时候比如说发送一个http请求(原理跟后面的socket数据传输模块是一样的),我们会先建立一个tcp连接,然后发送http请求,这时候数据会经过传输层,传输层里携带了发送数据的报文(比如ip地址,端口号之类的,数据内容),向下传递到物理层,物理层最后会提供一个互联网网络接口去发送数据,数据是以比特流的形式发送,发送到交换机上面(交换机是什么,去网络查一下,不做解释),交换机是有多个的,当我们数据非常大的时候,数据会被分解发送到多个交换机上面,传到对方客户端或者服务器的时候数据会重新整合起来,上面的是一个简单的http请求,下面来介绍一下Socket。

1.Socket的整体流程:

udp客户端:创建套接字,发送数据,接收数据,关闭套接字。

udp服务端:创建套接字,绑定地址和端口号,接收数据,发送数据,关闭套接字。

tcp客户端:创建套接字,建立连接,发送数据,接收数据,关闭套接字。

tcp服务端:创建套接字,绑定地址和端口号,设置监听,建立连接,发送数据,接收数据,关闭套接字。

这些理解起来很容易,我们客户端是要发送数据的,服务端需要接收数据,所以服务端要绑定地址和端口号,而tcp是需要三次握手的所以要有监听。

2.Socket三次握手

第一次握手,客户端发送请求给服务端(询问是否可以建立连接)。

第二次捂手,服务端回应给客户端一个确认,接受连接或者拒绝连接

第三次握手,经过确认之后,客户端回应给服务端(意思是我要开始发送数据了,下一步就开始发送了)。

理解三次握手,为什么要三次,第一次握手确认客户端可以发送请求,第二次握手确认服务端可以接收并且发送,第三部确认客户端可以接收。

3.Scoket四次挥手

第一次挥手,客户端向服务器发送断开连接请求

第二次挥手,服务端回应客户端(意思是,稍等等我数据传完(处理完的意思),在断开)

第三次挥手,服务端回应客户端断开请求(可以断开了)

第四次挥手,客户端与服务端请求断开。

tcp连接是面向连接的,数据发送可靠,udp是面向无连接的,数据发送过后就不管了,下面介绍一下tcp为什么数据可靠

具体方法如下:

差错检测:我们发送数据的时候刚刚说过是由物理层提供的互联网网络接口以比特流的形式进行发送,那么这个时候差错检测利用差错编码实现数据包传输过程中的比特差错检测,保证数据正确性

确认:接收方向发送方反馈接收状态。ACK(肯定确认);NAK(否定确认)

重传:当没有接收到反馈状态。ACK(肯定确认);NAK(否定确认)的时候,或者请求超时的时候进行重新发送

计时器:内部检测,一个定时器,当数据在一定时间没有接收到确认的时候就认为发送失败,进行重传操作。

序号:刚刚说了重传有两种情况,那么当重传是因为网络超时引起的,那么这个时候计时器进行了一次重传,然后上次超时后并没有发送失败这个时候也发送成功了,这个时候就会造成数据错乱,那么序号就起了一个作用,就是给数据进行排序,以至于不错乱。

下面来说一下tcp可靠传输协议滑动窗口协议

左边的代表的是接收的数据,中间代表的是正在处理的,右边代表的是没有处理的,在我们发送数据的时候比如56789这些数据发送,56成功了,这时候窗口就会往右移动,接收的时候呢,当我们接收比如56,接收成功了,这时候窗口往右移动,这里有一个需要注意一下,比如说当我们5没有发送成功或者说5没有接收成功,而6发送成功了,这时候窗口是不会往右移动的,它会等待5发送成功后在往右移动,浮动窗口协议里还有GBN协议和SR协议,这两个的主要区别是,GBN协议的发送窗口只能发送一个,比如上面中间准备发送的5678就只能存在5一个,但是接收窗口是可以有多个的,SR协议是可以发送窗口与接收窗口都是可以多个的。

最后总结一下http请求与socket的差异,socket是套接字,用于将报文传输到传输层,http请求在发送的时候会建立tcp连接,所以http也会分为http持久性连接和非持久性连接,至于网络传输都是要经过物理层才能传输,数据经过多个交换机进行分解,传到服务器的时候在进行整合。

网卡接收到数据根据数据头,将数据写到对应的内存,并发出中断,系统接收到中断,然后通知应用吧?

VC中客户端socket与服务器连接后,需要执行一个封状的操作

朝服务器发送一些数据(命令),然后返回结果

假设全部才字符串,类似这样的函数

CString SendCommand (CString cmd,socket sk)

要求在执行这个函数的时候能同时响应用户界面操作

也就是要用异步方式

而且这个socket已经建立好,有RecvTheard在处理

我目前是用Event实现的,很别扭:

m_hevtReadStore=CreateEvent(NULL,false,FALSE,NULL);

//m_tcp是封装的socket基本操作类

⑩ 计算机网络——TCP/UDP协议

计算机网络七层模型中,传输层有两个重要的协议:
(1)用户数据报协议UDP (User Datagram Protocol)
(2)传输控制协议TCP (Transmission Control Protocol)

UDP 在传送数据之前不需要先建立连接。远地主机的运输层在收到UDP 报文后,不需要给出任何确认。虽然UDP 不提供可靠交付,但在某些情况下UDP 却是一种最有效的工作方式。

TCP 则提供面向连接的服务。在传送数据之前必须先建立连接,数据传送结束后要释放连接。TCP 不提供广播或多播服务。由于TCP 要提供可靠的、面向连接的运输服务,因此不可避免地增加了许多的开销,如确认、流量控制、计时器以及连接管理等。

UDP 的主要特点是:

首部手段很简单,只有8 个字节,由四个字段组成,每个字段的长度都是两个字节。

前面已经讲过,每条TCP 连接有两个端点,TCP 连接的端点叫做套接字(socket)或插口。套接字格式如下:

套接宁socket= (IP 地址:端口号’)

每一条TCP 连接唯一地被通信两端的两个端点(即两个套接宇)所确定。即:
TCP 连接= {socket1, socket2} = {(IP1: port1), (IP2: port2)}

3次握手链接

4次握手释放链接

断开连接请求可以由客户端发出,也可以由服务器端发出,在这里我们称A端向B端请求断开连接。

各个状态节点解释如下:

下面为了讨论问题的万便,我们仅考虑A发送数据而B 接收数据并发送确认。因此A 叫做发送方,而B 叫做接收方。

“停止等待”就是每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组。

使用上述的确认和重传机制,我们就可以在不可靠的传输网络上实现可靠的通信。像上述的这种可靠传输协议常称为自动重传请求ARQ (Automatic Repeat reQuest)。意思是重传的请求是自动进行的。接收方不需要请求发送方重传某个出错的分组。

滑动窗口协议比较复杂,是TCP 协议的精髓所在。这里先给出连续ARQ 协议最基本的概念,但不涉提到许多细节问题。详细的滑动窗口协议将在后面讨论。

下图表示发送方维持的发送窗口,它的意义是:位于发送窗口内的5 个分组都可连续发送出去,而不需要等待对方的确认。这样,信道利用率就提高了。

连续ARQ 协议规定,发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置。

接收方一般都是采用 累积确认 的方式。这就是说,接收方不必对收到的分组逐个发送确认,而是可以在收到几个分组后,对按序到达的最后一个分组发送确认,这样就表示:到这个分组为止的所有分组都己正确收到了。

累积确认 的优点是容易实现,即使确认丢失也不必重传。但缺点是不能向发送方反映出接收方己经正确收到的所有分组的信息。

例如,如果发送方发送了前5 个分组,而中间的第3 个分组丢失了。这时接收方只能对前两个分组发出确认。发送方无法知道后面三个分组的下落,而只好把后面的三个分组都再重传一次。这就叫做Go-back-N (回退N ),表示需要再退回来重传己发送过的N 个分组。可见当通信线路质量不好时,连续ARQ 协议会带来负面的影响。

TCP 的滑动窗口是以字节为单位的。现假定A 收到了B 发来的确认报文段,其中窗口是20 (字节),而确认号是31 (这表明B 期望收到的下一个序号是31 ,而序号30 为止的数据己经收到了)。根据这两个数据, A 就构造出自己的发送窗口,其位置如图所示。

发送窗口表示:在没有收到B 的确认的情况下, A可以连续把窗口内的数据都发送出去。凡是己经发送过的数据,在未收到确认之前都必须暂时保留,以便在超时重传时使用。

发送窗口后沿的后面部分表示己发送且己收到了确认。这些数据显然不需要再保留了。而发送窗口前沿的前面部分表示不允许发送的,因为接收方都没有为这部分数据保留临时存放的缓存空间。

现在假定A 发送了序号为31 ~ 41 的数据。这时发送窗口位置并未改变,但发送窗口内靠后面有11个字节(灰色小方框表示)表示己发送但未收到确认。而发送窗口内靠前面的9 个字节( 42 ~ 50 )是允许发送但尚未发送的。】

再看一下B 的接收窗口。B 的接收窗口大小是20,在接收窗口外面,到30 号为止的数据是已经发送过确认,并且己经交付给主机了。因此在B 可以不再保留这些数据。接收窗口内的序号(31~50)足允许接收的。B 收到了序号为32 和33 的数据,这些数据没有按序到达,因为序号为31 的数据没有收到(也许丢失了,也许滞留在网络中的某处)。 请注意, B 只能对按序收到的数据中的最高序号给出确认,因此B 发送的确认报文段中的确认号仍然是31 (即期望收到的序号)。

现在假定B 收到了序号为31 的数据,并把序号为31~33的数据交付给主机,然后B删除这些数据。接着把接收窗口向前移动3个序号,同时给A 发送确认,其中窗口值仍为20,但确认号是34,这表明B 已经收到了到序号33 为止的数据。我们注意到,B还收到了序号为37, 38 和40 的数据,但这些都没有按序到达,只能先存在接收窗口。A收到B的确认后,就可以把发送窗口向前滑动3个序号,指针P2 不动。可以看出,现在A 的可用窗口增大了,可发送的序号范围是42~53。整个过程如下图:

A 在继续发送完序号42-53的数据后,指针P2向前移动和P3重合。发送窗口内的序号都已用完,但还没有再收到确认。由于A 的发送窗口己满,可用窗口己减小到0,因此必须停止发送。

上面已经讲到, TCP 的发送方在规定的时间内没有收到确认就要重传已发送的报文段。这种重传的概念是很简单的,但重传时间的选择却是TCP 最复杂的问题之一。

TCP采用了一种自适应算法 ,它记录一个报文段发出的时间,以及收到相应的确认的时间。这两个时间之差就是报文段的往返时间RTT,TCP 保留了RTT的一个加权平均往返时间RTTs (这又称为平滑的往返时间, S 表示Smoothed 。因为进行的是加权平均,因此得出的结果更加平滑)。每当第一次测量到RTT样本时, RTTs值就取为所测量到的RTT样本值。但以后每测量到一个新的RTT样本,就按下式重新计算一次RTTs:

新的RTTs = (1 - α)×(旧的RTTs) + α ×(新的RTT样本)

α 越大表示新的RTTs受新的RTT样本的影响越大。推荐的α 值为0.125,用这种方法得出的加权平均往返时间RTTs 就比测量出的RTT值更加平滑。

显然,超时计时器设置的超时重传时间RTO (RetransmissionTime-Out)应略大于上面得出的加权平均往返时间RTTs。RFC 2988 建议使用下式计算RTO:

RTO = RTTs + 4 × RTTd

RTTd是RTT 的偏差的加权平均值,它与RTTs和新的RTT样本之差有关。计算公式如下:

新的RTTd= (1- β)×(旧的RTTd) + β × |RTTs-新的RTT样本|

发现问题: 如图所示,发送出一个报文段。设定的重传时间到了,还没有收到确认。于是重
传报文段。经过了一段时间后,收到了确认报文段。现在的问题是:如何判定此确认报文段是对先发送的报文段的确认,还是对后来重传的报文段的确认?

若收到的确认是对重传报文段的确认,但却被源主机当成是对原来的报文段的确认,则这样计算出的RTTs 和超时重传时间RTO 就会偏大。若后面再发送的报文段又是经过重传后才收到确认报文段,则按此方法得出的超时重传时间RTO 就越来越长。

若收到的确认是对原来的报文段的确认,但被当成是对重传报文段的确认,则由此计算出的RTTs 和RTO 都会偏小。这就必然导致报文段过多地重传。这样就有可能使RTO 越来越短。

Kam 提出了一个算法:在计算加权平均RTTs 时,只要报文段重传了就不采用其往返时间样本。这样得出的加权平均RTTs 和RTO 就较准确。

新问题: 设想出现这样的情况:报文段的时延突然增大了很多。因此在原来得出的重传时间内,不会收到确认报文段。于是就重传报文段。但根据Kam 算法,不考虑重传的报文段的往返时间样本。这样,超时重传时间就无法更新。

解决方案: 对Kam 算法进行修正,方法是z报文段每重传一次,就把超时重传时间RTO 增大一些。典型的做法是取新的重传时间为2 倍的旧的重传时间。当不再发生报文段的重传时,才根据上面给出的公式计算超时重传时间。

流量控制(flow control)就是让发送方的发送速率不要太快,要让接收方来得及接收。

利用滑动窗口机制可以很方便地在TCP 连接上实现对发送方的流量控制。

接收方的主机B 进行了三次流量控制。第一次把窗口减小到rwnd =300,第二次又减到rwnd = 100 ,最后减到rwnd = 0 ,即不允许发送方再发送数据了。这种使发送方暂停发送的状态将持续到主机B 重新发出一个新的窗口值为止。我们还应注意到,B 向A 发送的三个报文段都设置了ACK=1,只有在ACK=1 时确认号字段才有意义。

发生死锁: 现在我们考虑一种情况。上图中, B 向A 发送了零窗口的报文段后不久, B 的接收缓存又有了一些存储空间。于是B 向A 发送了rwnd = 400 的报文段。然而这个报文段在传送过程中丢失了。A 一直等待收到B 发送的非零窗口的通知,而B 也一直等待A 发送的数据。如果没有其他措施,这种互相等待的死锁局面将一直延续下去。

解决方案: TCP 为每一个连接设有一个 持续计时器(persistence timer) 。只要TCP 连接的一方收到对方的零窗口通知,就启动持续计时器。若持续计时器设置的时间到期,就发送一个 零窗口探测报文段 (仅携带1 宇节的数据),而对方就在确认这个探测报文段时给出了现在的窗口值。

1 TCP连接时是三次握手,那么两次握手可行吗?

在《计算机网络》中是这样解释的:已失效的连接请求报文段”的产生在这样一种情况下:client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段。但server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求。于是就向client发出确认报文段,同意建立连接。假设不采用“三次握手”,那么只要server发出确认,新的连接就建立了。由于现在client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送ACK包。这样就会白白浪费资源。而经过三次握手,客户端和服务器都有应有答,这样可以确保TCP正确连接。

2 为什么TCP连接是三次,挥手确是四次?

在TCP连接中,服务器端的SYN和ACK向客户端发送是一次性发送的,而在断开连接的过程中,B端向A端发送的ACK和FIN是是分两次发送的。因为在B端接收到A端的FIN后,B端可能还有数据要传输,所以先发送ACK,等B端处理完自己的事情后就可以发送FIN断开连接了。

3 为什么在第四次挥手后会有2个MSL的延时?

MSL是Maximum Segment Lifetime,最大报文段生存时间,2个MSL是报文段发送和接收的最长时间。假定网络不可靠,那么第四次发送的ACK可能丢失,即B端无法收到这个ACK,如果B端收不到这个确认ACK,B端会定时向A端重复发送FIN,直到B端收到A的确认ACK。所以这个2MSL就是用来处理这个可能丢失的ACK的。

1 文件传送协议

文件传送协议FTP (File Transfer Protocol) [RFC 959]是因特网上使用得最广泛的文件传送协议,底层采用TCP协议。

盯P 使用客户服务器方式。一个FTP 服务器进程可同时为多个客户进程提供服务。FTP的服务器进程由两大部分组成:一个主进程,负责接受新的请求:另外有若干个从属进程,负责处理单个请求。

在进行文件传输时,客户和服务器之间要建立两个并行的TCP 连接:“控制连接”(21端口)和“数据连接”(22端口)。控制连接在整个会话期间一直保持打开, FTP 客户所发出的传送请求,通过控制连接发送给服务器端的控制进程,但控制连接并不用来传送文件。实际用于传输文件的是“数据连接”。服务器端的控制进程在接收到FTP 客户发送来的文件传输请求后就创建“数据传送进程”和“数据连接”,用来连接客户端和服务器端的数据传送进程。

2 简单文件传送协议TFTP

TCP/IP 协议族中还有一个简单文件传送协议TFfP (Trivial File Transfer Protocol),它是一个很小且易于实现的文件传送协议,端口号69。

TFfP 也使用客户服务器方式,但它使用UDP 数据报,因此TFfP 需要有自己的差错改正措施。TFfP 只支持文件传输而不支持交耳。

3 TELNET

TELNET 是一个简单的远程终端协议,底层采用TCP协议。TELNET 也使用客户服务器方式。在本地系统运行TELNET 客户进程,而在远地主机则运行TELNET 服务器进程,占用端口23。

4 邮件传输协议

一个电子邮件系统应具如图所示的三个主要组成构件,这就是用户代理、邮件服务器,以及邮件发送协议(如SMTP )和邮件读取协议(如POP3), POP3 是邮局协议(Post Office Protocol)的版本3 。

SMTP 和POP3 (或IMAP )都是在TCP 连接的上面传送邮件,使用TCP 的目的是为了使邮件的传送成为可靠的。

阅读全文

与计算机网络肯定确认与否定确认相关的资料

热点内容
郑州网络营销哪家好 浏览:347
华为手机如何让网络加速 浏览:250
上海网络营销培训机构 浏览:28
移动网络ip掩码 浏览:690
在哪个网络平台买手机好 浏览:142
网络手机登录教程 浏览:251
上海兴冉网络科技怎么样 浏览:847
创世安网络摄像头怎么连手机 浏览:441
网络通道6是wifi6吗 浏览:850
广西广播网络电视台月租多少钱 浏览:364
广电网络机顶盒wifi信道 浏览:442
网络己连接不可上网怎么回事 浏览:913
itv路由器后面有网络插口 浏览:461
网络安全小公司能学到技术吗 浏览:180
双卡用一个上网移动网络用关吗 浏览:235
华为手机在哪里添加网络打印机 浏览:955
网络围棋平台哪个好用 浏览:865
美团众包为啥网络异常 浏览:325
有网络没有卡的手机怎么登录抖音 浏览:828
电视无线网络怎么设置视频 浏览:243

友情链接