计算机网络
5.1
传输层概述
- 只有主机才有的
- 位应用层提供通信服务,使用网络出服务
- 传输层的功能:
- 传输层提供进程和进程间的逻辑通信(网络层提供主机之间的逻辑通信)
- 复用和分用
- 传输层对收到的报文进行差错检测
- 传输层的协议(TCP,UDP)
传输层的寻址与端口:
- 复用:应用层所有的应用进程都可以通过传输层再传输到网络层
- 分用:传输层从网络层收到数据后交付指明的应用进程
- 端口:是传输层的SAP,标识主机中的应用进程(逻辑端口/软件端口)
- 端口号只有本地意义,在因特网中不同计算机的相同端口是没有联系的
- 端口号长度16bit,能表示65536个不同的端口号
- 端口号分类:
- 服务端使用的端口号(熟知端口号:0-1023)+(登记端口号:1024-49151)
- 客户端使用的端口号:在客户进程运行时才动态选择:49152-65535
套接字Socket: (主机IP地址,端口号)
- 在网络中采用发送方和接受方的套接字组合来识别端点,
- 套接字唯一标识了网络上的一个主机和他上面的一个进程
5.2
UDP协议
- 无连接的用户数据报协议:减少时延开销和发送数据之前的时延
- 使用最大努力交付,即不保证可靠交付。
- 面向报文,适合一次性传输少量数据的网络应用
- 应用层给UDP多长的报文,UDP就照样发送,一次发送一个完整的报文
- UDP没有拥塞控制,适合很多实时应用。
- UDP首部开销小:8B,TCP:20B
- UDP首部格式:分用时,找不到对应的端口号,就丢弃报文,并给发送方发送ICMP“端口不可达“差错报告报文。
UDP检验:
5.3
TCP协议特点与TCP报文格式
特点:
- TCP是面向连接(虚连接)的传输层协议。
- 每一条TCP只能有两个端点,每一条TCP连接只能是点对点的
- TCP提供可靠交付的服务,无差错、不丢失、不重复、按序可达。
- TCP提供全双工通信(发送缓存,接受缓存)
- TCP是面向字节流的:TCP把应用程序交下来的数据看成仅仅是一连串的无结构的字节流
TCP报文格式:
TCP连接管理
- TCP连接的建立采用客户服务器方式,主动发起连接建立的应用进程叫客户,二被动等待连接建立的应用进程叫服务器。
建立连接:
释放连接:
TCP可靠传输
- 可靠:保证接受方进程从缓存区读出的字节流,与发送方发出的字节流是完全一样的
- 实现机制:校验,序号,确认,重传
- 校验:与UDP校验一样,增加伪首部
- 序号:
- TCP报文分段,每一段有序号字段。
- 一个字节占一个序号
- 序号字段指的是一个报文段第一个字节序号。
- 确认:
- 接收端发送的确认号,来确认已经接收到了
- TCP默认使用累计确认
- 重传:
- 确认重传不分家:TCP的发送方在规定的时间内没有收到确认就要重新发送已发送的报文段。(超时重传)
- TCP采用自适应算法,动态改变重传时间RTTs(加权平均往返时间)
冗余ACK(冗余确认)
每当比期望序号大的失序报文到达时,发送一个冗余ACK,指明下一个期待字节的序号
TCP流量控制
- TCP利用滑动窗口机制实现流量控制
- 通信过程中,接收方根据自己接受缓存的大小,动态的调整发送方的发送窗口大小,即接受窗口 rwnd(接受方设置报文段的窗口字段来将rwnd通知给发送方),发送方的发送窗口取接收窗口rwnd和拥塞窗口cwnd的最小值。
TCP拥塞控制
- 对资源需求的总和 > 可用资源
- 网络中有许多资源同时呈现供应不足 --> 网络性能变坏 --> 网络吞吐量将随着输入负荷增大而下降。
- 防止过多的数据注入到网络中。(全局性)
接收窗口: 接收方根据接受缓存设置的值,并告知给发送方,反应接收方容量
发送窗口: 发送方根据自己估算的网络拥塞程度而设置的窗口值,反应当前网络容量。
拥塞控制的算法:
- 慢开始和拥塞避免:
- 一个传输伦次:发送了一批报文段并收到他的确认的时间。一个往返时延RTT
- 一个传输轮次也可以是:开始发送一批拥塞窗口内的报文段到开始发送下一批拥塞窗口内的报文段的时间。
- 快重传和快恢复: