计算机网络---传输层

传输层

  • 1. 简介
  • 2. 传输层协议
    • 2.1 Transmission Control Protocol
      • 2.1.1 TCP协议概念
      • 2.1.2 TCP协议的作用
      • 2.1.3 TCP Header
    • 2.2 User Datagram Protocol
      • 2.1.1 UDP协议概念
      • 2.1.2 UDP协议的作用
      • 2.1.3 UDP Header
  • 3. 传输层的数据传送
    • 3.1 数据从应用程序到传输层
    • 3.2 数据从传输层到应用程序
  • 4. 问题

1. 简介

传输层

传输层是整个网络体系结构中的关键层次之一,主要负责向两个主机中进程之间的通信提供服务。由于一个主机同时运行多个进程,因此传输层具有复用分用功能。传输层在终端用户之间提供透明的数据传输,向上层提供可靠的数据传输服务。传输层在给定的链路上通过流量控制分段/重组差错控制来保证数据传输的可靠性。传输层的一些协议是面向连接的,这就意味着传输层能保持对分段的跟踪,并且重传那些失败的分段。
加粗样式

2. 传输层协议

2.1 Transmission Control Protocol

2.1.1 TCP协议概念

传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的基于字节流的传输层通信协议,由IETF的RFC 793 [1] 定义。
TCP旨在适应支持多网络应用的分层协议层次结构。连接到不同但互连的计算机通信网络的主计算机中的成对进程之间依靠TCP提供可靠的通信服务。TCP假设它可以从较低级别的协议获得简单的,可能不可靠的数据报服务。原则上,TCP应该能够在从硬线连接到分组交换或电路交换网络的各种通信系统之上操作。

2.1.2 TCP协议的作用

当应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,TCP则把数据流分割成适当长度的报文段,最大传输段大小(MSS)通常受该计算机连接的网络的数据链路层的最大传送单元(MTU)限制。之后TCP把数据包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。
TCP为了保证报文传输的可靠,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传
在数据正确性与合法性上,TCP用一个校验和函数来检验数据是否有错误,在发送和接收时都要计算校验和;同时可以使用md5认证对数据进行加密。
在保证可靠性上,采用超时重传捎带确认机制。
在流量控制上,采用滑动窗口协议,协议中规定,对于窗口内未经确认的分组需要重传。
在拥塞控制上,采用广受好评的TCP拥塞控制算法(也称AIMD算法)。该算法主要包括四个主要部分:
(1)慢启动
每当建立一个TCP连接时或一个TCP连接发生超时重传后,该连接便进入慢启动阶段。进入慢启动后,TCP实体将拥塞窗口的大小初始化为一个报文段,即:cwnd=1。此后,每收到一个报文段的确认(ACK),cwnd值加1,即拥塞窗口按指数增加。当cwnd值超过慢启动阐值(ssthresh)或发生报文段丢失重传时,慢启动阶段结束。前者进入拥塞避免阶段,后者重新进入慢启动阶段。
(2)拥塞避免
在慢启阶段,当cwnd值超过慢启动阐值(ssthresh)后,慢启动过程结束,TCP连接进入拥塞避免阶段。在拥塞避免阶段,每一次发送的cwnd个报文段被完全确认后,才将cwnd值加1。在此阶段,cwnd值线性增加。
(3)快速重传
快速重传是对超时重传的改进。当源端收到对同一个报文的三个重复确认时,就确定一个报文段已经丢失,因此立刻重传丢失的报文段,而不必等到重传定时器(RTO)超时。以此减少不必要的等待时间。
(4)快速恢复
快速恢复是对丢失恢复机制的改进。在快速重传之后,不经过慢启动过程而直接进入拥塞避免阶段。每当快速重传后,置ssthresh=cwnd/2、cwnd=ssthresh+3。此后,每收到一个重复确认,将cwnd值加1,直至收到对丢失报文段和其后若干报文段的累积确认后,置cwnd=ssthresh,进入拥塞避免阶段。

2.1.3 TCP Header

计算机网络---传输层_第1张图片
源端口和目的端口(Source Port and Destination Port)

源端口和目的端口各占16位,即2Byte,告知主机该报文段来自哪里(Source Port)以及传给哪个上层协议或者应用程序(Destination Port)。
进行TCP协议通信时,客户端通常使用系统自动选择的临时端口号,而服务器则使用知名端口号(比如DNS协议使用端口53,HTTP协议使用端口80,这些端口可在/etc/services文件中找到)。

