之前笔记中所了解到的物理层、数据链路层以及网络层它们共同解决了将主机通过异构网络互联起来所面临的问题,实现了主机到主机的通信。

真正实体是位于通信两端主机中的进程。
端到端协议。
运输层向高层用户屏蔽了下面网络核心的细节(如网络拓扑、所采用的路由选择协议等),它使应用进程看见的就好像是在两个运输层实体之间有一条端到端的逻辑通信信道。
两种不同的运输协议,即面向连接的TCP和无连接的UDP,这两种协议就是本章要讨论的主要内容。
PID来标志。端口号来区分应用层的不同应用进程。16比特表示, 取值范围0~65535; 没有联系的。 复用和接收方的分用
运输层熟知端口号
UDP和TCP是TCP/IP体系结构运输层中的两个重要协议

数据传输得更快一些。流量控制(flow control)就是让发送方的发送速率不要太快,要让接收方来得及接收。滑动窗口机制可以很方便地在TCP连接上实现对发送方的流量控制。


动态变化。 
拥塞窗口作为发送窗口swnd,即swnd= cwnd。ssthresh状态变量:
cwnd < ssthresh时,使用慢开始算法:cwnd > ssthresh时,停止使用慢开始算法而改用拥塞避免算法;cwnd = ssthresh时,既可使用慢开始算法,也可使用拥塞避免算法。

超时重传时间的选择是TCP最复杂的问题之一,具体选择如下图:
RFC6298建议使用下式计算超时重传时间RTO:
字节为单位的滑动窗口来实现可靠传输
一样大。累积确认和捎带确认机制TCP是面向连接的协议,它基于运输连接来传送TCP报文段。
TCP运输连接的建立和释放是每一次面向连接的通信中必不可少的过程。
(1) TCP运输连接的三个阶段
1️⃣建立TCP连接
⬇
2️⃣数据传送
⬇
3️⃣释放TCP连接

TCP的运输连接管理就是使运输连接的建立和释放都能正常地进行。
(2) TCP的连接建立要解决的三个问题
1️⃣使TCP双方能够确知对方的存在;
2️⃣使TCP双方能够协商一些参数(如最大窗口值、是否使用窗口扩大选项和时间截选项以及服务质量等);
3️⃣使TCP双方能够对运输实体资源(如缓存大小、连接表中的项目等)进行分配。
(3) TCP的连接建立方式
“三报文握手”建立连接
“四报文挥手”来释放连接
可靠传输,TCP采用了面向字节流的方式。
一部分或全部字节并给其添加一个首部使之成为TCP报文段后进行发送。TCP报文段由首部和数据载荷两部分构成;它首部中各字段的作用。
按照图中从上到下,从左到右的顺序,各字段的相关介绍如下:
1️⃣第一行(line 1)
源端口:占16比特,
写入源端口号,用来标识发送该TCP报文段的应用进程。 目的端口:占16比特,写入目的端口号,用来标识接收该TCP报文段的应用进程。
2️⃣第二行(line 2)
序号:占32比特,取值范围[0,2-1],序号增加到最后一个后,下一个序号就又回到0。
3️⃣第三行(line 3)
确认号:占32比特,取值范围[0,2-1],确认号增加到最后一个后,下一个确认号就又回到0。 确认标志位ACK:取值为1时确认号字段才有效;取值为0时确认号字段无效。
4️⃣第四行(line 4)
数据偏移:占4比特,并以
4字节为单位。。用来指出TCP报文段的数据载荷部分的起始处距离TCP报文段的起始处有多远。这个字段实际上是指出了TCP报文段的首部长度。 保留:占6比特,保留为今后使用,但目前应置为0。 同步标志位SYN:在TCP连接建立时用来同步序号。 复位标志位RST:用来复位TCP连接。 推送标志位PSH:接收方的TCP收到该标志位为1的报文段会尽快上交应用进程,而不必等到接收缓存都填满后再向上交付。 紧急标志位URG:取值为1时紧急指针字段有效;取值为0时紧急指针字段无效。 窗口:占16比特,以字节为单位。指出发送本报文段的一方的接收窗口。
5️⃣第五行(line 5)
校验和:占16比特,检查范围包括TCP报文段的
首部和数据载荷两部分。在计算校验和时,要在TCP报文段的前面加上12字节的伪首部。 紧急指针:占16比特,以字节为单位,用来指明紧急数据的长度。
6️⃣第六行(line 6)
选项(长度可变): 最大报文段长度MSS选项:
TCP报文段数据载荷部分的最大长度。 窗口扩大选项:为了扩大窗口(提高吞吐率)。 选择确认选项 时间截选项: ①用来计算往返时间RTT②用于处理序号超范围的情况,又称为防止序号绕回PAWS。 填充:由于选项的长度可变,因此使用填充来确保报文段首部能被4整除(因为数据偏移字段,也就是首部长度字段,是以4字节为单位的)