传输层
传输层作用是什么?第二章学习过,传输层是实现端到端的连接,端到端是什么概念呢?比如:一个人用QQ聊天,网络层识别IP地址,能够将信息发送到正确的主机,而主机应该使用什么应用协议接收这个信息呢?这个功能就需要传输层完成。
传输层主要有TCP和UDP协议。
传输层概述
传输层的功能
1:网络层协议只提供了点到点的连接,而传输层协议提供一种端到端的服务,即应用进程之间通信。
2:网络层协议提供不可靠,无连接和尽力投递的服务,因此,如果对于可靠性要求很高的上层协议,就需要在传输层实现可靠性保障。
传输层协议主要有
TCP (Transmission Control Protocol)
UDP (User Datagram protocol )
TCP即传输控制协议,是一个可靠的、面向连接的协议。它允许网络间两台主机之间无差错的信息传递,TCP协议还进行流量控制,以避免发送过快而发生拥塞。不过这一切对用户都是透明的。
UDP即用户数据报协议,它采用无连接的方式传送数据,也就是说发送端不关心发送数据是否到达目标主机,数据是否出错等,收到数据主机也不会告诉发送方是否收到了数据,它的可靠性由上层协议来保障。
这两个协议针对不同网络环境实现数据传输。各有优缺点,面向连接的TCP 协议效率较低,但可靠性高,适用于网络链路好或可靠性要求高的环境,UDP 面向非连接,不可靠,所以效率极高,常用语一些实时业务,也用于一些对于差错不敏感的应用。
TCP协议
它支持多种网络应用程序,TCP对下层服务没有多少要求,它假定下层只能传送不可靠的数据包服务,它可以在多种硬件构成的网络上运行。
TCP工作原理
TCP的封装格式
连接与断开
流量控制
拥塞控制
差错控制
计时器
TCP封装格式
TCP是面向连接的可靠协议,TCP协议为实现可靠传输而提供了一系列方法和手段。
TCP的数据段采取编号的方式保证数据正确顺序。
TCP数据段被封装在IP数据包中来完成传输,而IP数据包经过的路径有可能不同,那么IP数据包到达时可能会失去原有顺序,因而到达的TCP数据段也可能会失序,为了解决,TCP对数据段进行编号,对接收到的数据进行重新排序,然后正确的顺便交给应用程序。其次,由于到达的IP数据包可能发生重复,TCP 接收端必须有丢弃重复数据的功能。
TCP连接的每一方都有固定大小的缓冲空间,这就要求TCP发送端只能发送接收端缓冲区能接收下的数据,这防止较快的主机导致较慢的主机缓冲区溢出。
端口号是由发送方进程产生的随机数,它唯一地标识了发送端的一个进程。
16-31 这16位目标端口号,它对应的是接收端的进程,接收端收到数据段后,根据这个端口号来确定把数据送给那个应用程序的进程。这样才能保证数据到达正确的地方。
第2行是32位的序列号,提供0-2的32次方-1范围内的一个数字,TCP从应用程序取得数据后,会根据实际传输能力把数据划分成不同的数据段。TCP用这个数字来给数据段打上标记,当数据到达目的后,接收端会按照这个序列号把数据重新排列,保证数据正确性
3行是32位确认序列号,它提供0-2的32次方-1范围内的一个数字。被分成许多数据段的数据虽然被做了标记,但不能保证这当中的所有段都会到达目的地,然后对接收端来讲,只要有一个段没接收到,就不能保证数据的正确性,使用确
认号可以更好的解决这个问题。
4行分为4个部分
1:4位首部长度,可以确定首部数据结构字节长度
2:6个保留位,作为今后扩展功能用,现在还没有使用到。
3:6个控制位,这6位有很重要的作用,TCP连接、传输和断开都是受这6个控制位的指挥。
GUR:紧急指针有效位,它和第5行的16位紧急指针配合使用,当URG=1时,TCP根据16位紧急指针确定紧急数据的最后一个字节的位置。这样接收端就可以优先准确快速地获取紧急数据,确保数据的即使到达。
ACK:只有当ACK=1时确认序列号字段才有效。当ACK=0时,确认号无效。PSH:标志位为1时要求接收方尽快将数据段送达应用层,这个标志位是为了加快特殊数据的处理速度。
PST:值为1时通知重新建立TCP连接。
SYN:同步序列号。TCP需要建立连接时将这个位置为1.
FIN:发端完成发送任务位,当TCP完成数据传输需要断开连接时,提出断开连接的一方将这个位置为1。
第4部分是16位的窗口大小,说明本地可接收数据段的数目。
第5行中的16位校验和是用来做差错控制的。发送到接收校验数据的完整性。第5行中的16位紧急指针和URG配合使用,当URG=1时有效。用来说明紧急数据的末尾字节的位置。
第6行是可选项。一般情况下没有可选项。
第7行是数据。
一个TCP连接不仅需要端口,还需要IP地址来确定通信的主机。IP首部中的发送端IP地址加上发送端端口号就形成了连接的发送端;目的端IP地址再加上接收端端口号就确定连接的接收端。这样就唯一的确定了一个TCP连接。在TCP/IP协议中,TCP协议是基于IP协议的。IP协议是对应于网络层的协议,他是一个不可靠的协议。TCP协议的可靠性保证给IP协议提供了可靠的环境。从而使得IP协议可以不考虑传输的可靠性,专注于网络层的功能。这也是协议分层的初衷,TCP被认为是一种流式传输层服务,表示TCP发送端从应用程序接收到字符流,并从这个流中提取适当的长度创建数据段,然后将其发送到网络上,TCP接收端则接收数据段,从中提取数据,若没有按序号到达还要对其进行排序。并将作为字符流交付给接收端应用程序,这样就完成了数据的传输。
为了进行流式交付,发送TCP和接收TCP都要利用缓冲,发送TCP使用发送缓冲来存储从发送应用程序截取的数据。发送应用程序交付数据的速率是它产生数据的速率。例如:使用网络登录。远程控制主机,用户在键盘上输入的数据就是逐个字符地交付给TCP的发送端的。
TCP的连接与断开
TCP是一个面向连接的服务,也是说在数据通信之前,发送端与接收端要先