TCP/IP体系中最重要的一层:运输层 概述
(1)运输层中最重要的两个协议:TCP协议 和 UDP协议
(2)两个主机的通信实际是两个主机 应用进程之间的通信
(3)运输层有一个非常重要的功能:复用 和 分用
(4)网络层和运输层之间有一个明显的差别:网络层 是为主机之间提供逻辑通信,
运输层 为应用进程之间提供端到端的逻辑通信
(5)TCP:传输控制协议UDP:用户数据报协议TCP/IP体系中,运输层根据使用TCP还是UDP,基本数据单元分别为 TCP报文段 或者 UDP用户数据报
(6)由于TCP是面向连接提供可靠运输服务,因此不开避免的增加了许多开销,比如:确认、流量控制、计时器、连接管理
(7)端口:16位来表示,为了标志本计算机应用层各个进程和运输层交互时的层间接口
因特网通信方式:客户/服务器方式
(1)服务器端使用的端口号: 熟知端口号(0-1023):这一类互联网是可以查到的
登记端口号(1024-49151):为没有熟知端口号的应用程序使用,按照规定进行登记
(2)客户端使用的端口号: 又叫短暂端口号(49152-65535)仅在客户进程运行时才动态选择,通信结束可由其他应用进程使用
传输控制协议:TCP概述
1、TCP协议特点:面向连接,端到端通信,可靠交付,全双工
(1) TCP连接:TCP 连接的端点是套接字,那何为套接字呢? 套接字 socket={IP地址:端口号}
每一条TCP连接唯一地被通信两端的两个端点(即两个套接字)所确定
2、可靠传输的工作原理
(1) 停止等待协议
收到确认之后才会发送下一个分组,否则超时重传
自动重传请求(ARQ),如果分组出错,不需要主动请求重发;
(2)连续ARQ协议
滑动窗口协议是TCP精华所在:可以连续发送多个分组,每收到一个分组的确认,就会将发送窗口向前移动一个位置
3、TCP报文段:分为 首部 和 数据 两部分,理解TCP首部各字段的作用才能真正掌握TCP工作原理
TCP可靠传输的实现
1、(1)引入以字节为单位的滑动窗口:
B只能对按序收到的数据中的最高序进行确认,因此上图中的确认号仍然为31
(2)窗口和缓存的关系
2、超时重传的时间选择
重传的概念容易理解,但是重传的时间选择确实TCP最复杂的问题之一,知道就可以了
3、选择确认SACK
选择确认就是在报文段无差错,只是未按序到达,则设法只传送缺少的数据而不需要重传已经正确到达接收方的数据。
TCP流量控制
1、利用滑动窗口实现流量控制
所谓流量控制就是让发送方发送速率不要太快,要让接收方来得及接收。
2、必须考虑传输效率
TCP拥塞控制
所谓拥塞控制就是防止过多的数据注入到网络中,这样可以使网络中的路由器和链路不会过载
(1)几种拥塞控制方法: 慢开始,拥塞避免,快重传和快恢复
TCP运输连接管理
运输连接包含三个部分:建立连接,数据传送,释放连接
运输连接的管理就是是运输连接的建立和释放都能正常的进行
1、TCP运输连接的建立过程:(称为三次握手,或者叫三次联络)
步骤一:TCP服务器进程首先创建传输控制模块TCB,处于接听状态(listen),准备接受客户进程的连接请求;
步骤二:TCP客户进程也需要创建传输控制模块TCB,然后向服务器进程发出连接请求报文段,此时客户进程处于同步已发送状态;
步骤三:服务器进程收到连接请求报文段后,若同意建立连接,则向客户进程发送确认,此时服务器进程处于同步收到状态;
步骤四:TCP客户进程收到服务器进程的确认之后,还需要向服务器进程发送确认,此时,TCP连接已经建立,客户进程处于已建立连接状态;
步骤五:TCP服务器进程收到客户进程的确认之后,也进入已建立连接状态。
2、TCP运输连接的释放过程:(称为四次挥手)
步骤一:客户进程A向其TCP发出连接释放报文段,报文段首部的 FIN置为1,序号seq=u,此时客户进程处于终止等待状态
步骤二:服务器进程B收到连接释放报文段后即发出确认,确认号是 ack = u+1,此时从客户进程到服务器进程这个方向的连接释放了,TCP连接处于半关闭状态。
步骤三:服务器进程B向其TCP发出连接释放报文段,报文段首部的FIN置为1,序号seq=v,此时服务器进程处于终止等待状态
步骤四:客户进程A收到连接释放报文段后发出确认,确认号是ack=v+1,然后进入时间等待状态,最终释放掉TCP连接。
3、TCP报文段:分为 首部 和 数据 两部分,理解TCP首部各字段的作用才能真正掌握TCP工作原理
TCP可靠传输的实现
1、引入以字节为单位的滑动窗口: