传输层的功能:

1.传输层提供进程和进程之间的逻辑通信,靠套接字Socket=(主机IP地址,端口号)找到应用进程。
2.传输层对收到的报文进行差错检测。
3.传输层的两种协议
面向连接的传输控制协议TCP:传送数据之前必须建立连接,数据传送结束后要释放连接。不提供广播或多播服务。由于TCP要提供可靠的面向连接的传输服务,因此不可避免增
加了许多开销:确认、流量控制、计时器及连接管理等。可靠,面向连接,时延大,适用于大文件。
(1)TCP是面向连接(虚连接)的传输层协议。
(2)每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的。
(3)TCP提供可靠交付的服务,无差错、不丢失、不重复、按序到达。
(4)TCP提供全双工通信。
{
发送缓存  : 准备发送的数据&已发送但尚未收到确认的数据
接收缓存  : 按序到达但尚未被接受应用程序读取的数据&不按序到达的数据
}

TCP报文段


    1.源端口&目的端口 各占2字节(tcp的分用功能以端口实现)

    2.序号:在一个TCP连接中传送的字节流中的每一个字节都按顺序编号,本字段表示tcp数据段发送的第一个字节的序号

    3.确认号:期望收到对方下一个报文段的第一个数据字节的序号。若确认号为N,则证明到序号N-1为止的所有数据都已正确收到

    4.数据偏移(首部长度):TCP报文段的数据起始处距离TCP报文段的起始处有多远,以4B位单位,即1个数值是4B。


TCP连接管理

TCP连接的建立采用客户服务器方式,主动发起连接建立的应用进程叫做客户,而被动等待连接
建立的应用进程叫服务器

假设运行在一台主机(客户)上的一个进程想与另一台主机(服务器)上的一个进程建立一条连接,客户应用
进程首先通知客户TCP,他想建立一个与服务器上某个进程之间的连接,客户中的TCP会用以下步骤与服务器
中的TCP建立一条TCP连接

ACK
==1 表示确认号字段有效(连接建立后,传输的报文段都应该置为1)
==0 确认号无效

SYN
为1表示这是连接请求或是连接接受请求,用于创建连接和使顺序号同步
当 syn=1&ack=1,表明这是一个连接请求报文段

FIN
==1 表示发送方没有数据要传输了,要求释放连接


(三次握手)





(四次挥手)

参与一条TCP连接的两个进程中的任何一个都能终止该连接,连接结束后,主机中的“资源”(缓存和变量)将被释放。


可靠传输:
TCP实现可靠传输的机制(校验,序号,确认,重传)
TCP的发送方在规定的时间内没有收到确认就要重传已发送的报文段
流量控制:
让发送方慢点,要让接收方来得及接收。
TCP利用滑动窗口机制实现流量控制:
在通信过程中,接收方根据自己接收缓存的大小,动态地调整发送方的发送窗口大小,发送方的发送窗口取接收窗口rwnd和拥塞窗口cwnd
的最小值(拥塞窗口:发送方根据自己估算的网络拥塞程度而设置的窗口值,反映网络当前容量)。

拥塞控制:
出现拥塞的条件:
对资源需求的总和 > 可用资源;网络中有许多资源同时呈现供应不足,网络性能变坏网络吞吐量将随输入负荷增大而下降

拥塞控制的四种方法
慢开始、拥塞避免、快重传、快恢复;

无连接的数据报协议UDP:传送数据之前不需要建立连接,收到UDP报文后也不需要给出任何确认。不可靠,无连接,时延小,适用于小文件。