文章目录
5.1 传输层提供的服务
5.1.1 传输层的功能
传输层存在于通信子网以外的主机中
- 传输层提供应用进程之间的逻辑通信(端到端通信)
- 复用和分用。复用:发送方不同的应用进程都可以使用同一个传输层协议传送数据;分用:接收方的传输层在剥去报文的首部后可以把这些数据正确交付给目的应用进程
- 差错检测:对收到的报文进行差错检测(首部和数据部分)。网络层只检查IP数据报的首部,不检验数据部分是否出错
- 提供两种不同的传输协议:面向连接的TCP协议和无连接的UDP协议。网络层无法同时实现这两种协议
5.1.2 传输层的寻址和端口
1. 端口的作用
端口可以让应用层的各种应用进程将数据通过端口向下交付给传输层,以及让传输层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程
端口时传输层服务访问点TASP,作用类似网络层的IP地址和数据传输层的MAC地址,而端口标识的是主机中的应用进程
2. 端口号
- 应用进程通过端口号进行标识,端口号长度16bit,可以标识65536个不同端口号
- 端口号只具有本地意义,只标识本计算机应用层的各个进程,在因特网中不同计算机相同端口号没有联系
根据端口号范围可以将端口号分为两类:
- 服务端使用的端口号
- 熟知端口号:0~1023,这些端口号被分配给TCP/IP最重要的一些应用程序
- 登记端口号:1024~49151,供没有熟知端口号的应用程序使用
- 客户端使用的端口号:49152~65535。 仅在客户进程运行时才动态选择,又称临时端口/短暂端口号。通信结束后,刚用过的客户端口号就不复存在,供其他客户进程之后使用
- TCP规定HTTP服务器进程的端口号为80,web服务器采用http协议,端口号80
3. 套接字
网络中通过IP地址识别不同主机,通过端口号识别一台主机中不同应用进程
套接字Socket=(IP地址:端口号),唯一标识网络中的一台主机和其上的一个应用(进程)
5.1.3 无连接服务和面向连接服务
- 面向连接服务:通信双方实现通信前,必须建立连接。通信过程中整个连接的情况一直被实时监控和管理。通信结束后,需要释放该连接
- 无连接服务:两个实体之间的通信不需要建立好连接,需要通信时直接将信息发送到网络中,让该信息的传递在网上尽力传送
TCP/IP协议族在IP层之上使用两个传输协议:
- 面向连接的传输控制协议TCP(传输层向上提供全双工可靠逻辑信道,适合可靠性重要的场合,例如文件传输协议FTP、超文本传输协议HTTP、远程登录TELNET
- 无连接的用户数据报协议UDP(传输层向上提供不可靠的逻辑信道,适合实时性要求高的场合,例如小文件传送协议TFTP、DNS、SNMP、实时传输协议RTP
IP数据报和UDP数据报区别:IP数据报在网络层需要经过路由的存储转发;而UDP数据报在传输层的端到端逻辑信道中传输,封装成IP数据报在网络层传输时,UDP数据报的信息对路由不可见
5.2 UDP协议
5.2.1 UDP数据报
1. UDP概述
UDP在IP数据报服务上增加复用、分用和差错检测
- UDP无需连接,不会引入建立连接的时延
- UDP无连接状态,相比TCP可以支持更多客户机
- 分组首部开销小(UDP首部8B,TCP首部20B
- UDP 没有拥塞控制
- UDP支持一对一、一对多、多对一和多对多的交互通信
- UDP 不保证可靠交付,所有维护可靠性的工作由应用在应用层完成
- UDP是面向报文的。报文不可分割,是UDP数据报处理的最小单位
2. UDP首部格式
UDP数据报=首部+数据
- UDP首部8B,由四个字段组成,每个字段长度2B
- 源端口:源端口号
- 目的端口:目的端口号
- 长度:UDP数据报的长度,包括首部和数据,单位1B,最小值是8(只有首部
- 校验和:检测UDP数据报是否出错,错误则丢弃;不想计算校验和时,该字段全为0
5.2.2 UDP校验
- 计算校验和时,需要在UDP数据报中之前加12B伪首部,临时添加在UDP数据报前面,仅仅为了计算校验和,不发送
- 伪首部包含源IP地址、目的IP地址、UDP长度等
- UDP校验检查首部和数据部分(IP校验只校验首部
- 通过伪首部,可以检查端口号、数据、IP地址
- UDP协议实现分用所依据的头部字段是:目的端口号
5.3 TCP协议
- TCP采用对报文段确认的机制,确保传输数据的可靠性
5.3.1 TCP协议的特点
5.3.2 TCP报文段
5.3.3 TCP连接管理
TCP连接的建立采用客户/服务器模式(C/S),主动发起连接的应用进程为客户,被动等待连接的进程为服务器
1. TCP连接的建立
2. TCP连接的释放
- FIN=1报文段不携带数据,消耗掉一个序号。客户机发送后,进入FIN-WAIT-1状态
- 服务器收到连接释放报文段后发出确认,服务器进入CLOSE-WAIT状态。此时客户机到服务器的连接的释放了
- 服务器此时还可以发送数据。需要断开连接时,发送FIN=1报文段,服务器进入LAST-ACK状态。注意此时ack=u+1
- 客户机收到连接释放报文段后,发出确认,客户机进入TIME-WAIT状态。等待2MSL(最长报文段寿命)后,客户机进入CLOSED状态
5.3.4 TCP可靠传输
TCP可靠传输确保:接收方进程从缓存区读出的字节流与发送方发出的字节流完全一致。采用校验、序号、确认和重传机制
1. 序号
- TCP将数据视为一个无结构但有序的字节流,序号建立在传送的字节流上,而不是报文段
- TCP连接传送的数据流中的每个字节都编上一个序号,序号字段的值是报文段发送的数据的第一个字节的序号。下图第一个报文段序号0,第二个为3
2. 确认
- TCP首部的确认号:期望收到对方下一个报文段的数据的第一个字节的序号
- TCP默认使用累计确认
3. 重传
超时和冗余ACK会引起TCP对报文段重传
- 超时:TCP采用自适应算法,计算加权平均往返时延RTTs,超出超时重传时间,就重传
- 冗余ACK:采用累计确认,当发送方收到对同一个报文段的3个冗余ACK后,就认为丢失报文段,立即重传(快速重传
5.3.5 TCP流量控制
流量控制是为了防止过多数据注入网络,保证网络中的路由器或链路不至于过载
TCP提供基于滑动窗口的流量控制机制。
- 接收方根据自己接受缓存的大小,动态调整发送方窗口大小,称为接受窗口
rwnd,即调整TCP报文段首部的“窗口”字段值 - 发送方根据当前网络拥塞程度的估计,确定一个窗口值,称为拥塞窗口cwnd
5.3.6 TCP拥塞控制
- 窗口的大小改变发生在RTT结束后,做题时需要注意
1. 慢开始和拥塞避免算法
- 网络拥塞时,立刻回到1,执行慢开始;门限/=2
- 指数增长时不能超过门限,例如门限12,8的下一次应该是12而不是16
2. 快重传和快恢复
- 快重传:前面说过的,出现三个冗余ACK就立即重传
- 快重传后,cwnd变为执行快重传的cwnd的一半,然后新的门限设置为这个,开始拥塞避免算法
- 一个TCP连接中,MSS=1KB,拥塞窗口34KB时发生超时事件,接下来4个RTT内报文段都传输成功,则报文段均得到确认后,拥塞窗口大小?
超时后,拥塞窗口立即变为1KB,1->2->4->8->16KB- 设TCP慢开始门限值初始为8,拥塞窗口上升为12时发生超时,问第13次传输时拥塞窗口大小?
门限值变为6,1->2->4->8->9->10->11->12->1->2->4->6->7- (15统考)主机甲乙建立一个TCP,甲的拥塞控制出事阈值为32KB,甲向乙始终MSS=1KB,并且一直有数据发送;乙为该连接分配16KB接收缓存,并对每个数据进行确认,忽略传输延迟。若乙收到的数据全部存入缓存,不取走,则经过4个RTT,甲的发送窗口大小?
4个RTT发送:1+2+4+8=15,剩余1个窗口- 主机甲乙建立一条TCP连线,MSS=1KB,RTT=2ms,不出现拥塞情况下,拥塞窗口从8KB增长到32KB所需最长时间?
最长时间,假设门限<=8KB,那么需要2*(32-8)=48ms
408真题
(12 408)
- IP数据报封装了TCP
- 各个字段作用