32位序号(Sequence Number)

一次TCP通信,从TCP建立连接到断开的过程中,某个传输方向上的字节流的每个字节的编号。假设主机A和主机B进行TCP通信,A发送给B的第一个TCP报文段中,序号值被系统初始化为某个随机值ISN(Initial Sequence Number,初始序号值),那么在A到B的传输方向上,后续的TCP包文断中的序号值被系统设置成ISN加上该报文段所携带数据的第一个字节在整个字节流中的偏移Offset。例如,在某个TCP报文段传送的数据是字节流中的第1025~2048字节,那么该报文段的序号值就是ISN+1025,另外一个传输方向上(B到A)的TCP报文段的序号值也具有相同的含义。

32位确认号(Acknowledgement Number)

用作对另一方发送的TCP报文段的响应。其值是收到的TCP报文段的序号值加1。假设主机A和主机B进行TCP通信,那么A发送出的TCP报文段不仅携带自己的序号,而且包含对B发送来的TCP报文段的确认号。反之,B发送的TCP报文段也同时携带自己的序号和对A发送来的报文段的确认号。

4位头部长度(Header Length)

标识改TCP头部有多少个32bit(4Byte)。因为4位最大能标识15,所以TCP头部最长是60字节。TCP有20字节的固定首部字节。

6位标志位

URG标志,表示紧急指针(urgent pointer)是否有效。
ACK标志,表示确认号是否有效。我们称携带ACK标识的TCP报文段为确认报文段。
PSH标志,提示接收端应用程序应该立即从TCP接收缓冲区中读走数据,为接收后续数据腾出空间(如果应用程序不将接收到的数据读走,它们就会一直停留在TCP接收缓冲区中)。
RST标志,表示要求对方重新建立连接。我们称携带RST标志的TCP报文段为复位报文段。
SYN标志,表示请求建立一个连接。我们称携带SYN标志的TCP报文段为同步报文段。
FIN标志,表示通知对方本端要关闭连接了。我们称携带FIN标志的TCP报文段为结束报文段。

16位窗口大小(Window Size)

是TCP流量控制的一个手段。这里说的窗口,指的是接受通告窗口(Receiver Window ,RWND)。它告诉对方本端的TCP接收缓冲区还能容纳多少字节的数据,这样对方就可以控制发送数据的速度。

16位校验和(TCP Check Sum)

由发送端填充,接收端对TCP报文段执行CRC算法以检验TCP报文段在传输过程中是否损坏。注意,这个校验不仅包括TCP头部,也包括数据部分。这也是TCP可靠传输的一个重要保障。

16位紧急指针(urgent pointer)

是一个正的偏移量。它和序号字段的值相加表示最后一个紧急数据的下一字节的序号。因此,确切地说,这个字段是紧急指针相对当前序号的偏移,不妨称之为紧急偏移。TCP的紧急指针是发送端向接收端发送紧急数据的方法。

TCP头部选项

TCP头部的最后一个选项字段(options)是可变长的可选信息。这部分最多包含40字节,因为TCP头部最长是60字节(其中还包含前面讨论的20字节的固定部分)。典型的TCP头部选项结构如下图所示。
请添加图片描述
选项的第一个字段kind说明选项的类型,有的TCP选项没有后面的两个字段,仅包含1字节的kind字段。第二个字段length执行该选项的总长度,该长度包括kind字段和length字段占据的2字段。第三个字段info是选项的具体信息。常见的TCP选项有7种,如下图:
计算机网络---传输层_第2张图片

2.2 User Datagram Protocol

2.1.1 UDP协议概念

2.1.2 UDP协议的作用

2.1.3 UDP Header

3. 传输层的数据传送

3.1 数据从应用程序到传输层

3.2 数据从传输层到应用程序

4. 问题

4.1 面向连接和无连接服务有什么区别?

面向连接服务是指当通信双方在通信前首先建立连接,通信过程中连接一直保持,通信完毕后会释放连接。TCP就是面向连接的传输协议,向上提供可靠的逻辑信道。
无连接服务是指通信双方在通信时无需建立连接,发送方直接将信息发送到网络中,只是尽力交付信息。UDP是无连接的传输协议,向上提供的则是不可靠的逻辑信道。

你可能感兴趣的:(计算机网络,网络,tcp/ip,网络协议)