‘壹’ [计算机网络之六] 传输层
传输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最底层。
从传输层的角度,通信的真正端点并不是主机而是主机中的进程。
传输层有 分用 和 复用 的功能。 “复用” 是指在发送方不同的应用进程都可以使用同一个运输层协议传送数据, “分用” 是指接收方的运输层在剥去报文的首部后能够把这些数据正确交付目的应用进程。
网络层和运输层有明显的区别,网络层为主机之间提供逻辑通信,而运输层为应用进程之间提供端到端的逻辑通信。
知名端口号 :0~1023
登记端口号 :1024~49151
客户端短暂端口号 :49152~65535
① 无连接。 发送数据之前不需要建立连接,因此减少了开销和发送数据之前的时延。
② 尽最大努力交付。 即不保证可靠交付,因此主机不需要维持复杂的连接状态表。
③ 面向报文的。 对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界,UDP 一次交付一个完整的报文。
用户数据报 UDP 有两个字段:数据字段和首部字段。首部字段很简单,只有 8 个字节,由四个字段组成,每个字段的长度都是两个字节。各字段意义如下:
① 源端口 在需要对方回信时选用。不需要时可用全0。
② 目的端口 目的端口号。这在终点交付报文时必须使用。
③ 长度 用户数据报的长度,最小值为 8 (仅有首部)。
④ 检验和 检测用户数据报在传输中是否有错。有错就丢弃。
用户数据报首部检验和的计算和校验都要计算出一个伪首部。
① 面向连接。
应用程序在使用 TCP 协议之前,必须先建立 TCP 连接;传送数据完毕后,必须释放已经建立的 TCP 连接。类似于打电话:通话前要先拨号建立连接,通话结束后要挂机释放连接。
② 一对一。
TCP 连接只能是点对点的(一对一)。
③ 可靠交付。
通过 TCP 连接传送的数据,无差错、不丢失、不重复,并且按序到达。
④ 全双工通信。
通信双方的应用进程在任何时候都能发送和接收数据,TCP 连接的两端都设有发送缓存和接收缓存,用来临时存放双向通信的数据。
⑤ 面向字节流。
TCP 中的 “流” 指的是流入到进程或从进程流出的字节序列。
“面向字节流” 的含义:虽然应用程序和 TCP 的交互式一次一个数据块(大小不等),但 TCP 把应用程序交下来的数据仅仅看成是一连串无结构的字节流。TCP 并不知道所传送的字节流的含义。TCP 不保证接收方应用程序锁收到的数据块和发送方应用程序所发出的数据块具有对应的大小关系。但接收方应用程序收到的字节流必须和发送方应用程序发出的字节流完全一样,当然接收方的应用程序必须有能力识别收到的字节流,把它还原成有意义的应用层数据。
TCP 连接是协议软件提供的一种抽象,每一条 TCP 连接唯一地被通信两端的两个端点(即两个套接字)所确定,即:
TCP 连接 ::= {socket1, socket2} = {(IP1: port1), (IP2: port2)}
IP1 和 IP2 分别是两个端点主机的 IP 地址,port1 和 port2 分别是两端端点主机中的端口号。
网络只能提供最大努力的服务,是不可靠的,因此 TCP 必须采用适当的措施才能使得两个运输层之间的通信变得可靠。当出现差错时让发送方重传出现差错的数据,同时在接收方来不及处理收到的数据时,及时告知发送方适当降低发送数据的速度,这样就可以在不可靠的传输信道实现可靠传输。
ARQ(Auto Repeat-reQuest):自动重传请求。
发送方每发送完一个分组就停止发送,等待接收方确认,在收到确认后再发送下一个分组。
A 是发送方,B 是接收方。
A 每发送一个分组后,等待 B 对该分组的确认后,再接着发送下一个分组。
【发送方】A 发送的分组在传输过程中出错,可能是丢失了,也可能是分组受到干扰出错了
【接收方】这时 B 直接丢弃分组,什么也不做(也不通知 A 受到的分组有差错)。
【解决方案】发送方在每发送完一个分组时设置一个 超时计数器 ,只要超过一段时间仍然没有接收到确认,就认为刚才发送的分组丢失了,因而重传前面发送过的分组,这叫 超时重传 。反之在超时计时器到期之前收到了相应的确认,就撤销该超时计时器。
第一,A 在发送完一个分组后, 必须暂时保留已发送的分组的副本 (在发生超时重传时使用)。只有在收到相应的确认后才能清楚暂时保留的分组副本。
第二,分组和确认分组都必须进行 编号 。这样才能明确是哪一个发送出去的分组受到了确认,而哪一个分组还没有收到确认。
第三,超时计时器设置的 重传时间应当比数据在分组传输的平均往返时间更长一些 。
【发送方】超时重传时间内没有收到确认报文,无法确认是发送出错、丢失,还是接收方的确认丢失,超时计时器到期后就要重传。
【接收方】丢弃收到的重复分组,不向上层交付;向发送方发送确认。
【发送方】收下迟到的确认,并且丢弃
发送方大部分时间都在等待确认,信道的利用率低
使用流水线的 ARQ 可以提高信道利用率
【发送方】维持一个发送窗口,位于发送窗口内的分组都可连续发送出去,而不需要等待对方的确认。
回退N帧协议 :如果发送方发送了多个分组,但中间的某个分组丢失了,这时接收方只能对丢失分组之前的分组发出确认,而发送方无法知道丢失分组及后面分组的接收情况,只好把丢失分组及后面的分组重传一次,这叫 Go-back-N ,表示需要再退回来重传已发送过的 N 个分组。
前面 20 个字节固定,因此 TCP 首部最小长度是 20 字节。
TCP 的滑动窗口以字节为单位,窗口后沿的部分表示已发送且已收到通知,窗口里的序号表示允许发送的序号,窗口前沿之前的数据暂时不允许发送,需要等待收到接收方的确认后前沿往前移才可发送。
描述一个发送窗口需要三个指针:P1、P2 和 P3,如图所示:
小于 P1 的是已发送并已收到确认的部分,而大于 P3 的是不允许发送的部分。
P3 - P1 = A 的发送窗口
P2 - P1 = 已发送但尚未收到确认的字节数
P3 - P2 = 允许发送但当前尚未发送的字节数(又称为 可用窗口 或 有效窗口 )
接收方 B 接收窗口大小为20,因为未收到 31 的数据,即使已收到后面的序号 32、33 的数据,返回的确认号仍然是 31。
现在接收方收到了 31、32、33,并返回确认号 33,接收窗口往前滑动 3 个序号,发送方接收到确认,发送窗口也向前滑动 3 个序号大小,现在 A 可以发送序号 51~53 的数据了。
当发送方将发送窗口内的数据都发送出去,但是接收方的确认可能由于网络拥塞滞留,这时发送方发送窗口已满,可用窗口为 0,只能等待接收方的确认报文到达。
TCP 为了保证可靠传输,要求必须受到对已发送报文的确认,如果超过一定时间未受到确认报文,则重传已发送的报文。这个时间就叫 超时重传时间 ,很明显超时重传时间的大小设置应该更贴近网络的实际情况,如果网络状况好,就设短一点,否则使网络的空闲时间增大,降低了传输效率;网络差就设长一点,否则会引起很多不必要的重传,使网络负荷增大。
TCP 采用了一种自适应的算法:
RTT(报文段的往返时间)、RTTs(加权平均往返时间),RTTs 的计算公式:
RTTd(RTT 的偏差的加权平均值)、RTO(RetransmissionTime-Out 超时重传时间):
【场景】TCP 的接收方在接收对方发送过来的数据字节流的序号不连续,形成一些不连续的字节块,如果简单按照回退N帧协议处理,意味着要重传第一个未收到的序号数据块及之后的数据,如果能通知发送方已收到了哪些数据(选择确认),就可以让发送方只发送接收方未收到的数据。
流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。
当发送方收到接收方通知,将窗口缩小为 0 时,发送方将暂时不能发送数据了,必须等接收方通知更新接收窗口大小,但是这个通知又有可能丢失,导致发送方没收到通知。
为了避免双方互相等待死锁,TCP 为每个链接设有一个 持续计时器 ,只要 TCP 连接的一方收到对方的零窗口通知,就启动持续计时器。若持续计时器设置的时间到期,就发送一个零窗口 探测报文段 (仅携带 1 字节的数据),而对方就在确认这个探测报文段时给出了现在的窗口值。如果窗口仍然是零,那么受到这个报文段的一方就重新设置持续计时器;如果窗口不是零,那么死锁的僵局就可以打破了。
【优点】提高网络利用率
【缺点】可能会发生某种程度的延迟
【场景】接收数据的主机如果每次都立刻回复确认应答的话,可能会返回一个较小的窗口,因为接收方刚接收完数,缓冲区已满。
【糊涂窗口综合征问题】
TCP 接收方缓存已满,而交互式的应用进程一次只从接收缓存中读取 1 个字节(这样就使接收缓存空间仅腾出 1 个字节),然后向发送方发送确认,并把窗口设置为 1 个字节(但发送的数据报是 40 字节长,TCP 首部 + IP 数据报首部)。接着,发送方又发来 1 个字节的数据(注意发送方发送的 IP 数据报是 41 字节长)。接收方发回确认,仍然将窗口设置为 1 个字节。这样进行下去,使网络的效率很低。
TCP 文件传输中,就采用了两个数据段返回一次确认应答,并且等待一定时间后没有其他数据包到达时也依然发送确认应答。
当对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏,这种情况就叫做 拥塞 。
慢开始(slow-start)、拥塞避免(congestion avoidance)、快重传(fast retransmit)和快恢复(fast recovery)。
【算法思路】
当主机开始发送数据时,由于并不清楚网络的负荷情况,所以如果立即把大量数据字节注入网络,那么就有可能引起网络发生拥塞。较好的方法是先探测一下,即 由小到大逐渐增大发送窗口 ,也就是说, 由小到大逐渐增大拥塞窗口数值 。
【处理过程】
慢开始门限值 ssthresh 决定了拥塞窗口达到多大时要执行什么算法。
① 当 cwnd < ssthresh 时,使用慢开始算法;
② 当 cwnd > ssthresh 时,停止使用慢开始算法而改用拥塞避免算法;
③ 当 cwnd = ssthresh 时,既可使用慢开始算法,也可使用拥塞避免算法。
在拥塞窗口 cwnd 达到门限值之前,发送方每一轮次收到确认应答后,cwnd 就增大为原来的两倍;达到门限值后,执行拥塞避免算法。
PS. 慢开始只是表示初始发送数据少,不代表发送速率增长速度慢,实际上是指数级增长非常快。
【算法思路】
让拥塞窗口 cwnd 缓慢地增大,即每经过一个往返时间 RTT 就把发送方的拥塞窗口 cwnd 加 1,而不是像慢开始阶段那样加倍增长。拥塞避免阶段有 “加法增大” 的特点,按线性规律缓慢增长,使网络比较不容易出现拥塞 。
【处理过程】
在执行拥塞避免算法阶段,当网络出现超时时,发送方判断为网络拥塞,调整门限值为当前拥塞窗口的一半,即 ssthresh = cwnd / 2,同时拥塞窗口重置为 1,即 cwnd = 1,进入慢开始阶段。
【算法原理】
① 快重传
【场景】有时,个别报文段会在网络中丢失,但实际上网络并未发生拥塞。如果发送方迟迟收不到确认,就会产生超时,就会误认为网络发生了拥塞,导致发送方错误地启动慢开始,把拥塞窗口 cwnd 又设置为 1,因而降低了传输效率。
【方案】接收方不要等待自己发送数据时才进行捎带确认,而是要立即发送确认,即使收到了失序的报文段也要立即发出对已收到的报文段的重复确认,当发送方 一连收到 3 个重复确认 ,就知道接收方确实没有收到某个报文段,因而应当 立即进行重传 。
② 快恢复:
发送方知道只是丢失了个别的报文段,于是不启动慢开始,而是执行快恢复算法,调整发送方门限值 ssthresh = cwnd / 2,同时设置拥塞窗口 cwnd = ssthresh = 8,并开始执行拥塞避免算法。
拥塞控制的流程如下:
拥塞窗口 cwnd,接收方窗口 rwnd, 发送方发送窗口的上限值 = Min[rwnd, cwnd] 。
① 当 rwnd < cwnd,接收方的接收能力限制发送方窗口大小;
② 当 cwnd < rwnd,网络的拥塞程度限制发送方窗口大小。
【问题背景】
路由器采取分组丢弃策略,即按照 先进先出(FIFO) 规则处理分组,当队列已满时,则丢弃后面到达的分组,这叫 尾部丢弃策略 。
丢失的分组会导致发送方出现超时重传,发送方转而执行慢开始算法,不同分组属于不同 TCP 连接,导致很多 TCP 同时进入慢开始状态,这种现象称为 全局同步 。
【解决方案】
主动队列管理 AQM:不等到路由器的队列长度已经达到最大值时才不得不丢弃后面到达的分组,而是在队列长度达到某个警惕值时就主动丢弃到达的分组,这样就提醒了发送方放慢发送的速率,因而有可能使网络拥塞的程度减轻,甚至不出现网络拥塞。
TCP 是面向连接的协议,运输连接有三个阶段: 连接建立、数据传送、连接释放 。
TCP 连接建立过程要解决的几个问题:
① 使每一方能够确知对方的存在;
② 允许双方协商一些参数(如最大窗口值、是否使用窗口扩大选项和时间戳选项以及服务质量等);
③ 能够对运输实体资源(如缓存大小、连接表中的项目等)进行分配。
TCP 建立连接的过程叫做握手,握手需要在客户和服务器之间交换三个 TCP 报文段,即 三次握手 。
最初客户端和服务端都处于 CLOSED(关闭) 状态,A(Client)主动打开连接,B(Server)被动打开连接。
一开始,B 的 TCP 服务器进程先创建 传输控制块 TCB ,准备接受客户进程的连接请求。然后服务器进程就处于 LISTEN(收听)状态,等待客户端的连接请求。如有,即作出响应。
第一次握手 :A 的 TCP 客户进程也是首先创建传输控制块 TCB,准备接受客户进程的连接请求。然后在打算建立 TCP 连接时,向 B 发出连接请求报文段,这时首部中的同步位 SYN = 1,同时选择一个初始序号 seq = x。TCP 规定,SYN 报文段(即 SYN = 1 的报文段)不能携带数据,但要 消耗掉一个序号 。这时,TCP 客户进程进入 SYN-SENT(同步已发送) 状态。
第二次握手 :B 收到连接请求报文段后,如同意建立连接,则向 A 发送确认。在确认报文段中应把 SYN 位和 ACK 位都置 1,确认号是 ack = x + 1,同时也为自己选择一个初始序号 seq = y。请注意,这个报文段也不能携带数据,但同样 要消耗掉一个序号 。这时 TCP 服务器进程进入 SYN-RCVD(同步收到) 状态。
第三次握手 :TCP 客户进程收到 B 的确认后,还要向 B 给出确认。确认报文段的 ACK 置 1,确认号 ack = y + 1,而自己的序号 seq = x + 1。TCP 的标准规定,ACK 报文段可以携带数据。但 如果不携带数据则不消耗序号 ,在这种情况下,下一个数据报文段的序号仍是 seq = x + 1。这时,TCP 连接已经建立,A 进入 ESTABLISHED(已建立连接) 状态。当 B 收到 A 的确认后,也进入 ESTABLISHED(已建立连接)状态。
数据传输结束后,通信的方法都可释放连接。现在 A 和 B 都处于 ESTABLISHED 状态。
第一次挥手 :A 的应用进程先向其 TCP 发出连接释放报文段,并停止再发送数据,主动关闭 TCP 连接。A 把连接释放报文段首部的终止控制位 FIN 置 1,其序号 seq = u,它等于前面已传送过的数据的最后一个字节的序号加 1。这时 A 进入 FIN-WAIT-1(终止等待 1)状态,等待 B 的确认。请注意,TCP 规定,FIN 报文段即使不携带数据,它也消耗掉一个序号。
第二次挥手 :B 收到连接释放报文后即发出确认,确认号是 ack = u + 1,而这个报文段自己的序号是 v,等于 B 前面已传送过的最后一个字节的序号加 1。然后 B 就进入 CLOSE-WAIT(关闭等待)状态。TCP 服务器进程这时应通知高层应用程序,因而从 A 到 B 这个方向的连接就释放了,这时的 TCP 连接处于半关闭(half-close)状态,即 A 已经没有数据要发送了,但 B 若发送数,A 仍要接收。也就是说,从 B 到 A 这个方向的连接并未关闭,这个状态可能会持续一段时间。A 收到来自 B 的确认后,就进入 FIN-WAIT-2(终止等待 2)状态,等待 B 发出的连接释放报文段。
第三次挥手 :若 B 已经没有要向 A 发送的数据,其应用进程就通知 TCP 释放连接。这时 B 发出的连接释放报文段必须使 FIN = 1。现假定 B 的序号为 w(在半关闭状态 B 可能又发送了一些数据)。B 还必须重复上次已发送过的确认号 ack = u + 1。这时 B 就进入 LAST-ACK(最后确认)状态,等待 A 的确认。
第四次挥手 :A 在收到 B 的连接释放报文段后,必须对此发出确认。在确认报文段中把 ACK 置 1,确认号 ack = w + 1,而自己的序号是 seq = u + 1(根据 TCP 标准,前面发送过的 FIN 报文段要消耗一个序号)。然后进入 TIME-WAIT(时间等待)状态。请注意,现在 TCP 连接还没有释放掉。必须经过时间等待计时器(TIME-WAIT timer)设置的时间 2MSL 后,A 才进入到 CLOSED 状态,然后撤销传输控制块,结束这次 TCP 连接。当然如果 B 一收到 A 的确认就进入 CLOSED 状态,然后撤销传输控制块。所以在释放连接时,B 结束 TCP 连接的时间要早于 A。
‘贰’ 分组交换方式必须在数据传输之前在通信双方之间建立一条固定的物理链路 。 这句话错在哪了
分组交换不必在传输前建立双方的物理链路,因为是存储转发。比如QQ好友不在线,也能发信息,此时双方没有固定的物理链路。
‘叁’ 计算机网络各层协议中有哪些是在通信前需要建立连接的,那些是不需要的,请具体介绍哈,谢谢!
助人为快乐之本,第一时间来帮TA简介
计算机网络协议是有关计算机网络通信的一整套规则,或者说是为完成计算机网络通信而制订的规则、约定和标准。网络协议由语法、语义和时序三大要素组成。
语法:通信数据和控制信息的结构与格式;
语义:对具体事件应发出何种控制信息,完成何种动作以及做出何种应答。
时序:对事件实现顺序的详细说明。
编辑本段
计算机网络协议
网络协议
[1]网络协议的定义:为计算机网络中进行数据交换而建立的规则、标准或约定的集合。例如,网络中一个微机用户和一个大型主机的操作员进行通信,由于这两个数据终端所用字符集不同,因此操作员所输入的命令彼此不认识。为了能进行通信,规定每个终端都要将各自字符集中的字符先变换为标准字符集的字符后,才进入网络传送,到达目的终端之后,再变换为该终端字符集的字符。当然,对于不相容终端,除了需变换字符集字符外。其他特性,如显示格式、行长、行数、屏幕滚动方式等也需作相应的变换。
常用的网络协议
一:NETBEUI
NETBEUI是为IBM开发的非路由协议,用于携带NETBIOS通信。NETBEUI缺乏路由和网络层寻址功能,既是其最大的优点,也是其最大的缺点。因为它不需要附加的网络地址和网络层头尾,所以很快并很有效且适用于只有单个网络或整个环境都桥接起来的小工作组环境。
因为不支持路由,所以NETBEUI永远不会成为企业网络的主要协议。NETBEUI帧中唯一的地址是数据链路层媒体访问控制(MAC)地址,该地址标识了网卡但没有标识网络。路由器靠网络地址将帧转发到最终目的地,而NETBEUI帧完全缺乏该信息。
网桥负责按照数据链路层地址在网络之间转发通信,但是有很多缺点。因为所有的广播通信都必须转发到每个网络中,所以网桥的扩展性不好。NETBEUI特别包括了广播通信的记数并依赖它解决命名冲突。一般而言,桥接NETBEUI网络很少超过100台主机。
近年来依赖于第二层交换器的网络变得更为普遍。完全的转换环境降低了网络的利用率,尽管广播仍然转发到网络中的每台主机。事实上,联合使用100-BASE-T Ethernet,允许转换NetBIOS网络扩展到350台主机,才能避免广播通信成为严重的问题。
二:IPX/SPX
IPX是NOVELL用于NETWARE客户端/服务器的协议群组,避免了NETBEUI的弱点。但是,IPX具有完全的路由能力,可用于大型企业网。它允许有许多路由网络。包括32位网络地址,在单个环境中带来了新的不同弱点。
IPX的可扩展性受到其高层广播通信和高开销的限制。服务广告协议(ServiceAdvertising Protocol,SAP)将路由网络中的主机数限制为几千。尽管SAP的局限性已经被智能路由器和服务器配置所克服,但是,大规模IPX网络的管理员仍是非常困难的工作。
三:TCP/IP
每种网络协议都有自己的优点,但是只有TCP/IP允许与Internet完全的连接。TCP/IP是在60年代由麻省理工学院和一些商业组织为美国国防部开发的,即便遭到核攻击而破坏了大部分网络,TCP/IP仍然能够维持有效的通信。ARPANET就是由基于协议开发的,并发展成为作为科学家和工程师交流媒体的Internet。
TCP/IP同时具备了可扩展性和可靠性的需求。不幸的是牺牲了速度和效率(可是:TCP/IP的开发受到了政府的资助)。
Internet公用化以后,人们开始发现全球网的强大功能。Internet的普遍性是TCP/IP至今仍然使用的原因。常常在没有意识到的情况下,用户就在自己的PC上安装了TCP/IP栈,从而使该网络协议在全球应用最广。
TCP/IP的32位寻址功能方案不足以支持即将加入Internet的主机和网络数。因而可能代替当前实现的标准是IPv6。
应用层
·DHCP(动态主机分配协议)
· DNS (域名解析)
· FTP(File Transfer Protocol)文件传输协议
· Gopher (英文原义:The Internet Gopher Protocol 中文释义:(RFC-1436)网际Gopher协议)
· HTTP (Hypertext Transfer Protocol)超文本传输协议
· IMAP4 (Internet Message Access Protocol 4) 即 Internet信息访问协议的第4版本
· IRC (Internet Relay Chat )网络聊天协议
· NNTP (Network News Transport Protocol)RFC-977)网络新闻传输协议
· XMPP 可扩展消息处理现场协议
· POP3 (Post Office Protocol 3)即邮局协议的第3个版本
· SIP 信令控制协议
· SMTP (Simple Mail Transfer Protocol)即简单邮件传输协议
· SNMP (Simple Network Management Protocol,简单网络管理协议)
· SSH (Secure Shell)安全外壳协议
· TELNET 远程登录协议
· RPC (Remote Procere Call Protocol)(RFC-1831)远程过程调用协议
·RTCP (RTP Control Protocol)RTP 控制协议
· RTSP(Real Time Streaming Protocol)实时流传输协议
· TLS (Transport Layer Security Protocol)安全传输层协议
· SDP( Session Description Protocol)会话描述协议
· SOAP (Simple Object Access Protocol)简单对象访问协议
· GTP 通用数据传输平台
· STUN(Simple Traversal of UDP over NATs,NAT 的UDP简单穿越)是一种网络协议
· NTP (Network Time Protocol)网络校时协议
传输层
·TCP(Transmission Control Protocol) 传输控制协议
· UDP (User Datagram Protocol) 用户数据报协议
· DCCP (Datagram Congestion Control Protocol)数据报拥塞控制协议
· SCTP(STREAM CONTROL TRANSMISSION PROTOCOL)流控制传输协议
· RTPReal-time Transport Protocol或简写RTP)实时传送协议
· RSVP (Resource ReSer Vation Protocol)资源预留协议
· PPTP ( Point to Point Tunneling Protocol)点对点隧道协议
网络层
IP (IPv4 · IPv6) · ARP · RARP · ICMP · ICMPv6 · IGMP · RIP · OSPF · BGP · IS-IS · IPsec
数据链路层
802.11 · 802.16 · Wi-Fi · WiMAX · ATM · DTM · 令牌环 · 以太网 · FDDI · 帧中继 · GPRS · EVDO · HSPA · HDLC · PPP · L2TP · ISDN
物理层
以太网物理层 · 调制解调器 · PLC · SONET/SDH · G.709 · 光导纤维 · 同轴电缆 · 双绞线
‘肆’ 【网络】TCP/IP-数据链路层
本文主要从数据链路层主要功能展开,涉及到以下相关概念
首先我们看看TCP/IP网络模型中数据链路层的功能定义:透明传输,差错检测,封装成帧
数据链路层进程的任务是在两个网络层进程之间提供无错误的,透明的通信
1 提供差错检测机制(处理传输错误)
2使用滑动窗口机制进行流量控制 (调节数据流,确保慢速的接收方不会被发送方淹没)
3 向网络层提供一个定义良好的网络接口
在OSI参考模型中,上层使用下层所提供的服务必须与下层交换命令,这些命令称为 服务原语 。
相邻层之间的接口称为 服务访问点SAP ,
对等层之间传送的数据单位称为 协议数据单元PDU
以下图说明网络链路,数据传输构成,和数据链路层分层
可分为 (面向字符的通信规程) 和 (面向比特的通信规程) 两类
“TCP 是一个面向字节流的协议”指的是“字节就是字节”
在令牌环网中,令牌环的帧格式有两种,分别是 (令牌帧) 和 (数据帧)
在点-点链路中,发送信息和命令的站称为主站,接收信息和命令而发出确认信息或响应的站称为从站,兼有主、从功能可发送命令与响应的站称为复合站
透明传输模式
0201 工作原理
以太网有两类
01 经典以太网,解决多路访问问题
02 交互式以太网,使用交换机连接不同的计算机。
交换机中每个端口有自己独立的冲突域。
采用较为灵活的无连接的工作方式,即不必先建立连接就可以直接发送数据。
以太网对发送的数据帧不进行编号,也不要求对方发回确认。
以太网提供的服务是不可靠的交付,即尽最大努力的交付。
以太网是使用1-持续CSMA/CD 技术的总线型网络。
以太网的逻辑结构是总线型结构,物理结构是星型或者拓扑星型结构。
以太网属于数据链路层协议应用,规定的最短帧长 最短帧长度为64字节。
为了确保最小帧长为64字节,同时维持网络直径为200m,千兆以太网采用了载波扩展和数据包分组两种技术。
为什么要限制最短帧长
以太网的争用期是指总线两端的两个站之间的往返传播时延,又称为碰撞窗口。
以太网的端到端往返时延 2τ称为争用期,或碰撞窗口。
争用期长度为 2τ,即端到端 传播时延 的两倍。
经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞
网桥工作在数据链路层,作用是连接不用的物理局域网形成逻辑局域网,它们通过检查数据链路层地址来转发帧。用于连接类型相似的局域网。
在网桥中,帧从物理层往上传给以太网的MAC层。
路由器作用于网络层,提供网络层协议转换。通过检查数据包地址,并基于数据包地址路由数据包。在网络之间存储和转发分组
网关提供传输层及以上各层协议之间的转换
网桥与路由器的区别
1 二层设备与三层设备
2 网桥连接相似的局域网,路由器连接不同的网络
3 网桥不隔离广播,而路由器可以隔离广播
网桥的主要任务是地址学习和帧转发
以太网交换机实际上是一个多端口的网桥。
节点交换机与以太网交换机都是数据链路层设备,前者使用点对点信道,后者使用广播信道。
例:以太网交换机在收到一帧后先进行存储,在转发帧是,对于未知目的的帧,可以采用广播的方式转发。
交换机是按照存储转发方式工作的,在收到一帧后,一定是先将它存储再进行处理,不管目的地址。在转发时,查找转发表和收到帧的源地址有无匹配的项目,有则更新,无则向除接收该帧的接口以外转发帧,即广播。
以太网交换机按照自学习算法建立转发表,它通过 ARP协议 进行地址学习。ARP协议 不属于链路层 。
A RP不是向网络层提供服务,它 本身就是网络层的一部分,帮 助向传输层提供服务。
在数据链路层不存在IP 地址的问题。数据链路层协议是象HDLC 和PPP 这样的协议,它们
把比特串从线路的一端传送到另一端。
例题
高级数据链路控制(High-Level Data Link Control或简称HDLC),是一个在同步网上传输数据、面向比特的【可靠传输】数据链路层协议。目前我们普遍使用HDLC作为数据链路控制协议。
HDLC帧格式如下
当我们传输数据时,要传输的不仅仅是数据的大小,还会给这些数据加上头和尾,以及一些其他的标志。比如标志位有八位,就是一个字节。所以除数据外其他的字段加在一起要占据6字节的空间。
HDLC定义了三种类型的站:分别是主站,从站,复合站
HDLC包括三种类型的帧,信息帧,监控帧,和无编号帧。第1位为“0”表示是信息帧,第1、2位为“10”是监控帧,“11”是无编号帧。
信息帧用于传送有效信息或数据,通常简称I帧。
监控帧用于监视和控制数据链路,完成信息帧的接收确认、重发请求、暂停发送
请求等功能。监控帧不具有信息字段。
无编号帧用于数据链路的控制,它本身不带编号,可以在任何需要的时刻发出
HDLC的帧类型中用于差错控制和流量控制的帧是 A.命令帧 B.信息帧 C.无编号帧 D.监控帧
答案 D
ATM是一种 面向分组 的技术,其分组称为信元。 ATM 信元由信元头和净荷(Payload)两部分构成。信元头中包含信元控制信息,净荷用于承载用户的数据。
ATM是一种面向连接的技术,传输基于固定长度的信息信元,每个信元在他的头部带有虚电路标识符,交换设备根据此标识符演着连接建立的路径转发信元。
ATM是异步传输模式的缩写,是两种交换技术的结合,电路交换和分组交换。
信元和信元头长度分别是53字节和5字节
在计算机网络中,数据交换的方式有:
(1)线路交换。在数据传送之前需建立一条物理通路, 在线路被释放之前,该通路将一直被一对用户完全占有。
(2)报文交换。报文从发送方传送到接收方采用存储转发 的方式。在传送报文时,只占用一段通路;在交换节点中需要 缓冲存储,报文需要排队。因此,这种方式不满足实时通信的 要求。
(3)分组交换。此方式与报文交换类似,但报文被分成组传送,并规定了分组的最长度,到达目的地后需重新将分组组装成报文。这是网络中最广泛采用的一种交换技术。
常用的差错控制方法是在数据中加入差错控制编码,在所要发送的信息位之前按照某种规则加上一定的冗余位,构成一个码字再传送。
交换机可以用来分割LAN,连接不同的LAN,或者扩展LAN的覆盖范围。
4B/5B编码是将数字数据转换为数字信号的编码方式。
数据链路层和大多数高层都存在的一个问题是如何避免一个快速发送方用数据【淹没】一个慢速接受方。所以需要一个流量调节机制,以便让发送方知道接收方何时可以接收更多的数据。
两种方式:
1 基于反馈的流量控制 接收方给发送方发信息
2 基于速率的流量控制 限制发送方传输速率
数据链路层和传输层的TCP协议都会涉及到滑动窗口机制。侧重点不一样。
数据链路层主要有两种: 停-等流量控制和滑动窗流量控制 。
发送方窗口内的序列号代表了那些已经被发送,但是还没有被确认的帧,或者是那些可以被发送的帧。
首先整理下滑动窗口涉及到的3个协议
1 停等协议:发送方每发送一帧,都要等待接收方的应答信号,之后才能发送下一帧;接收方每接收一帧,都要反馈一个应答信号,表示可接收下一帧,如果接收方不反馈应答信号,则发送方必须一直等待。
2 后退N帧协议:在后退n协议中,接收方若发现错误帧就不再接收后续的帧,即使是正确到达的帧,这显然是一种浪费。
接受方发现接收到的信息帧时序有问题时,要求发送方发送最后一次正确发送后确认接收的帧之后的所有的未被确认的帧。
3 选择重传协议:当接收方发现某帧出错后,其后继续送来的正确的帧虽然不能立即递交给接收方的高层。但接收方仍可收下来,存放在一个缓冲区中,同时要求发送方重新传送出错的那一帧,一旦收到重新传来的帧后,就可以原已存于缓冲区中的其余帧一并按正确的顺序递交高层。
总之
海明码:如果要检测 d位错误,需要海明距为 d+1的编码方案;如果要纠正 d位错误,需要海明 距 为 2d+1的 编 码 方 案 。
1.集线器本身是一个 冲突域 ,因为它不能分隔冲突域。
2.交换机本身是一个 广播域 ,它分隔冲突域,即它的每一个端口都是一个冲突域。
3. 路由器 分隔 广播域 ,它的每一个接口都是一个 广播域 。
4.交换机和 路由器 相连的链路即是冲突域又是广播域。
某用户程序采用 UDP协议进行传输,则差错控制应由 协议完成。
A.数据链路层 B.网络层 C.物理层 D.应用层
PPP协议是透明传输,实际上就是通常所说的透传。
PPP协议使用的是一种面向字节的协议,所有的帧长度都是整数个字节,使用一种特殊的字符填充法完成数据的填充。
例题
为实现透明传输,PPP协议使用的填充方法是()。B
A.位填充
B.字符填充
C.对字符数据使用字符填充,对非字符数据使用位填充
D.对字符数据使用位填充,对非字符数据使用字符填充
例题:
PPP 帧的起始和结束标志都是 0x7e,若在信息字段中出现与此相同的字符,必须进行填
充。在同步数据链路中,采用___比特填充法____方法进行填充;在异步数据链路中,采
用___字符填充法____方法进行填充
1 纠错,PPP协议只进行检错
2流量控制
3 序号 PPP协议是不可靠的传输协议,因此不需要给帧编号。
‘伍’ OSI 各层的主要功能
物理层处于OSI参考模型的最低层。物理层的主要功能是利用物理传输介质为数据链路层提供物理连接,一遍透明地传送“比特流”。它负责在计算机之间传递数据位,为在物理媒体上传输比特流创建规则。 该层定义电缆如何连接到网卡上 ,以及需要用何种传送技术在电缆上发送数据,定义其上层(数据链路层)所使用的访问方法。
因此我们可以发现物理层的主要特点:
1.主要复测在物理连接上传输二进制比特流
2.提供为建立、维护和释放物理连接所需要的机械、电气、功能与规程的特性。
通常将具有一定数据处理及发送、接收能力的设备称为 数据终端设备(Data Terminal Equipment,DTE) ,而把介于DTE与传输介质之间的设备称为 数据电路终接设备(Data Circuit-Terminating Equipment,DCE) 。DCE在DTE与传输介质之间提供信号转换和编码功能,并负责建立、维护和释放物理连接。
DTE可以是一台计算机,也可以是一台I/O设备,典型的DTE设备就是电话线路连接的调制解调器。
因为DCE是介于DTE与传输介质之间的,在通信过程中,DCE一方面将DTE的数据传送给传输介质,另一方面要需要将从传输介质接收到的比特流顺序传送给DTE,因此,DCE要有数据信息的传输,又需要控制信息的传输,需要高度协调地工作,因此需要制定DTE与DCE的借口标准,这些标准就是 物理接口标准 。
物理接口标准定义了物理层与物理传输介质之间的边界与接口。物理接口的四个特性是:机械特性、电气特性、功能特性与规程特性。
机械特性: 物理层的机械特性规定了物理连接时所使用可插连接器的形状和尺寸,连接器中引脚的数量与排列情况等。
电气特性: 规定了在物理连接上传输二进制比特流时线路上信号水平的高低、阻抗及阻抗匹配、传输速率与距离限制。
功能特性: 规定物理接口上各条信号线的功能分配和确切定义。物理接口信号线一般分为:数据线、控制线、定时线和地线。
规程特性: 定义了信号线进行二进制比特流传输时的一组操作过程,包括各信号线的工作规则和时序。
它把来自物理层的原始数据打包成帧。 帧是放置数据的、逻辑的、结构化的包。 数据链路层负责帧在计算机之间的无差错传递。
网络层定义网络层实体通信用的协议,它确定从源结点沿着网络到目的结点的路由选择,并处理相关的控制问题,如交换、路由和对数据包阻塞的控制。
数据链路层协议是相邻直接连结点间的通信协议,它不能解决数据经过通信子网中多个转接结点的通信问题。设置网络层的主要目的就是要为报文分组以最佳路径通过通信子网达到目的主机提供服务,而网络用户不必关心网络的拓扑结构与所使用的通信介质。
网络层主要的任务包含4个方面:
1.网络连接建立与管理。将逐段的数据链路组织起来,通过复用物理链路,为分组提供逻辑通道(虚电路或数据报),建立主机到主机间的网络连接。
2.路径选择与中继。
3.网络连接与重置,报告不可恢复的错误。
4.流量控制及阻塞控制。
网络层数据传输的通道是逻辑通道,即虚电路;网络层的信息传输单位是分组,上一层数据链路层是什么还记得吗?没有错,帧。
传输层的任务是向用户提供可靠的、透明的、端到端(End to End)的数据传输,以及差错控制和流量控制机制。
所谓 端到端 是相对 链接 而言的。OSI参考模型的四 七层属于端到端方式,而一 三层属于链接方式。就像打电话的两个人,两个人不用关心信号是如何一段一段传递,他们直接与对方交流,就像端到端;而提供电话服务的公司,则需要考虑如何接受你的语音信号,如何通过中继让另一个人接到你的通话请求并建立和维系这段通话。
传输层的另一个重要功能是流量控制,本层的流量控制是通信主机端到端之间的,与其它层的流量的控制有着明显不同。
就像会话层的名字一样,会话层建立、管理和终止应用程序进程之间的会话和数据交换。这种会话关系是由两个或多个表示层实体之间的对话构成的。
会话层与传输层有着明显的区别。传输层协议负责建立 和维护端到端的逻辑连接,服务比较简单,目的是提供可靠的传输服务。
表示层包含了处理网络应用程序数据格式的协议。表示层位于应用层的下面和表示层的上面,从应用层获得数据并格式化以供通信网络使用。
表示层服务有三个重要概念:语法转换、表示上下文和表示服务原语。在上一篇中介绍过,可以按字面粗略领略到意思。
应用层是最终用户应用程序访问网络的地方,是OSI参考模型的最高层,它为用户的应用程序提供网络服务。
数据的封装与传输
1.数据封装: 为实现对等层之间的通信,当数据需要通过网络从一个结点传送到另一个结点前,必须在数据的头部和尾部加入特定的协议头和协议尾。这种增加数据头部和尾部的过程称为数据打包或数据封装。
2.数据拆包: 在数据到达接收结点的对等层后,接收方将反向识别、提取和除去发送方对等层所增加的数据头部和尾部。接收方这种去除数据头部和尾部的过程叫数据拆包或数据解封。
OSI模型到这里就告一段落了,OSI模型是如此完美,刚接触我也感觉这种逐层“翻译”传递,每一层只做自己的事情,相互独立互不干扰,最终将信息转化为01比特流,实现了物理层面的识别,也让信息得以传输。然而后来才知道,OSI模型是只存在教科书中的,并没有得到推广;我不禁想问,既然如此完美,为何得不到推广呢?原来是这样的,第一个原因是生不逢时,当OSI模型提出的时候,TCP/IP的四层模型已经逐渐推广开来,并且因为OSI的七层模型过于详细,过于完美,导致一些方面无法实现,考虑到诸多因素,最终使得OSI模型仅仅存在于教科书中。
‘陆’ 计算机网络_网络层
在计算机网络领域,网络层应该向运输层提供怎样的服务(面向连接还是无连接)曾引起了长期的争论,争论焦点的实质就是:在计算机通信中,可靠交付应当由谁来负责?是 网络 还是 端系统
只是一条 逻辑上的连接 ,分组都沿着这条逻辑连接按照存储转发方式传送,并不是真正建立了一条物理连接。
请注意,电路交换的 电话通信 是先建立了一条 真正的连接 。因此分组交换的虚连接和电路交换的连接只是类似,但并不完全一样。
数据报服务
网际协议IP是TCP/IP体系中两个最主要的协议之一,与IP协议配套使用的还有三个协议
互连在一起的网络要进行通信,会遇到许多问题要解决
网络互连要使用一些中间设备
中间设备 又称为 中间系统 或 中继 系统
如果我们只从网络层考虑问题,那么IP数据报就可以想象是在网络层中传送。
每一类地址都由两个固定长度的字段组成,其中一个 字段是 网络号 net-id ,它标志主机(或路由器)所连接到的网络,而另一个字段则是**主机号 host-id
**,它标志该主机(或路由器)
可以记为
观察上图
比较重要的一点是要区别IP地址与 硬件地址 的区别
从层次的角度来看, 物理地址是数据链路层和物理层使用的地址,而IP地址是网络层和以上使用的地址,是一种逻辑地址(称IP地址是逻辑地址是因为IP地址是用 软件实现的)
有 四个A类网络 通过三个路由器连接在一起,每个网络上都可能有成千上万个主机。可以想象,若按目的主机号来制作路由表,则所得出的路由表就会过于庞大。丹若按主机所在的 网络地址 来制作路由表,那么每一个路由器中的路由表就只包含 四个项目 。这样可以大大简化路由表。
使用这样的简化图,我们可以不用关心某个网络内部的具体拓扑结构及连接在该网络上有多少台计算机,他还强调了在互联网上转发分组时,是 从一个路由器转发到下一个路由器 。
根据目的网络地址就能确定下一跳路由器,这一点做的结果是:
虽然因特网所有分组转发都是 基于目的主机所在的网络 ,但在大多数情况下都允许有这样的特例,即对特定的目的主机指明一个路由。这种路由叫做 特定主机路由 ,采用特定主机路由可使网络管理人员能更方便地控制网络和测试网络,同时也可在需要考虑某种安全问题时采用这种特定主机路由。
IP 数据报的首部中 没有地方 可以用来指明“下一跳路由器的 IP 地址”,当路由器收到待转发的数据报, 不是 将下一跳路由器的 IP 地址填入 IP 数据报,而是 送交下层的网络接口软件 。网络接口软件使用 ARP 负责将下一跳路由器的 IP 地址转换成 硬件地址 ,并将此硬件地址放在链路层的** MAC 帧 的首部,然后根据这个 硬件地址**找到下一跳路由器。
(1) 从数据报的首部提取目的主机的 IP 地址 D, 得出目的网络地址为 N。
(2) 若网络 N 与此路由器直接相连,则把数据报直接交付目的主机 D;否则是间接交付,执行(3)。
(3) 若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行(4)。
(4) 若路由表中有到达网络 N 的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行(5)。
(5) 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行(6)。
(6) 报告转发分组出错。
在 ARPANET 的早期,IP 地址的设计确实不够合理。
从 1985 年起在 IP 地址中又增加了一个“子网号字段”,使两级的 IP 地址变成为三级的 IP 地址。这种做法叫作划分子网(subnetting) 。划分子网已成为因特网的正式标准协议。
请注意现在子网号为3的网络的 网络地址 是145.13.3.0(既不是原来两级的IP地址的网络地址145.13.0.0,也不是简单的子网号3),为了使路由器能很方便的从数据报中的目的IP地址中提取所要找的子网的网络地址,路由器就要使用三级IP地址的子网掩码(如上图,三级IP地址的子网掩码),它也是32位,由一串1和跟随的一串0组成。子网掩码中的1对应于IP地址中原来二级地址中的16位网络号加上新增加的8位子网号,而子网掩码中的0对应于现在的8位主机号。 虽然RFC文档中没有规定子网掩码中的一串1必须是连续的,但却极力推荐在子网掩码中选用连续的1,以避免发生错误
不管有没有划分子网,只要把子网掩码和IP地址进行逐位相 与 运算,就立即得出网络地址来,这样路由器处理到来的分组时可以采用相同的算法。
归纳下上述的要点,从网络145.13.0.0外面看,这就是一个普通的B类网络,但进入这个网络后(即到了路由器),就看到了还有许多网络(即划分了子网后的许多网络),其网络地址为145.13.x.0(这里x可以表示不同的数值),而这些网络的子网掩码都是24个连1跟上8个连0。总之,在这个网络的内外,看到的网络是不同的
为了更便于查路由表,现在因特网的标准规定:所有的网络都必须使用子网掩码,同时在路由器的路由表中也必须有子网掩码这一栏。如果一个网络不划分子网,那么该网络的子网掩码就使用默认子网掩码,默认子网掩码中1的位置和IP地址中的网络号字段正好相对应。因此,若用默认子网掩码和某个不划分子网的IP地址逐位相与,就应当能够得出该IP地址的网络地址来,这样做可以不用查找该地址的类别位就能知道这是哪一类的IP地址 (书上原话 没懂 !!!!)
P137有一个表格写B类子网划分选择(使用固定长度子网)
有一个例题请见教材P139
划分子网在一定程度上缓解了因特网在发展中遇到的困难。然而在 1992 年因特网仍然面临三个必须尽早解决的问题,这就是:
无分类的两级编址的记法是:
CIDR 还使用 斜线记法 (slash notation),它又称为 CIDR记法 ,即在 IP 地址后面加上一个斜线“/”,然后写上网络前缀所占的位数(这个数值对应于三级编址中子网掩码中 1 的个数)。CIDR 把网络前缀都相同的连续的 IP 地址组成 “CIDR 地址块” 。
为了更方便的进行路由选择,CIDR使用32位的地址掩码,地址掩码由一串1和一串0组成,而1的个数就是网络前缀的长度。例如/20地址块的地址掩码是:11111111 11111111 11110000 00000000 20个连续的1,斜线记法中,斜线后面的数字就是地址掩码中1的个数
这个 ISP 共有 64 个 C 类网络。如果不采用 CIDR 技术,则在与该 ISP 的路由器交换路由信息的每一个路由器的路由表中,就需要有 64 个项目。但采用地址聚合后,只需用路由聚合后的 1 个项目 206.0.64.0/18 就能找到该 ISP。
// 这里还没太懂.... 就是共有多少个几类网络那里
报文格式
ICMP差错报告报文的数据字段的内容
‘柒’ 网络层的功能有没有建立连接
是啊,建立连接好像是传输层的事。