传输层的核心任务:应用进程之间提供端到端的逻辑通讯服务。算法
主机具备OSI七层模型;网络核心中的路由器、交换机、集线器等只用到OSI七层模型的下三层功能缓存
传输层功能:(分复流拥寻差错-可靠;吩咐刘墉寻差错-可靠)服务器
传输层寻址与端口:网络
端口号:传输层端口号为16位整数,能够编号65536个(2的16次方)性能
传输层端口号: 编码
无链接服务与面向链接服务:操作系统
多路复用:在源主机,传输层协议从不一样的套接字收集应用进程发送的数 据块,并为每一个数据块封装上首部信息(包括用于分解的信息)构成报文段,而后将报文段传递给网络层。3d
多路分解:在目的主机,传输层协议读取报文段中的字段,标识出接收套接字,进而经过该套接字,将传输层的报文段中的数据交付给正确的套接字。指针
多路复用与多路分解(复用与分解/复用与分用):支持众多应用进程共用同 一个传输层协议,并可以将接收到的数据准确交付给不一样的应用进程blog
无链接的多路复用与多路分解:
面向链接的多路复用与多路分解
不可靠传输信道在数据传输中可能发生的问题:
基于不可靠信道实现可靠数据传输采起的措施:
TCP要采起适当的措施,保证可靠数据传输;
自动重传请求协议(ARQ):为了实现可靠数据传输,接收方经过使用确定确认ACK 与否认确认NAK,能够 让发送方知道哪些内容已被正确接收,哪些内容未被正确接收而须要重传。基 于这种重传机制的可靠数据传输协议称为自动重传请求协议协议;停-等协议是其最简单的一个方式
停-等协议的工做流程
停-等协议:性能差、信道利用率低;使用流水线协议能够改善
流水线协议:管道协议。容许发送方在没有收到确认前,连续发送多个分组。 最典型的流水线协议:滑动窗口协议
一、增长分组序号。
二、发送方和接收方能够缓存多个分组。
发送方的发送窗口(Ws ):发送方能够发送未被确认分组的最大数量;
接收方的接收窗口(Wr ):接收方能够缓存的正确到达的分组的最大数量;
滑动窗口协议,根据窗口的大小,能够具体分为:
============GBN协议================
发送端缓存能力高,能够在没有获得确认前发送多个分组。 接收端缓存能力很低,只能接收1个按序到达的分组,不能缓存未按序到达的分组
GBN协议:发送窗口WS≥1 ,接收窗口Wr =1。
GBN发送方响应的3类事件:
例如:发送发,发送1,2,3,4,5;接收方收到1,2,5;显然3,4没有收到确认,因此3,4,5要从新发送
==============SR协议===============
发送端缓存能力高。 接收端缓存能力高;
SR协议: 发送窗口WS>1,接收窗口Wr>1。
SR发送方响应事件:
例如:发送方,发送1,2,3,;接收方接受1,3 ;显然2发送方没有收到接收方的ack,因此发送方从新发送2;
用户数据协议(User Datagram Protocol,UDP):Internet传输层协议,提供无链接、不可靠、数据报尽力传输服务。
UDP的特色:
UDP数据报首部:UDP首部四个字段,每一个字段长度都是2个字节,共8个字节
应用数据字段:应用层数据占用
UDP校验和:提供差错检测功能;UDP的校验和用于检测UDP报文段从源到目的地传送过程当中,其中的 数据是否发生了改变
UDP校验和计算规则:
UDP伪首部:源IP地址、目的IP地址、协议号:对应 封装UDP数据报的IP分组的字段。 UDP协议号:17
UDP校验和的步骤:
传输控制协议(Transmission Control Protocol ,TCP):Internet传输层协议。提供面向链接、可靠、有序、字节流 传输服务。
最大报文段长度(Maximum Segment Size , MSS):报文段中封装的应用层数据的最大长度。
TCP报文段首部结构:TCP段的首部长度最短是20字节 (首部报文长度=固定首部长度(20) + 可选项)
一、源端口号字段,目的端口号字段:占16位。复用和分解上层应用的数据。
二、序号字段、确认序号字段:占32位。 序号字段:TCP的序号是对每一个应用层数据的每一个字节进行编号; 确认序号字段:指望从对方接收数据的字节序号,即该序号对应的字节还没有收到;
三、首部长度字段:占4位。指出TCP段的首部长度,以4字节为计算单位。
四、保留字段:占6位。保留为从此使用,目前值为0。
五、URG、ACK、PSH、RST、SYN、FIN各占1位,为标志位字段,取值为0或1;
六、接收窗口字段:占16位。向对方通告我方接收窗口的大小。
七、校验和字段:占16位。 计算方法与UDP校验和的计算方法相同。TCP协议号是6。
八、紧急指针字段:占16位。 URG=1时,才有效。指出在本TCP报文段中紧急数据共有多少个字节
九、选项字段长度可变,最短为0字节,最长为40字节
十、填充字段,取值全为0,目的是为了整个首部长度是4字节的整倍数
TCP链接管理:链接创建与链接拆除。
第一次握手:客户向服务器发送链接请求段:(SYN=1,seq=x) SYN=1:创建链接请求控制段; seq=x:表示传输的报文段的第1个数据字节的序列号是x,此序列号表明整个报文段的序号; 客户端进入SYN_SEND(同步发送状态)
第二次握手:服务器相应确认报文段:(SYN=1,ACK=1,seq=y, ack_seq=x+1) SYN=1:赞成创建新链接的确认段;ack_seq=x+1:表示已经收到了序列号为x的报文段,准备接收序列号为x+1的报文段; seq=y:服务器告诉客户确认报文段的序列号是y;服务器由LISTEN进入SYN_RCVD(同步收到状态)
第三次握手:客户对服务器的赞成链接报文段进行确认:(ACK=1,seq=x+1,ack_seq=y+1); seq=x+1:客户这次的报文段的序列号是x+1; ack_seq=y+1:客户指望接收服务器序列号为y+1的报文段; 当客户发送ACK时,客户端进入ESTABLISHED状态;当服务收到ACK后,也迚入ESTABLISHED状态; 第三次握手可携带数据
为何须要三次握手?
TCP链接拆除:四次挥手
第一次挥手: 客户向服务器发送释放链接报文段:(FIN=1,seq=u) FIN=1:发送端数据发送完毕,请求释放链接;seq=u:传输的第一个数据字节的序号是u; 客户端状态由ESTABLISHED进入FIN_WAIT_1(终止等待1状态)
第二次挥手:服务器向客户发送确认段:(ACK=1,seq=v,ack_seq=u+1);ACK=1:确认字号段有效; ack_seq=u+1:服务器指望接收客户数据序号为u+1;seq=v:服务器传输的数据序号是v; 服务器状态由ESTABLISHED迚入CLOSE_WAIT(关闭等待);客户端收到ACK段后,由FIN_WAIT_1迚入FIN_WAIT_2
第三次挥手: 服务器向客户发送释放链接报文段:(FIN=1,ACK=1,seq=v+1,ack_seq=u+1); FIN=1:请求释放链接;ACK=1:确认字号段有效;ack_seq=u+1:表示服务器指望接收客户数据序号为u+1;seq=v+1:表示本身传输的第一个数据字节的序号是v+1;服务器状态由CLOSE_WAIT进入LAST_ACK(最后确认状态)
第四次挥手: 客户向服务器収送确认段:(ACK=1,seq=u+1,ack_seq=w+1);ACK=1:确认字号段有效;ack_seq=v+1+1:表示客户指望接收服务器数据序号为v+1+1; seq=u+1:表示客户传输的数据的序号是u+1;客户端状态由FIN_WAIT_2进入TIME_WAIT,等待2MSL时间,进入CLOSED状态; 服务器在收到最后一次ACK后,由LAST_ACK进入CLOSED
TCP可靠数据传输:
可靠:保证接收方应用进程从缓冲区读出的字节流与发送方发出的字节流是彻底同样的
TCP实现可靠数据传输服务的工做机制
一、应用层数据被分割成TCP认为最适合发送的数据块(最大报文段长度(Maximum Segment Size , MSS): 报文段中封装的应用层数据的最大长度)
二、序号,发送方对发送的数据包进行编号,确保数据按序提交给接收方。(序号:一个字节占用一个序号。序号字段指的就是一个报文段第一个字节的序号)
三、确认,接收方向发送方反馈接收状态,确认是否正确接收数据。 TCP采起累计确认。
四、查错检测,利用差错编码实现数据包传输过程当中的比特查错检测(甚至纠正)。
五、重传,发送方从新发送接收方没有正确接收的数据(快速重传: TCP发送方接收到对相同序号的3次重复ACK,就说明被重复确认的报文段已丢失,这时候即使没有超时,也会重发该报文段)
六、计时器,在发送方引入计时器,解决数据丢失问题(计时器超时时间设置:TimeoutInerval=EstimatedRTT+4×DevRTT; EstimatedRTT:抽样RTT的加权移动平均值。 DevRTT:误差RTT)
TCP生成ACK的策略:
TCP的流量控制:协调发送方与接收方数据的发送与接收速度;在通讯过程当中,接收方设置报文段的接收窗口字段来将窗口大小通知给发 送方。
TCP的拥塞控制:
网络拥塞:太多的主机以太快的速度向网络中发送太多的数据,超出了网 络处理能力,致使大量数据分组拥挤在中间设备队列中等待转发,网络性能显 著降低的现象
拥塞控制:经过合理调度、规范、调整向网络中发送数据的主机数量、发 送速率、数据量,以免拥塞或消除已发生的拥塞
拥塞控制算法:慢启动、 拥塞避免 、快速重传、 快速恢复
一、拥塞窗口(CongWin):链接开始,为1MSS ; 1个最大报文段长度(Maximum Segment Size , MSS)
二、阈值(Threshold):临界值
======================慢启动=====================
慢启动算法:在TCP链接创建时,每经 过1个RTT时间,拥塞窗口增大一倍。
======================拥塞避免===================
拥塞避免算法:当拥塞窗口大于等于阈 值时,每通过1个RTT,拥塞窗口的值 加1。
====================快速重传=========================
快速重传:接收端收到3次重复确认,则推断被重复确认的报文段已经丢失,因而立 即发送被重复确认的报文段
==============快速恢复算法==================
思考:怎样算是报文段丢失了: 一、收到三次重复确认 。 二、计时器超时
快速恢复算法:当发生3次重复确认时,网络拥塞程度不是很严重。 阈值和拥塞窗口的调整方法:是直接重新的阈值开 始,直接进入拥塞避免阶段。
例如:发生3次重复确认时,当前拥塞窗口为24MSS,当前阈值为16MSS。 新的阈值:为当前拥塞窗口的一半。 新的阈值= 24MSS÷2=12MSS;新的拥塞窗口:调整为新的阈值。 新的拥塞窗口=新的阈值=12MSS;调整好新的阈值和新的拥塞窗口后,使用拥塞避免算法增长拥塞窗口大小。
例如:发生计时器超时,当前拥塞窗口为24MSS,当前阈值为16MSS。 新的阈值:为当前拥塞窗口的一半, 新的阈值= 24MSS÷2=12MSS; 新的拥塞窗口:直接调整为1MSS,新的拥塞窗口=1MSS; 调整好新的阈值和新的拥塞窗口后,使用慢启动,拥塞避免算法增长拥塞窗口 大小。
窗口调整的基本策略 (Additive Increase,Multiplicative Decrease ,AIMD): 网络未发生拥塞时,逐渐“加性”增大窗口。 网络拥塞时“乘性”减少窗口。
拥塞预防策略: 流量整形技术:规范主机向网络发送数据的流量。