计算机网络Computer Networking(四、传输层)

Mar 9, 2017


参考来源:计算机网络南开大学ppt(咦,好像不是NKU原创的,那么究竟是谁原创的呢。。。。

这一节是传输层,按道理来讲应该是应用层,然而应用层的课我睡过去了,所以要写的话还得多复习复习,而传输层内容比较少,正好可以在复习传输层的时候一起把应用层的后续内容给补上。

名词解释

传输层(transport layer): 功能为:1.进程到进程,端到端通信。 2.运输层向它上面的应用层提供服务。

端口(port): 端口用一个16位端口号(port number)表示

端口号(port number): 16位,数值在0-1023为公认端口。1024-65535为应用程序端口

UDP(User datagram protocol): 用户数据报协议

TCP(Transport Control Protocol): 传输控制协议

报文(message): 网络中交换与传输的数据单元,即站点一次性要发送的数据块。包含了将要发送的完整的数据信息,长短很不一致,长度不限且可变。

报文段(segment): 指TCP/IP协议网络传输过程中,起着路由导航,查询各个网络路由网段,IP地址,交换协议等IP数据包,起着导航路由功能。

UDP协议特点(Application Layer):

  • 无连接: 源端和终端不建立连接,当它想传送时就简单的去抓去来自应用程序等数据,并尽可能快的把它扔到网络上。在发送端,UDP传送数据的速度仅仅受应用程序生成数据的速度,计算机的能力和传输带宽的限制,在接收端,UDP把每个消息段放到队列中,应用程序每次从队列中读取一个消息段。
  • 不需要维护连接状态: 传输数据不建立连接,不需要维护连接状态,包括收发状态等,因此一台服务机可以同时向多个客户机传输相同的信息。
  • 包头很短:UDP信息包的包头很短,只有8个字节,相比TCP的20个字节信息包的额外开销少。
  • 不受拥塞控制调节:吞吐量不受拥塞控制算法调节,只受应用软件生成数据的速率,传输带宽,源端和终端主机性能的影响。
  • 使用”最大努力交付”(best effort):不保证可靠交付,因此主机不需要维持复杂的链接状态表。
  • 面向报文:发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付给IP层。既不拆分,也不合并,而是保留这些报文的边界,因此,应用程序需要选择合适的报文大小。

校验和(checksum): 用来检查传输的报文是否有错。 校验和计算方式:

  • 将【伪首部】添加到UDP上
  • 计算初始的时候需要将校验和字段添零
  • 把所有位划分为16位的字。
  • 将所有16位的字相加,遇到进位就将高于16字节的进位部分的值加到最低位上
  • 每位取反即得到checksum

TCP协议特点:

  • 数据单位协议是TCP报文段,字节流。
  • 提供可靠的,面向连接的服务。
  • 每一条TCP连接只能有两个断电,不提供广播或多播服务。(UDP可以)
  • 信息包的头部大:有20字节,
  • 全双工信道。

可靠传输原则(principles of reliable data transfer, rft):没有损坏(no corrupted), 没有丢失(no loss), 合适的顺序(in proper order)

ARQ(Automatic Repeat reQuest): 自动重传请求。

停止等待协议(Stop-and-wait Protocol):

  • 超时重传
  • 必须暂时保留已发送的分组的副本。
  • 分组和确认分组都必须进行编号。
  • 超时计时器
  • 自动重传请求ARQ
  • 接收方不需要请求发送方重传某个出错的分组。
  • 优点:简单。缺点:信道利用率太低。

连续ARQ协议:

  • 发送方维持发送窗口,收到一个确认后,发送窗口向前滑动。
  • 接收方一般采用累计确认的方式,表示,到这个分组为止的所有分组都已正确收到了。

流控制(flow control): 让发送方的发送速率不要太快,既要让接收方来得及接收,也不要使网络发生拥塞。

信号(channel): 在两点之间用于收发信号的单向或双向通路。

传输层概述

传输层(Transport Layer)是OSI中最重要,最关键的一层,是唯一负责总体的数据传输和数据控制的一层,传输层提供进程到进程的,端到端的交换数据的机制,向它上面的应用层提供通信服务。

两个主机之间通信实际上就是两个主机中的应用进程互相通信,应用进程之间的通信又称端到端的通信,传输层为【应用进程之间】提供【端到端】的逻辑通信。

进程逻辑通信:

A主机【应用进程1】将数据给传输层端口,然后传输层给予其端口间的通信,于是主机B的端口可以收到数据并且发给应用层中的【应用进程2】

端口

如果把IP地址比作房子,端口就是出入这间房子的门,真正的房子只有几个门,但是一个IP地址的端口可以有0-65535个,端口是用端口号来标记的,范围再0-65535.

引入目的:

Internet上,各个主机之间通过TCP/IP协议发送和接收数据包,各个数据包根据其【目的主机的「ip地址」】来进行互联网络中的路由选择,把数据包顺利的传递给目的主机。大多数操作系统都支持多进程同时进行,那么目的主机应该把接收到的数据包传送给众多同时运行的进程中的哪一个呢?显然我们还需要引入一个「标识符」一样的东西,就是【端口】。

操作系统会把那些有需求的进程分配协议端口(protocol port),也就是端口,每个协议端口由一个正整数标识,比如100,200,300这样的。当目的主机接受到了数据包以后呢,根据报文首部的目的端口号,把数据发送到相应的端口,于是相应端口的那个应用程序就会接受到数据并且等待下一波数据的到来。

UDP

特点:

  • 数据单位协议是UDP报文或用户数据报。
  • 传输数据之前不需要先建立连接。
  • 不需要给出确认(无连接)(best effort)
  • 不用拥塞控制。
  • 无连接: 源端和终端不建立连接,当它想传送时就简单的去抓去来自应用程序等数据,并尽可能快的把它扔到网络上。在发送端,UDP传送数据的速度仅仅受应用程序生成数据的速度,计算机的能力和传输带宽的限制,在接收端,UDP把每个消息段放到队列中,应用程序每次从队列中读取一个消息段。
  • 不需要维护连接状态: 传输数据不建立连接,不需要维护连接状态,包括收发状态等,因此一台服务机可以同时向多个客户机传输相同的信息。
  • 包头很短:UDP信息包的包头很短,只有8个字节,相比TCP的20个字节信息包的额外开销少。
  • 不受拥塞控制调节:吞吐量不受拥塞控制算法调节,只受应用软件生成数据的速率,传输带宽,源端和终端主机性能的影响。
  • 使用”最大努力交付”(best effort):不保证可靠交付,因此主机不需要维持复杂的链接状态表。
  • 面向报文:发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付给IP层。既不拆分,也不合并,而是保留这些报文的边界,因此,应用程序需要选择合适的报文大小。

报文段格式:

头只有8个字节,包括源端口号,目的端口号,其他部分(长度,校验和)

image

所以UDP专属格式如下:

image

校验和

(等待补充…)