运输层协议TCP和UDP

多路分解和多路复用

多路分解:将运输层报文段中的数据交付到正确的套接字。
多路复用:在原主机中,从不同的套接字收集数据块,并为每个数据块封装上首部信息从而生成报文段,然后将报文段传输到网络层。

滑动窗口机制

  • N表示滑动窗口长度
  • base表示最早的未确认分组序号
  • nextSeqNum表示最小未使用的序号

回退N步

  • 允许发送方发送多个分组而不必等待确认
  • 采用累积确认,若接收方接收到序号为n的分组,表示包括n之前的分组都接收到了且其ACK也发送了
  • 若有分组丢失,则后面传来的分组就会被接收方丢弃且发送最后发送ACK的那个分组的ACK
  • 接收方收到丢失分组,然后重传所有发送的但未收到确认的分组。

选择重传

  • 接收方接收所有分组而不管其是否有序(是否有分组丢失)
    • 有序:正常交付并发送ACK
    • 乱序:缓存并发送乱序分组ACK
  • 直到丢失分组收到后将一批分组按序交付

流量控制

流量控制就是让发送速率不能太快,要让接收方来得及接收,即滑动窗口机制,是点到点的通信量控制,而发送方若因网络的拥塞而被遏制称为拥塞控制。

发送方和接收方都维护一个接收窗口,接收方有个接收缓存,接收方进程从其接收缓存中读取信息,则

发送方能发送的数据大小 <= 接收方缓存大小 - (进入缓存数据大小 - 应用进程从缓存中读取出的数据大小)

而UDP不提供流量控制,若进程从接收缓存中读取数据的速度较慢,则缓存会溢出,因此会造成报文段丢失。

拥塞控制

目的:防止网络拥塞而控制发送速率, 是全局性过程

方法

慢启动、拥塞避免、快重传、快恢复

发送方维护一个拥塞窗口的变量,拥塞窗口的大小取决于网络的拥塞程度并动态变化,发送方让发送窗口等于拥塞窗口。

  • 先将拥塞窗口设置为一个最大报文段的长度MSS,即拥塞窗口的值以1个MSS开始
  • 收到一个确认后将拥塞窗口大小增加1个MSS,因为拥塞窗口是最小的1MSS,因此叫做慢启动,而在慢启动阶段,发送速率以指数增长。
  • 当拥塞窗口的值=预先设置的阈值时,结束慢启动过程,进入拥塞避免过程(加性增乘性减),即每次拥塞窗口值+1MSS
    • 拥塞避免结束条件:
    • 超时:进入慢启动,将拥塞窗口设置为1个MSS
    • 丢包:收到3个相同(冗余)ACK(快重传:接收方收到3个冗余ACK就立即重传丢失的报文段),将预先设置的阈值=拥塞窗口/2,进入快速恢复阶段。
    • 快速恢复:拥塞窗口=阈值/2,进入拥塞避免;

TCP

  • 多路分解和多路复用
  • 面向连接(3次握手建立连接,4次挥手断开连接)
  • 可进行流量控制,拥塞控制,按序交付。
  • 点到点,全双工,可靠信道。
  • 一般用于文件传输(HTTP,FTP,SMTP)

UDP

  • 多路分解和多路复用以
  • 差错检测(无查错恢复能力)
  • 多对多,一对多或者多对一信道
  • 一般用于即是通信如在线聊天、视频会议、语音电话(DNS).

TCP三次握手

  1. 客户端发送连接建立的请求SYN和待发送数据的序列号seq=x;
  2. 服务器端也发送连接建立的请求SYN和待发送的数据序列号seq=y,同时响应客户端的请求,即回复ACK=x+1,即客户端上一次的seq+1;
  3. 客户端响应服务器端的请求回复ACK=y+1;

以上就是过程,注意只有请求建立连接的阶段才会发送SYN,即前两次握手阶段,只要对方发送数据即发送seq,则必须以ACK=seq+1作为响应。

TCP四次挥手

  1. 客户端下次没数据发送时这次便会发送请求中断连接的FIN,同时发送本次待发送数据的序列号seq=x+2和响应服务器端最后发送的数据ACK=y+1
  2. 服务器端响应客户端发送的数据回复ACK=x+3;
  3. 服务器端接收到客户端的FIN后便以FIN继续响应以关闭连接,同时发送未发送完的数据seq=y+1;
  4. 客户端收到服务器端的数据并响应ACK=y+2;

盗图一张说明:
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值