精华内容
下载资源
问答
  • 主要总结并讲述了无线网络传输层通信协议TCP与UDP的区别

    TCP协议:面向连接的、可靠的传输协议。利用TCP协议进行通信,首先通过三次握手信号建立通信双方的可靠连接,之后才可以进行通信,通信结束后需要释放连接。TCP采用数据确认、超时重传等机制,保证了发送的数据能够有效地到达通信对方。

    UDP协议:无连接的、不可靠的传输协议。采用UDP协议进行通信时,不需要先建立连接,可以直接向一个IP地址发送数据,但不保证对方一定能够收到。由于UDP协议在传输数据报之前不要求客户和服务器之间建立连接,而且没有超时重传等机制,故而利用UDP协议进行通信具有传输速度快、实时性好等优点。

    TCPUDP协议之间有多方面的区别,与本文关系密切的主要有以下三点:

    (1)       TCP基于连接,UDP是无连接的;

    (2)       TCP提供可靠的数据传输,UDP使用尽最大努力交付,不保证可靠传输;

    TCP协议适合于对数据完整性要求较高的场合,UDP协议适合于对实时性要求较高的场合。

    展开全文
  • 计算机网络传输层知识点全覆盖

    万次阅读 多人点赞 2017-02-12 21:59:27
    传输层概述 作用:传输层为它上面的应用层提供通信服务。 在OSI七层参考模型中,传输层是面向通信的最高层,...网络层为不同主机提供通信服务,而传输层为不同主机的不同应用提供通信服务。 网络层只对报文头部进行差错

    这里写图片描述

    传输层概述

    • 作用:传输层为它上面的应用层提供通信服务。
    • 在OSI七层参考模型中,传输层是面向通信的最高层,也是用户功能的最底层。
    • 传输层两大重要的功能:复用 和 分用。
      • 复用:在发送端,多个应用进程公用一个传输层;
      • 分用:在接收端,传输层会根据端口号将数据分派给不同的应用进程。
    • 和网络层的区别:
      • 网络层为不同主机提供通信服务,而传输层为不同主机的不同应用提供通信服务。
      • 网络层只对报文头部进行差错检测,而传输层对整个报文进行差错检测。

    UDP(用户数据报协议)详解

    UDP的特点

    1. UDP只在IP数据报服务的基础上增加了少量的功能:复用与分用、对整个报文的差错检测。

    2. UDP是无连接的
      通信前不需要建立连接,通信结束也无需释放连接。

    3. UDP是不可靠的
      它是尽力而为交付,不能确保每一个数据报都送达。

    4. UDP是面向报文的
      所谓『面向报文』就是指:UDP数据传输的单位是报文,且不会对数据作任何 拆分 和 拼接 操作。
      在发送端,应用程序给传输层的UDP什么样的数据,UDP不会对数据进行切分,只增加一个UDP头并交给网络层。
      在接收端,UDP收到网络层的数据报后,去除IP数据报头部后遍交给应用层,不会作任何拼接操作。

    5. UDP没有拥塞控制
      UDP始终以恒定的速率发送数据,并不会根据网络拥塞情况对发送速率作调整。这种方式有利有弊。
      弊端:网络拥塞时有些报文可能会丢失,因此UDP不可靠。
      优点:有些使用场景允许报文丢失,如:直播、语音通话,但对实时性要求很高,此时UDP还是很有用武之地的。

    6. UDP支持一对一、一对多、多对多、多对一通信
      而TCP只支持一对一通信。

    7. UDP首部开销小,只有8字节。
      而TCP头部至少由20字节,相比于TCP要高效很多。

    PS:问:UDP不可靠具体体现在哪些方面?
    数据报丢失?数据报顺序?

    UDP报文头

    title

    • 源端口
    • 目的端口
    • 长度:整个数据报的长度
    • 检验和:整个数据报的检验和。

    TCP(传输控制协议)详解

    TCP特点

    1. TCP是面向连接的
      通信前需要建立连接,通信结束需要释放连接。

    2. TCP提供可靠交付服务
      所谓『可靠』指的是:TCP发送的数据无重复、无丢失、无错误、与发送端顺序一致。

    3. TCP是面向字节流的
      所谓『面向字节流』指的是:TCP以字节为单位。虽然传输的过程中数据被划分成一个个数据报,但这只是为了方便传输,接收端最终接受到的数据将与发送端的数据一模一样。

    4. TCP提供全双工通信
      所谓『全双工通信』指的是:TCP的两端既可以作为发送端,也可以作为接收端。

    5. 一条TCP连接的两端只能有两个端点
      TCP只能提供点到点的通信,而UDP可以任意方式的通信。

    TCP连接 与 套接字

    • 什么是『TCP连接』?
      TCP连接是一种抽象的概念,表示一条可以通信的链路。
      每条TCP连接有且仅有两个端点,表示通信的双方。且双发在任意时刻都可以作为发送者和接收者。

    • 什么是『套接字』?
      一条TCP连接的两端就是两个套接字。
      套接字=IP地址:端口号。
      因此,TCP连接=(套接字1,套接字2)=(IP1:端口号1,IP2:端口号2)

    TCP头部

    title

    TCP头部长度有20字节的固定部分,选项部分长度不定,但最多40字节,因此TCP头部在20-60字节之间。

    1. 源端口 和 目的端口
      传输层和网络层一大重要区别就是传输层指定了数据报发往的应用进程,因此需要端口号标识。

    2. 序号
      当前TCP数据报数据部分的第一个字节的序号。
      我们知道,TCP是面向字节的,它会对发送的每一个字节进行编号,而且不同数据报之间是连续编号的。
      由于本字段4字节,可以给[0,2^32-1]个字节进行编号(大约4G),而且序号循环使用,当发送完2^32-1个字节后,序号又从0开始。
      一般来说,当2^32-1个字节被发送的时候,前面的字节早就发送成功了,因此序号可以循环使用。

    3. 确认号
      表示当前主机作为接收端时,期望接收的下一个字节的编号是多少。
      也表示,当前主机已经正确接收的最后一个字节序号+1。

    4. 数据偏移(报文长度)
      它表明了数据报头部的长度。

    5. 保留字段

    6. 标识符
      TCP有7种标识符,用于表示TCP报文的性质。它们只能为0或1。

      • URG=1
        当URG字段被置1,表示本数据报的数据部分包含紧急信息,此时紧急指针有效。
        紧急数据一定位于当前数据包数据部分的最前面,紧急指针标明了紧急数据的尾部。
        如control+c:这个命令要求操作系统立即停止当前进程。此时,这条命令就会存放在数据包数据部分的开头,并由紧急指针标识命令的位置,并URG字段被置1。

      • ACK=1
        ACK被置1后确认号字段才有效。
        此外,TCP规定,在连接建立后传送的所有报文段都必须把ACK置1。

      • PSH=1
        当接收方收到PSH=1的报文后,会立即将数据交付给应用程序,而不会等到缓冲区满后再提交。
        一些交互式应用需要这样的功能,降低命令的响应时间。

      • RST=1
        当该值为1时,表示当前TCP连接出现严重问题,必须要释放重连。

      • SYN=1
        SYN在建立连接时使用。
        当SYN=1,ACK=0时,表示当前报文段是一个连接请求报文。
        当SYN=1,ACK=1时,表示当前报文段是一个同意建立连接的应答报文。

      • FIN=1
        FIN=1表示此报文段是一个释放连接的请求报文。

    7. 接收窗口大小
      该字段用于实现TCP的流量控制。
      它表示当前接收方的接收窗口的剩余容量,发送方收到该值后会将发送窗口调整成该值的大小。发送窗口的大小又决定了发送速率,所以接收方通过设置该值就可以控制发送放的发送速率。
      发送方每收到一个数据报都要调整当前的发送窗口。

    8. 检验和
      用于接收端检验整个数据包在传输过程中是否出错。

    9. 紧急指针
      用于标识紧急数据的尾部。

    10. 选项字段
      上述字段都是每个TCP头部必须要有的,而选项字段是可选的,且长度可变,最长40字节。
      最常用的选项字段为MMS:最大报文长度。

    TCP三次握手

    title

    PS:TCP协议中,主动发起请求的一端称为『客户端』,被动连接的一端称为『服务端』。不管是客户端还是服务端,TCP连接建立完后都能发送和接收数据。

    起初,服务器和客户端都为CLOSED状态。在通信开始前,双方都得创建各自的传输控制块(TCB)。
    服务器创建完TCB后遍进入LISTEN状态,此时准备接收客户端发来的连接请求。

    第一次握手
    客户端向服务端发送连接请求报文段。该报文段的头部中SYN=1,ACK=0,seq=x。请求发送后,客户端便进入SYN-SENT状态。

    • PS1:SYN=1,ACK=0表示该报文段为连接请求报文。
    • PS2:x为本次TCP通信的字节流的初始序号。
      TCP规定:SYN=1的报文段不能有数据部分,但要消耗掉一个序号。

    第二次握手
    服务端收到连接请求报文段后,如果同意连接,则会发送一个应答:SYN=1,ACK=1,seq=y,ack=x+1。
    该应答发送完成后便进入SYN-RCVD状态。

    • PS1:SYN=1,ACK=1表示该报文段为连接同意的应答报文。
    • PS2:seq=y表示服务端作为发送者时,发送字节流的初始序号。
    • PS3:ack=x+1表示服务端希望下一个数据报发送序号从x+1开始的字节。

    第三次握手
    当客户端收到连接同意的应答后,还要向服务端发送一个确认报文段,表示:服务端发来的连接同意应答已经成功收到。
    该报文段的头部为:ACK=1,seq=x+1,ack=y+1。
    客户端发完这个报文段后便进入ESTABLISHED状态,服务端收到这个应答后也进入ESTABLISHED状态,此时连接的建立完成!

    为什么连接建立需要三次握手,而不是两次握手?
    防止失效的连接请求报文段被服务端接收,从而产生错误。

    PS:失效的连接请求:若客户端向服务端发送的连接请求丢失,客户端等待应答超时后就会再次发送连接请求,此时,上一个连接请求就是『失效的』。

    若建立连接只需两次握手,客户端并没有太大的变化,仍然需要获得服务端的应答后才进入ESTABLISHED状态,而服务端在收到连接请求后就进入ESTABLISHED状态。此时如果网络拥塞,客户端发送的连接请求迟迟到不了服务端,客户端便超时重发请求,如果服务端正确接收并确认应答,双方便开始通信,通信结束后释放连接。此时,如果那个失效的连接请求抵达了服务端,由于只有两次握手,服务端收到请求就会进入ESTABLISHED状态,等待发送数据或主动发送数据。但此时的客户端早已进入CLOSED状态,服务端将会一直等待下去,这样浪费服务端连接资源。

    TCP四次挥手

    title
    TCP连接的释放一共需要四步,因此称为『四次挥手』。
    我们知道,TCP连接是双向的,因此在四次挥手中,前两次挥手用于断开一个方向的连接,后两次挥手用于断开另一方向的连接。

    第一次挥手
    若A认为数据发送完成,则它需要向B发送连接释放请求。该请求只有报文头,头中携带的主要参数为:
    FIN=1,seq=u。此时,A将进入FIN-WAIT-1状态。

    • PS1:FIN=1表示该报文段是一个连接释放请求。
    • PS2:seq=u,u-1是A向B发送的最后一个字节的序号。

    第二次挥手
    B收到连接释放请求后,会通知相应的应用程序,告诉它A向B这个方向的连接已经释放。此时B进入CLOSE-WAIT状态,并向A发送连接释放的应答,其报文头包含:
    ACK=1,seq=v,ack=u+1。

    • PS1:ACK=1:除TCP连接请求报文段以外,TCP通信过程中所有数据报的ACK都为1,表示应答。
    • PS2:seq=v,v-1是B向A发送的最后一个字节的序号。
    • PS3:ack=u+1表示希望收到从第u+1个字节开始的报文段,并且已经成功接收了前u个字节。

    A收到该应答,进入FIN-WAIT-2状态,等待B发送连接释放请求。

    第二次挥手完成后,A到B方向的连接已经释放,B不会再接收数据,A也不会再发送数据。但B到A方向的连接仍然存在,B可以继续向A发送数据。

    第三次挥手
    当B向A发完所有数据后,向A发送连接释放请求,请求头:FIN=1,ACK=1,seq=w,ack=u+1。B便进入LAST-ACK状态。

    第四次挥手
    A收到释放请求后,向B发送确认应答,此时A进入TIME-WAIT状态。该状态会持续2MSL时间,若该时间段内没有B的重发请求的话,就进入CLOSED状态,撤销TCB。当B收到确认应答后,也便进入CLOSED状态,撤销TCB。

    为什么A要先进入TIME-WAIT状态,等待2MSL时间后才进入CLOSED状态?
    为了保证B能收到A的确认应答。
    若A发完确认应答后直接进入CLOSED状态,那么如果该应答丢失,B等待超时后就会重新发送连接释放请求,但此时A已经关闭了,不会作出任何响应,因此B永远无法正常关闭。

    TCP可靠传输的实现

    TCP的可靠性表现在:它向应用层提供的数据是 无差错的、有序的、无丢失的,简单的说就是:TCP最终递交给应用层的数据和发送者发送的数据是一模一样的。
    TCP采用了流量控制、拥塞控制、连续ARQ等技术来保证它的可靠性。

    PS:网络层传输的数据单元为『数据报』,传输层的数据单元为『报文段』,但为了方便起见,可以统称为『分组』。

    停止等待协议(ARQ协议)

    TCP保证其可靠性采用的是更为复杂的滑动窗口协议,但停止等待协议是它的简化版,为了方便理解,这里先介绍停止等待协议。

    AQR协议

    ARQ(Automatic Repeat reQuest)自动重传请求。
    顾名思义,当请求失败时它会自动重传,直到请求被正确接收为止。这种机制保证了每个分组都能被正确接收。停止等待协议是一种ARQ协议。

    停止等待协议的原理

    • 无差错的情况
      A向B每发送一个分组,都要停止发送,等待B的确认应答;A只有收到了B的确认应答后才能发送下一个分组。

    • 分组丢失和出现差错的情况
      发送者拥有超时计时器。每发送一个分组便会启动超时计时器,等待B的应答。若超时仍未收到应答,则A会重发刚才的分组。
      分组出现差错:若B收到分组,但通过检查和字段发现分组在运输途中出现差错,它会直接丢弃该分组,并且不会有任何其他动作。A超时后便会重新发送该分组,直到B正确接收为止。
      分组丢失:若分组在途中丢失,B并没有收到分组,因此也不会有任何响应。当A超时后也会重传分组,直到正确接收该分组的应答为止。
      综上所述:当分组丢失 或 出现差错 的情况下,A都会超时重传分组。

    • 应答丢失 和 应答迟到 的情况
      TCP会给每个字节都打上序号,用于判断该分组是否已经接收。
      应答丢失:若B正确收到分组,并已经返回应答,但应答在返回途中丢失了。此时A也收不到应答,从而超时重传。紧接着B又收到了该分组。接收者根据序号来判断当前收到的分组是否已经接收,若已接收则直接丢弃,并补上一个确认应答。
      应答迟到:若由于网络拥塞,A迟迟收不到B发送的应答,因此会超时重传。B收到该分组后,发现已经接收,便丢弃该分组,并向A补上确认应答。A收到应答后便继续发送下一个分组。但经过了很长时间后,那个失效的应答最终抵达了A,此时A可根据序号判断该分组已经接收,此时只需简单丢弃即可。

    停止等待协议的注意点

    • 每发送完一个分组,该分组必须被保留,直到收到确认应答为止。
    • 必须给每个分组进行编号。以便按序接收,并判断该分组是否已被接收。
    • 必须设置超时计时器。每发送一个分组就要启动计时器,超时就要重发分组。
    • 计时器的超时时间要大于应答的平均返回时间,否则会出现很多不必要的重传,降低传输效率。但超时时间也不能太长。

    滑动窗口协议(连续ARQ协议)

    连续ARQ协议
    在ARQ协议发送者每次只能发送一个分组,在应答到来前必须等待。而连续ARQ协议的发送者拥有一个发送窗口,发送者可以在没有得到应答的情况下连续发送窗口中的分组。这样降低了等待时间,提高了传输效率。

    累计确认
    在连续ARQ协议中,接收者也有个接收窗口,接收者并不需要每收到一个分组就返回一个应答,可以连续收到分组之后统一返回一个应答。这样能节省流量。
    TCP头部的ack字段就是用来累计确认,它表示已经确认的字节序号+1,也表示期望发送者发送的下一个分组的起始字节号。

    发送窗口
    title
    发送窗口的大小由接收窗口的剩余大小决定。接收者会把当前接收窗口的剩余大小写入应答TCP报文段的头部,发送者收到应答后根据该值和当前网络拥塞情况设置发送窗口的大小。发送窗口的大小是不断变化的。
    发送窗口由三个指针构成:

    • p1
      p1指向发送窗口的后沿,它后面的字节表示已经发送且已收到应答。
    • p2
      p2指向尚未发送的第一个字节。
      p1-p2间的字节表示已经发送,但还没收到确认应答。这部分的字节仍需保留,因为可能还要超时重发。
      p2-p3间的字节表示可以发送,但还没有发送的字节。
    • p3
      p3指向发送窗口的前沿,它前面的字节尚未发送,且不允许发送。

    发送者每收到一个应答,后沿就可以向前移动指定的字节。此时若窗口大小仍然没变,前沿也可以向前移动指定字节。
    当p2和前沿重合时,发送者必须等待确认应答。

    接收窗口
    title
    接收者收到的字节会存入接收窗口,接收者会对已经正确接收的有序字节进行累计确认,发送完确认应答后,接收窗口就可以向前移动指定字节。
    如果某些字节并未按序收到,接收者只会确认最后一个有序的字节,从而乱序的字节就会被重新发送。

    连续ARQ的注意点

    1. 同一时刻发送窗口的大小并不一定和接收窗口一样大。
      虽然发送窗口的大小是根据接收窗口的大小来设定的,但应答在网络中传输是有时间的,有可能t1时间接收窗口大小为m,但当确认应答抵达发送者时,接收窗口的大小已经发生了变化。
      此外发送窗口的大小还随网络拥塞情况影响。当网络出现拥塞时,发送窗口将被调小。

    2. TCP标准并未规定未按序到达的字节的处理方式。但TCP一般都会缓存这些字节,等缺少的字节到达后再交给应用层处理。这比直接丢弃乱序的字节要节约带宽。

    3. TCP标准规定接收方必须要有累计确认功能。接收方可以对多个TCP报文段同时确认,但不能拖太长时间,一般是0.5S以内。
      此外,TCP允许接收者在有数据要发送的时候捎带上确认应答。但这种情况一般较少,因为一般很少有两个方向都要发送数据的情况。

    流量控制

    什么是流量控制?
    如果发送者发送过快,接收者来不及接收,那么就会有分组丢失。为了避免分组丢失,控制发送者的发送速度,使得接收者来得及接收,这就是流量控制。

    流量控制的目的?
    流量控制根本目的是防止分组丢失,它是构成TCP可靠性的一方面。

    如何实现流量控制?
    由滑动窗口协议(连续ARQ协议)实现。
    滑动窗口协议既保证了分组无差错、有序接收,也实现了流量控制。

    流量控制引发的死锁
    当发送者收到了一个窗口为0的应答,发送者便停止发送,等待接收者的下一个应答。但是如果这个窗口不为0的应答在传输过程丢失,发送者一直等待下去,而接收者以为发送者已经收到该应答,等待接收新数据,这样双方就相互等待,从而产生死锁。

    持续计时器
    为了避免流量控制引发的死锁,TCP使用了持续计时器。每当发送者收到一个零窗口的应答后就启动该计时器。时间一到便主动发送报文询问接收者的窗口大小。若接收者仍然返回零窗口,则重置该计时器继续等待;若窗口不为0,则表示应答报文丢失了,此时重置发送窗口后开始发送,这样就避免了死锁的产生。

    拥塞控制

    拥塞控制 和 流量控制 的区别?
    1. 拥塞控制:拥塞控制是作用于网络的,它是防止过多的数据注入到网络中,避免出现网络负载过大的情况;
    2. 流量控制:流量控制是作用于接收者的,它是控制发送者的发送速度从而使接收者来得及接收。
    PS:拥塞控制是针对于网络而言的,它是防止往网络中写入太多分组,从而导致网络拥塞的情况;而流量控制是针对接收者的,它是通过控制发送者的发送速度保证接收者能够来得及接收。

    拥塞控制的目的?
    1. 缓解网络压力
    2. 保证分组按时到达

    慢开始算法 和 拥塞避免算法

    • 发送方维护一个发送窗口,发送窗口的大小取决于网络的拥塞情况和接收窗口的大小,发送窗口是动态变化的。
    • 发送方还维护一个慢开始门限
      1. 发送窗口 < 慢开始门限:使用慢开始算法
      2. 发送窗口 > 慢开始门限:使用拥塞避免算法
      3. 发送窗口 = 慢开始门限:使用慢开始算法或拥塞避免算法
    • 算法的具体过程:
      1. 通信开始时,发送方的发送窗口设为1,并发送第一个分组M1;
      2. 接收方收到M1后,返回确认应答,此时发送方发送窗口扩大两倍,并发送M2、M3;(即,发送方每次收到确认应答后,都将发送窗口设为当前值的两倍)
      3. 若发送窗口>慢开始门限,则使用拥塞避免算法,每次收到确认应答后都将发送窗口+1;
      4. 若发送方出现了超时重传,则表明网络出现拥塞,此时:
        a)慢开始门限设为当前发送窗口的一半;
        b)发送窗口设为1;
        c)启用拥塞避免算法;
        PS:发送超时重传时,发送窗口有可能已经超过了慢开始门限,也有可能还没超过;此时不管何种情况,都一律启用拥塞避免算法,并执行上述三步操作!
    • 慢开始算法的作用:慢开始算法将发送窗口从小扩大,而且按指数级扩大,从而避免一开始就往网络中注入过多的分组从而导致拥塞;它将窗口慢慢扩大的过程其实也在探测网络拥塞情况的过程,当发现出现拥塞时,及时降低发送速度,从而减缓网络拥塞。
    • 拥塞避免算法的作用:拥塞避免算法使发送窗口以线性方式增长,而非指数级增长,从而使网络更加不容易发生拥塞。
    • AIMD算法(加法增大乘法减小算法)
      慢开始算法 和 拥塞避免算法 还有个名称叫做『加法增大乘法减小算法』。
      • 加法增加:指的是拥塞避免算法,使得发送窗口以线性的方式增长;
      • 乘法减小:指的是不管当前正使用慢开始算法还是拥塞避免算法,只要发生拥塞时,慢开始门限将会变成当前窗口的一半。

    快重传算法 和 快恢复算法

    • 上述慢开始算法和拥塞避免算法能保证网络出现拥塞时进行相应的处理,而快重传和快恢复是一种拥塞预防的方式,此时网络可能尚未出现拥塞,但已经有拥塞的征兆,因此得作出一些预防措施。
    • 快重传原理:因为TCP具有累计确认的能力,因此接收者收到一个分组的时候不会立即发出应答,可能需要等待收到多个分组之后再同一发出累计确认。但快重传算法就要求,接收者如果接收到一个乱序的分组的话,就必须立即发出前一个正确分组的确认应答,这样能让发送者尽早地知道有一个分组可能丢失。
    • 快恢复原理:当发送者收到同一个分组的三个确认应答后,就基本可以判断这个分组已经丢失了;这时候无需等待超时,直接执行『乘法减小加法增大』:
      1. 将慢开始门限减半;
      2. 将发送窗口减半(不设为1);
      3. 使用拥塞避免算法;

    这里写图片描述

    展开全文
  • 计算机网络传输层网络

    千次阅读 2016-11-26 19:43:02
    介绍传输层是客户程序和服务器程序之间的联络人,...然而,报文仍然需要递交给正确的进程,传输层协议即负责进程到进程的通信。 寻址:端口号在客户-服务器模式中,客户进程和服务器进程有相同的名字,例如,如果要从

    传输层介绍

    传输层是客户程序和服务器程序之间的联络人,是一个进程之间的连接。

    传输层服务

    首先了解一下传输层所提供的服务。

    进程到进程通信

    TCP/IP协议簇的5层模型:
    这里写图片描述

    其中,网络层负责计算机层次的通信(主机到主机通信),网络层协议只把报文传递到目的计算机。然而,报文仍然需要递交给正确的进程,传输层协议即负责进程到进程的通信。
    这里写图片描述

    寻址:端口号

    在客户-服务器模式中,客户进程和服务器进程有相同的名字,例如,如果要从远程机器上获得日期和时间,我们需要在本地主机上运行Daytime客户进程并在远程机器上运行Daytime服务进程。
    操作系统都支持多用户和多程序运行,所以对通信来说,我们必须定义本地主机、本地进程、远程主机以及远程进程。我们使用IP地址来定义本地主机和远程主机,而使用端口号来定义进程。
    在TCP/IP协议簇中,端口号是在0到65535之间的16位整数。
    由于客户进程的生命周期通常很短,所以一般使用临时端口号,推荐值为大于1023。服务器进程必须使用一个熟知端口号
    ICANN将端口分为3类:
    熟知端口:端口号范围:0~1023,由ICANN分配和控制;
    注册端口:端口号范围:1024~49151,可在ICANN注册以防重复;
    动态端口:端口号范围:49152~65535,即不受控制也不需要注册,可以由任何进程使用,是临时或私有端口号。


    在TCP协议簇中的传输层协议需要IP地址和端口号,一个IP地址和一个端口号结合起来称为套接字地址。套接字地址唯一定义了一个进程

    封装与解封装

    为了将报文从一个进程发送到另一进程,传输层协议负责封装与解封装报文,传输层的有效载荷称为分组

    流量控制

    从数据的角度,如果当发送方生产数据项时,无需事先获得消费者的请求就会发送它们,这种传递称为,如果生产者在消费者请求这些数据项之后进行发送,称为

    差错控制

    网络层(IP)是不可靠的,如果应用层需要可靠性,我们需要使传输层变得可靠,要加入差错控制服务。传输层的差错控制负责以下几个方面:
    1. 发现并丢弃被破坏的分组。
    2. 记录丢失和丢弃的分组并重传它们。
    3. 识别重复分组并丢弃它们。
    4. 缓冲失序分组直到丢失的分组到达。

    为了实现以上功能,需要对分组添加序号

    无连接和面向连接服务

    传输层不关心分组的物理路径是否相同,传输层的无连接服务意味着分组之间的独立,面向连接服务意味着依赖。

    传输层协议

    简单协议

    最简单的无连接协议既没有流量控制也没有差错控制。
    发送方的传输层从发送方的应用层接收到报文,从中建立一个分组并发送它;接收方的传输层从网络层接收到这个分组,从分组中提取报文并传递到应用层。发送方一个接一个发送分组,甚至不考虑接收方能否承受。
    UDP是这个最简单协议的轻微改动版。

    停止-等待协议

    停止-等待协议使用流量和差错控制。如果信道又粗又长,那么使用停止-等待协议将非常低效,因为它没有流水线。

    回退N帧协议

    为了提高传输效率(充满管道),当发送端等待接收端的确认信号时,必须传输多个分组。第一个实现这个目标的协议是回退N帧协议。该协议的关键是在于发送端可以发送多个分组,而接收端只能缓冲一个分组。保存被发送分组的副本,直到确认到达。


    事实上,停止-等待协议就是一种特殊的回退N帧协议,只不过发送窗口大小为1。

    选择性重复协议

    回退N帧协议简化了接收方的进程,接收方只记录一个变量,失序的分组被简单地丢弃了。然而实际的下层网络层如果丢失了很多分组,那么这个协议是低效的。因为每当一个分组丢失或被破坏,发送方要重新发送所有未完成分组,即使有些失序分组已经被安全完整地接收了。
    选择性重复协议只是选择性重发分组,即那些确实丢失的分组。

    双向协议:捎带

    使用捎带协议来提高双向协议的效率。当一个分组携带数据从A到B时,它也携带了确认反馈,这些信息确认了来自B的分组已到达;反之也一样。

    因特网传输层协议

    这里只讨论UDP和TCP协议。
    UDP是不可靠的无连接传输层协议,由于在应用中简单高效而被使用,在那些应用中差错控制由应用层进程提供。
    TCP是可靠的面向连接协议。
    当然也有其他协议,如SCTP。

    UDP:用户数据报协议

    UDP只负责提供进程到进程之间的通信,此外没有给IP服务增加任何东西。

    用户数据报

    UDP的分组称为用户数据报,有8字节的固定头部,由4个字段组成,每个字段2字节。
    头两个字段定义了源和目的端口号,第三个字段定义了用户数据报的总长,即头部加数据的长度。16位可以定义的总长度范围是0到65535。最后一个字段可以携带可选校验和。


    UDP适用于这样的应用:他要求简单的请求-响应通信,而无需考虑流量控制和差错控制。对于需要传送成块数据的进程(如FTP),则通常不适用UDP。

    传输控制协议:TCP

    TCP显式定义了连接建立、数据传输以及连接拆除阶段来提供面向连接服务。

    TCP提供的服务

    流传递服务

    与UDP不同,TCP是面向流的协议。TCP建立一种环境,在其中,两个进程好像由一个假想的“管道”连接。

    发送和接收缓冲区

    发送和接收的速度可能不同,所以TCP需要用于存储的缓冲区。实现缓冲区的一种方法是使用以一字节为存储单元的循环数组。

    全双工通信

    TCP提供全双工通信,每个方向TCP都有发送和接收缓冲区,它们能在双向发送和接收段。

    TCP连接

    TCP使用IP服务向接收方传递独立的段,但它控制连接本身。如果一个段丢失了或损坏了,则重新发送它。与TCP不同,IP不知道这个重新发送的过程。
    TCP需要3个过程:连接建立、数据传输和连接终止。

    建立连接(三次握手)

    假设客户端进程想要和服务器进程建立连接,首先,服务器告诉它的TCP,他已准备好接收一个连接。这就称为被动打开
    客户程序发出请求进行主动打开,于是正式开始三次握手。
    这里写图片描述

    1. 客户发送的第一个段是SYN段,其中只有SYN标志被置位,占用一个序号。它是一个控制段,但它不携带数据。
    2. 服务器发送第二个段,两个标志位SYN和ACK置位的段。
    3. 客户发送第三个段,使用ACK标志和确认序号字段来确认收到了第二个段。

    连接终止

    交换数据双方的任一方都可关闭连接,对连接终止的实现有两个方法:三次握手和带有半关闭选项的第四次握手。

    三次握手

    1. 当客户进程接收到一个关闭命令后,客户的TCP发送第一个段:FIN段,其中的FIN位置位。
    2. 服务器TCP发送第二个段:FIN+ACK段。
    3. 客户端发送最后一段:ACK段。

    半关闭

    在TCP中,一端可以停止发送数据后,再继续接收数据。这就是所谓的半关闭

    网络层介绍

    网络层提供主机到主机的通信。

    网络层服务

    分组

    网络层的首要责任一定是分组:在源端将负载封装进网络层分组并且在目的端从网络层分组中解封负载。

    路由

    网络层负责将分组从源端路由到目的端。一个物理网络(多个LAN和多个WAN)是网络和连接它们的路由器的组合,从源端到目的端有多个路由器。网络层负责寻找最佳的路由。这就需要一些特点策略来定义最好的路由。
    网络层通过使用一些路由协议来帮助路由器创建当分组到达时的一致性表格。

    转发

    转发可以定义为当分组到达路由器的一个端口时,路由器所采用的行为。决策表又称转发表,有时称为路由表。当路由器从它所连接的网络接收到一个分组时,它需要将分组转发到另一个所连接的网络上。

    分组交换

    路由器是一个创建了输入端口和输出端口连接的交换机,就像将输入连接到输出让电流流动的开关。
    在网络层, 来自上层的报文被分割成可管理的分组,每个分组被从网络中发送。目的端在将报文传递到上层之前,等待所有属于同一个报文的分组到达。分组交换网络可以使用两个不同的方法来路由分组:数据报方法和虚电路方法。

    数据报方法:无连接服务

    简单来说,一份报文中的分组可能会也可能不会通过同一条通向目的端的路径。

    虚电路方法:面向连接服务

    属于同一报文的所有分组之间存在联系,在报文中的所有数据报被发送之前,应该建立虚连接从而定义数据报的路径。在建立连接之后,数据报可以沿着相同的路径发送。
    分组不仅包含源和目的地址,而且包含流标号,它定义了分组应该经过的路径。

    网络层性能

    网络的性能可以通过延迟、吞吐量、分组丢失来度量。

    延迟

    网络中的延迟可以分为四类:发送延迟、传播延迟、处理延迟和排队延迟。
    发送延迟是指将分组的所有位都发送完需要的时间,分组越长,岩松延迟越长。
    传播延迟是指在传播介质中一个位从A点到B点所消耗的时间,取决于介质的传输速度。
    处理延迟是指路由器从它的输入端接收分组、去除头部、执行差错检测并将分组传递到输出端口所需要的时间。
    排队延迟是指分组在输入和输出队列中的等待时间。

    吞吐量

    网络中任意点的吞吐量被定义为一秒内通过这个点的位的数量,即数据发送速率。吞吐量遵循数据链路中的木桶效应,即由最小吞吐量决定。

    路由器的结构

    元件

    我们可以说路由器有4个元件:输入端口、输出端口、路由处理器以及交换结构。
    这里写图片描述


    输入端口发挥物理层和链路层功能,也包括缓冲队列,用来在分组被发送到交换网络层之前存储它们。


    输出端口发挥和输入端口相反的功能。


    路由处理器发挥网络层功能,目的地址用来找到下一条地址以及输出端口号,同时分组从这个输出端口号发送出去。这个行为称为表格查询


    交换结构负责将分组从输入队列移动到输出队列。

    网络层协议

    当前版本的网络层协议可以被看做是一个主要协议和三个辅助协议。主要协议即因特网协议第四版(IPv4),负责网络层的分组、转发和传递。
    因特网控制报文协议第四版(ICMPv4)帮助IPv4处理一些网络层传递中可能发生的错误;因特网组管理协议(IGMP)用于帮助IPv4多播;在网络层地址映射到链路层地址时,地址解析协议(ARP)用来将网络和数据链路层联合起来。
    IPv4是一个不可靠且无连接的数据报协议——一个尽力而为的传递服务。IPv4是使用数据报的分组交换网的无连接网络。

    IPv4数据报格式

    IP使用的分组称为数据报,它是可变长分组,由两部分组成:头部和数据。头部长度可有20到60个字节组成,包含有与路由选择和传输相关的重要信息。

    版本号

    这4位版本号(VER)字段定义协议的版本,显然是4。

    头部长度

    这4位(HLEN)字段以4字节定义数据报头部的总长度。

    差分服务

    总长

    这个16位字段定义了一个以字节计算的IP数据报总长度,它帮助接收设备知道什么时候分组完全到达。

    标识、标记以及分段偏移

    生存时间

    由于路由协议的某些故障,数据报可能在因特网中循环,一遍又一遍地访问某些网络而没有到达目的端。生存时间字段(TTL)用于控制数据报访问的最大路由器数,超过则丢弃。

    协议

    在TCP/IP中,分组的数据段称为负载,它是另一个协议中的整个分组。例如,IP的数据报可以携带属于任意传输层协议如UDP或TCP的分组。

    头部校验和

    源和目的地址

    选项

    负载

    IPv4数据报安全

    IP协议易受三个安全问题的影响:分组嗅探、分组修改、IP欺骗。

    分组嗅探

    入侵者可能劫持一个IP分组并制作一份拷贝。这类攻击非常难以发现,但可以通过分组加密使得攻击者的企图无效。

    分组修改

    攻击者拦截分组,改变其内容,并将新的分组发送到接收方。可以使用数据完整性机制来发现这类攻击。

    IP欺骗

    一个攻击者可以伪装成其他人并创建一个IP分组,它携带另一个电脑的源地址。

    总的说来,现在可以使用称为IPSec的协议避免以上攻击。

    IPv4地址

    一个IPv4地址是32位地址,它唯一并通用地定义了一个连接在因特网上的主机或路由器。注意,IP地址是连接的地址,如果设备移动到另一个网络,IP地址可能会改变
    IP地址是唯一的,而如果某个设备有两个到因特网的连接,那么它就有两个IP地址,

    地址空间

    地址空间是一个系统能够使用地址的总个数。IPv4使用32位地址,因此地址空间有2的32次方,大于40亿。

    标记法

    IPv4有三种常用的标记法:二进制标记法(基数2)、点分十进制标记法(基数256)以及十六进制标记法(基数16)。
    例如:

    二进制:10000000  00001011  00000011  00011111
    点分十进制标记法:128.11.3.31
    十六进制标记法:800B031F

    地址层次结构

    IPv4地址和邮箱地址一样,是有层次结构的,但是它被分为了两部分:前缀和后缀。前缀定义了网络,后缀定义了代码(设备到因特网的连接)。
    前缀可以是固定长度的,也可以是变长的。定长的前缀称为分类寻址,现在已被废弃;变长的前缀叫作无类寻址。

    分类寻址

    分类寻址是定长前缀的,但还是有3种长度的前缀。(n=8,n=16以及n=24),整个地址空间分为五类(A,B,C,D,E类)。
    但这种设计造成了地址耗尽,大多数地址被浪费了。
    尽管分类寻址被废止了,但它的优势是前缀长度是固有的,不必提供额外信息来提取前缀和后缀。

    无类寻址

    为了补偿地址耗尽,类特权被从分配中消除。
    不像分类寻址,无类寻址中前缀长度是可变的,前缀的长度可以在0到32之间变化。网络的大小与前缀的长度成反比。一个小的前缀意味着较大的网络;一个大的前缀意味着较小的网络。

    前缀长度:斜杠标记法

    如果给出地址,如何找出其前缀的长度呢?由于地址中的前缀长度不是固定的,我们将前缀的长度n添加到地址中,用斜杠来分隔。如:

    12.24.76.8/8
    23.14.67.92/12
    220.8.24.255/25

    其中的8、12、25就是前缀长度。

    从地址中抽取信息

    给定任一地址,通常想要知道:地址的数目、块中首地址和末地址。由于前缀长度n已给出,于是有:

    1. 块中地址的数量通过N=2^(32-n)得出。
    2. 首地址:保持最左n位不变,并将最后侧的(32-n)位全设为0。
    3. 末地址:保持最左n位不变,并将最后侧的(32-n)位全设为1。

    例如:

    //一个无类地址为 167.199.170.82/27
    
    //网络中地址数量是2^(32-27)=2^5=32个地址
    首地址:网络地址

    首地址即网络地址,它用于将分组路由到目的端。网络地址就是网络的标识符。

    块分配

    块地址的分配责任交给一个全球性机构:因特网名称和编号分配组织(ICANN)。然而ICANN通常不向因特网个人用户分配地址,它给ISP分配一大块地址。

    单播路由选择

    在互联网中,如果数据报只发向一个目的端(一对一传递),我们使用单播路由选择,如果数据报发向多个目的端,我们使用多播路由选择,如果数据报应该传递到互联网中的所有主机,我们使用广播路由选择

    一般思想

    在单播路由中,在转发表的帮助下,分组被一跳一跳地从源端路由到目的端。源端和目的端不需要转发表,只有将互联网中网络连接到一起的路由器才需要转发表。
    从源端到目的端有很多条路由,分组必须决定采取哪条路由。
    在下面的讨论中,互联网以带权图的形式表示。图由结点和边的集合表示。

    最小代价路由

    当使用带权图模型表示互联网时,从源路由器到目的路由器的最佳路由就是找到两者之间的最小代价。换言之,源路由器在所有可能的路由中找到代价最小的那条作为到目的路由器的路由。

    最小代价树

    最小代价树以源路由器为根,跨越了整个图,访问了所有其余结点。

    路由选择算法

    距离向量路由选择

    距离向量(邻接表)

    最小代价路由树是从根结点到所有目的结点的最小代价路径的组合,这些路径在图上连接在一起形成树。
    距离向量的名称定义了根节点,索引定义了目的结点,每个单元格的值定义了从根到目的结点的最小代价。
    这里写图片描述
    和最小代价树不同,距离向量没有给出到目的结点的具体路径,而是仅仅给出了到目的结点的最小代价。
    问题在于互联网中的每个结点最初如何创建相应的向量:结点从接口发送一些问候报文并发现临站的身份以及接口到临站的距离,结点把获得的距离插入相应的单元格,从而建立一个简单的距离向量,并且将其他单元格的值设为无限。
    下面,为了向外扩充改进向量,互联网的结点需要通过交换信息相互帮助:在每个结点创建它的向量后,它向临站发送向量的副本。在一个结点从临站接收到一个距离向量后,它使用Bellman-Ford算法来更新距离向量。

    链路状态路由选择

    链路状态路由选择使用链路状态来定义链路(一条边)的特征,链路代表了互联网中的网络。

    链路状态数据库(邻接矩阵)

    每个结点都需要网络的完全图,这意味着它需要直到每条链路的状态,所有链路状态的集合称为链路状态数据库(LSDB),整个互联网只有一个LSDB。LSDB可以使用二维数组(矩阵)来表示,其中每个单元格的值定义了相应链路的代价。
    问题在于如何创建这个LSDB,这可以通过称为泛洪的过程完成。每个结点可以给所有临站(与其直接相连的结点)发送问候报文,来收集每个临站的两条信息:节点的标识以及链路的代价。这两个信息的组合称为LS分组。
    根据LSDB创建最小代价树的算法是迪杰特斯拉算法

    路径向量路由选择

    距离向量路由选择和链路状态路由选择都是基于最小代价目标的,然而在一些例子这个目标不是优先考虑的事情,比如考虑到有些路由的安全性。
    路径向量路由选择不基于最小代价路由,它采用的路由由源端控制决定。

    单播路由选择协议

    这里写图片描述

    互联网结构

    有很多私人通信公司运营的骨干网,他们提供全球连接。骨干网通过对等点连接在一起。
    在较低层次有一些供应商网络使用骨干网来进行全球连接。
    最终是一些使用提供商网络所提供服务的用户网络。
    以上三种实体都可以称为因特网服务提供商或ISP,但分别处于不同的层次。

    分层路由选择

    当今的因特网中的路由选择不能只使用一种协议,理由有两点:扩展性问题和管理问题。
    扩展性问题意味着转发表会非常巨大,在其中寻找目的端会相当耗时。
    管理问题意味着每个ISP需要能控制自己的子网和路由器。
    分层路由意味着将每个ISP看做一个自治系统(AS)。每个AS可以运行满足需要的路由协议,而全局因特网只运行一个全局协议来将所有AS连接到一起。

    多播路由选择

    我们需要区分多播和多个单播。
    多播从源地址开始时是单个分组,这个分组被路由器复制。任何两个路由器之间只有分组的一份副本。
    多个单播中,两个路由器之间可能有多个副本在传递,如一个人给一组人发送电子邮件。
    多播比单薄效率更高,要求带宽小。多播在访问分布式数据库、电话会议、远程学习时得到应用。

    下一代IP:IPv6

    IPv6在增加了IPv4地址空间的同时重新设计了IP分组的格式并修改了一些辅助协议。以下给出了IPv6协议的主要变化:

    • 更大的地址空间。IPv6地址是128位长,而IPv4是32位的。
    • 更好的头部地址。
    • 新的选项。
    • 允许扩展。
    • 支持资源分配。
    • 支持更多的安全性。

    从IPv4到IPv6的过渡

    有三种策略实现新旧协议的平缓过渡:双协议栈、隧道以及头部转换。

    双协议栈

    IETF推荐所有的主机在完全过渡到IPv6前,使用双协议栈。换言之,一个站应该同时运行IPv4和IPv6,直到整个因特网使用IPv6。
    当把分组发送到目的端时,为了确定使用哪个版本,主机要向DNS进行查询,如果DNS返回一个IPv4地址,那么源主机就发送一个IPv4分组;否则发送一个IPv6分组。

    隧道技术

    当两台使用IPv6的计算机要进行通信,但其分组要通过使用IPv4的区域时,就要使用隧道技术。当进入这种区域时,IPv6分组要封装成IPv4分组,当分组离开该区域时,再去掉这个封装。

    展开全文
  • TCP/IP 协议簇中的传输层位于应用层和网络层之间。它为应用层提供服务,并接收来自网络层的服务。... 一、进程到进程的通信 传输层协议的首要任务是提供进程到进程通信( process-to-process communicat...

    TCP/IP 协议簇中的传输层位于应用层和网络层之间。它为应用层提供服务,并接收来自网络层的服务。传输层是客户程序和服务器程序之间的联络人,是一个进程到进程的连接。传输层是TCP/IP 协议簇中的核心;它是因特网上从一点到另一个点传输数据的端到端逻辑传输媒介。

    一、进程到进程的通信

            传输层协议的首要任务是提供进程到进程通信process-to-process communication)。进程是使用传输层服务的应用层实体(运行着的程序)。网络层负责计算机层次的通信(主机到主机通信)。网络层协议只把报文传递到目的计算机。然而,这是不完整的传递。报文仍然需要递交给正确的进程。这正是传输层接管的部分。传输层协议负责将报文传输到正确的进程。


    二、寻址

    1.端口号

            一个远程计算机在同一时间可以运行多个服务器程序,就像许多本地计算机可在同一时间运行一个或多个客户应用程序一样。对通信来说,我们必须定义本地主机、本地进程、远程主机以及远程进程。我们使IP 地址来定义本地主机和远程主机。为了定义进程,我们需要第二个标识符,称为端口号portnumber)。在 TCP/IP 协议簇中,端口号是在 0 65 535 之间的 16 位整数。

           客户程序用端口号定义它自己,这称为临时端口号ephemeral port number)。临时这个词表示短期的short-lived),它之所以被使用是因为客户的生命周期通常很短。为了客户-服务器程序能正常工作,临时端口号推荐值为大于 1 023
    服务器进程必须使用一个端口号定义它自己。但是,这个端口号不能随机选择。TCP/IP 决定使用全局端口号;它们称为熟知
    端口号
    well-known port number)。 两个进程(客户和服务器)一般有相同的名字。

    2.ICANN范围

    • 熟知端口。端口号的范围是 0~1023,由 ICANN 分配和控制。这些是熟知端口号。
    • 注册端口。端口号的范围是 1024~49151ICANN 不分配也不控制。它们可在 ICANN 注册以防重复。
    • 动态端口。端口号的范围是 49152~65535。这一范围内的端口号既不受控制又不需要注册,可以由任何进程使用。它们是临时或私有端口号。


    3.套接字地址

    TCP 协议簇中的传输层协议需要 IP 地址和端口号,它们各在一端建立一条连接。一个 IP 地址和一个端口号结合起来称为 套接字地址 socket address )。

    三、封装与解封装


            封装在发送端发生。当进程有报文要发送,它将报文与一组套接字地址和其他信息一起发送到传输层,这依赖于传输层协议。传输层接收数据并加入传输层头部。因特网中传输层的分组称为用户数据报user datagram)、 segment)或分组packet),这取决于我们使用什么传输层协议。 我们将传输层有效载荷称为分组。

            解封装发生在接收端。当报文到达目的传输层,头部被丢弃,传输层将报文传递到应用层运行的进程。如果需要响应接收到的报文,发送方的套接字地址被发送到进程。

    四、多路复用与多路分解

            每当一个实体从一个以上的源接收到数据项时,称为 多路复用 multiplexing ,多对一);每当一个实体将数据项传递到一个以上的源时,称为 多路分解 demultiplexing ,一对多)。源端的传输层执行复用;目的端的传输层执行多路分解

    五、流量控制

            每当一个实体创建数据项并且有另一个实体消耗它们时,就存在生产速率和消费速率的平衡问题。如果数据项生产比消费快,那么消费者可能被淹没并且可能要丢弃一些数据项。如果数据项生产比消费慢,那么消费者必须等待,系统就会变得低效。流量控制与第一种情况相关。我们需要在消费者端防止丢失数据项。

            当生产者数据项时,消费者可能被淹没并需要相反方向的流量控制,以此来防止丢弃这些数据项。换言之,消费者需要警告生产者停止传递,并且当消费者再次准备好接收数据时通知生产者。

            应用层的发送方进程仅仅是一个生产者。它生产报文块,并把它们推到传输层。发送方传输层有两个作用:它既是消费者也是生产者。它消费生产者推来的报文。它将报文封装进分组并传递到接收方传输层。接收方传输层也有两个作用:它是消费者,消费从发送方那里接收来的分组;它也是生产者,解封装报文并传递到应用层。然而,最后的传递通常是拉传递;传输层等待直到应用层进程请求报文。

    缓冲区

            处理流量控制通常的方式是使用两个缓冲区:一个位于发送方传输层,另一个位于接收方传输层。缓冲区是一组内存单元,它可以在发送端和接收端存储分组。消费者向生产者发送信号从而进行流量控制通信。当发送方传输层的缓冲区已满,它就通知应用层停止传输报文块;当有空闲位置时,它通知应用层可以再次传输报文块。当接收方传输层的缓冲区已满,它就通知发送方传输层停止传输分组;当有空闲位置时,它通知发送方传输层可以再次传输分组。

    六、差错控制

            在因特网中,由于网络层( IP)是不可靠的,如果应用层需要可靠性,我们需要使传输层变得可靠。可靠性可以通过在传输层加入差错控制服务来实现。

    1. 发现并丢弃被破坏的分组。
    2. 记录丢失和丢弃的分组并重传它们。
    3. 识别重复分组并丢弃它们。
    4. 缓冲失序分组直到丢失的分组到达。

    正如传输控制,大多数情况下,接收方传输层管理差错控制,它通过告知发送方传输层存在问题来进行管理。


    1.序号

            差错控制需要发送方传输层知道哪个分组要被重传并且接收方传输层需要知道哪个分组是重复的、哪个分组是失序的。如果分组是编号的,这个就可以实现。

    2.确认

            我们可以发送积极或消极的信号作为差错控制,但是我们只讨论积极信号,这在传输层中最常见。 接收方可以为每一组正确到达的分组发送一个确认( ACK)。接收方可以简单地丢弃被破坏的分组。 发送方如果使用计时器,它就可以发现丢失分组。当一个分组被发送,发送方就开启一个计时器。如果 ACK 在计时器超时之前没有到达,那么发送方重发这个分组。重复的分组可以被接收方默默丢弃。失序的分组既可以被丢弃(被发送方当做丢失报文对待),也可以存储直到丢失的那个分组到来。

    3.流量与差错控制结合

            我们已经讨论过,流量控制要求使用两个缓冲区,一个在发送端另一个在接收端。我们也已经讨论过差错控制要求两端均使用序号和确认号。如果我们使用两个带序号的缓冲区:一个位于发送端,一个位于接收端,那么这两个需要可以结合起来。

    滑动窗口


    由于序号进行模 2m操作,因此一个环可以代表从 0 2m-1 的序号(见图 3-12)。缓冲区由一组片段代表,称为滑动窗口sliding window),它随时占据环的一部分。在发送端,当一个报文被发送,相应的片段就被标记。当有所片段都被标记时,意味着缓冲区满且不能从应用层进一步接收报文。当确认到达时,相应片段被取消标记。如果从窗口开始处有一些连续的片段没有被标记,那么窗口滑过这些相应序号的范围,允许更多的片段进入窗口尾部。

    七、拥塞控制

    在因特网之类的分组交换网络中存在一个重要问题,这就是拥塞congestion)。如果网络中的负载load,即发送到网络的分组数)大于网络的容量(网络可以处理的分组数),那么网络就可能发生拥塞。 拥塞控制congestion control)指的是一种机制和技术,它控制拥塞并将负载保持在容量以内。



    展开全文
  • 1. 物理概述物理的主要任务网络物理(Physical Layer,PH)主要任务为:如何利用传输媒体,为数据链路提供传送和接收二进制比特(bit)流的服务。 物理的具体功能物理协议的具体功能为: 确定与传输...
  • 网络传输层工作原理

    千次阅读 2011-12-27 14:34:11
    第8章 传输层 传输协议(transport protocol)是整个网络体系结构中的关键之一。本章讨论TCP/IP体系中的运输协议UDP和TCP。TCP比UDP复杂得多。最重要的是应弄清端口的概念及TCP的各种机制(如面向连接的可靠服务、...
  • 网络传输层的工作原理

    千次阅读 2016-05-25 16:45:52
    第8章 传输层 传输协议(transport protocol)是整个网络体系结构中的关键之一。本章讨论TCP/IP体系中的运输协议UDP和TCP。TCP比UDP复杂得多。最重要的是应弄清端口的概念及TCP的各种机制(如面向连接的可靠服务、...
  • 网络通信技术基础

    千次阅读 2018-07-21 12:39:38
    在我们日常使用的各种各样的软件,都涉及到一项很关键的技术——网络通信技术。今天我们就从软件开发者的角度来探究一下J网络通信技术。 一、网络通信技术 当我们用在点击下QQ对话框的“发送”按键时,相应的好友...
  • 当前主流的汽车混合网络主要由 CAN、LIN、Flex Ray、MOST...**CAN(Controller Area Network)**是1983年德国BOSCH公司研发的一种共享式双线串行通信总线,最高传输速率为1MBit/s,具有非破坏性仲裁,分布式实时控制...
  • 传输层详解

    万次阅读 2016-01-06 19:08:05
    传输层详解 ①理解TCP的封装和工作原理 ②理解UDP的封装和工作原理 ③了解常用的TCP和UDP端口号 ④对TCP和UDP首部能够进行分析   传输层的作用是什么?传输层实现端到端的连接,端到端是什么概念呢?打个...
  • 出现拥塞时,端点并不了解到拥塞发生的细节,对通信连接的端点来说,拥塞往往表现为通信时延的增加。当然,拥塞控制和流量控制也有相似的地方,即它们都通过控制发送方发送数据的速率来达到控制效果。 2.拥塞控制与...
  • 可能很多人都听说过网络通信的 5 模型,但是可能并不是很清楚为什么需要五模型,五模型负责的任务也有可能经常混淆。下面是网络通信的五模型 说实话,五模型的具体内容还是极其复杂的,不过今天这篇文章...
  • 【计算机网络】第五章:传输层

    千次阅读 多人点赞 2020-01-02 23:28:38
    传输层最大数据包是65535字节,而网络层数据最大只有1480字节。所以需要分段,但是只要分段,就有可能丢包,因为网络层不负责可靠传输。所以要求服务器和客户端保持会话,直到数据传输完成。 ->TCP(Transmission ...
  • 计算机网络--第五章 传输层--课后习题答案

    万次阅读 多人点赞 2020-03-26 20:19:39
    5—01试说明运输在协议栈中的地位和作用,运输通信网络层通信有什么重要区别?为什么运输是必不可少的? 答:运输处于面向通信部分的最高层,同时也是用户功能中的最低,向它上面的应用提供服务 ...
  • OSI七层协议在网络传输中扮演的角色及功能:7、应用层——–电脑的各种数据6、表示层 ——– 处理用户信息的表示问题,如编码、数据格式转换和加密解密5、会话层——–会话管理、会话流量控制、寻址、寻址4、传输层...
  • 传输层网络安全的扫描工具

    万次阅读 2016-11-19 19:54:37
    传输层网络安全的扫描工具 扫描工具 nmap nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦称 fingerprinting)。它...
  • 这是因为网络技术本身就分两个圈子,一个是计算机圈子,另一个是通信圈子,这两个圈子几乎是隔离的,自从教科书上了解到以IP为界将网络分为了资源子网和通信子网之后,很多学计算机的就再也没有接触过底层的传输网,...
  • 无线网络通信技术完全介绍

    千次阅读 2014-09-23 14:25:44
    根据国际上所采用的通信技术种类可将无线传感器网络划分为无线广域网(WWAN)、无线城域网(WMAN)、无线局域网(WLAN)、无线个域网(WPAN)、低速率无线个域网(LR-WPAN)。以下是对各类网络各自常见和常用的通信技术进行...
  • OSI七层模型详解(物理层、数据链路层、网络层、传输层.....应用层协议与硬件)   OSI 七层模型通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯,因此其最主要的功能就是帮助...
  • 一文读懂网络通信技术原理

    千次阅读 2019-02-11 10:05:53
    如何能让大家一起玩耍,就有了初步的网络,其实两台计算机之间通信与两个人打电话之间通信的原理是一样的,普通话属于中国国内人与人之间通信的标准,那如果是两个国家的人交流呢?问题是,你不可能要求一个人/...
  • 传输层概述

    千次阅读 2018-04-02 21:06:33
    传输层有两种协议,TCP(可靠)和UDP(不可靠),运输层在应用程序的端点之间传输应用层报文,端到端层面,传输层负责将应用层的数据分段,提供可靠或者不可靠 的传输,还处理了端到端的差错控制和流量控制问题。...
  • 网络层提供主机之间的逻辑通信机制,传输层提供应用进程之间的逻辑通信机制。 3 Internet 传输层协议 可靠、按序的交付服务(TCP):拥塞控制、流量控制、连接建立 不可靠的交付服务(UDP):基于“尽力而为(Best-...
  • 基于三层网络的音频传输技术

    千次阅读 2015-07-17 22:21:59
    如今的数字传输系统已经相当的成熟,但是仍然有很多的专业现场演出音响系统采用传统的模拟线缆和配线架结构,用模拟线将舞台和调音台、功放等相互连接。...当然我们有很多的成熟的数字传输技术可以使
  • TCP 传输层面试中常问的问题汇总 1. 在开始传输前,需要进行三次握手建立链接 2. 可靠性:在传输过程中,通信双方的协议模块继续进行通信 3. 通信结束后,通信双方都会使用改进的三次握手来关闭链接 如同我们...
  • 博文目录一、传输层传输层协议 二、用户数据报协议(UDP) 三、传输控制协议TCP ...屏蔽了传输网实现技术的差异性,使得应用层在设计各种网络应用系统时,只需要考虑什么样的传输层协议,而不需要考
  • OSI 七模型通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯,因此其最主要的功能就是帮助不同类型的主机实现数据传输 。 完成中继功能的节点通常称为中继系统。在OSI七模型中,处于不同...
  • 计算机网路-传输层详解

    万次阅读 多人点赞 2018-01-13 20:00:56
    一、传输层的服务基本原理 1.多路复用和解复用(分路)技术 复用是指:发送方的不同的应用进程都可以使用同一个传输层协议传送数据;...传输层主要是提供不同主机上的进程之间的逻辑通信(端到端的通信),即使在
  • 介绍了嵌入式TCP/IP协议单片机在网络通信中的数据传输技术。将TCP/IP协议嵌入式单片机中,借助网卡芯片CS8900实现了单片机在局域网内和通过局域网在因特网上的数据传输。用户终端以单片机系统板为媒介,通过网络与远程...
  • 物理通信技术

    千次阅读 2016-09-14 10:39:49
    1、物理是无线传感网通信协议的底层,决定数据的发送和接收,是传感器节点能量消耗的主要部分 2、物理的链路特征 ①通信频率 由于在6GHz要以下频段的波形可以进行很好的整形处理,能较容易的滤除不期望的干扰...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 174,846
精华内容 69,938
关键字:

属于网络传输层通信技术的是