计算机网络(基础篇)-传输层

传输层

  • 管理端到端的通信连接

端口

  • 使用端口来标记不同的网络进程
  • 端口使用16比特位表示(0~65535)
  • 常用端口
    在这里插入图片描述

UDP

  • 数据 不合并 不拆分
    在这里插入图片描述

UDP首部

在这里插入图片描述

特点

  • UDP是无连接协议
  • UDP不保证可靠的交付数据
  • UDP面向报文传输
  • UDP没有拥塞控制
  • UDP的首部开销小

TCP

  • TCP是面向连接的协议
  • TCP的一个连接有两端(点对点通信)
  • TCP提供可靠的传输服务
  • TCP协议提供全双工的通信
  • TCP面向字节流的协议

TCP首部

在这里插入图片描述

  • TCP标记: 占六位,每一位各有不同意义
    在这里插入图片描述
    在这里插入图片描述

可靠传输

  • TCP的可靠传输基于连续ARQ协议
  • TCP可靠传输
  • TCP的滑动窗口以字节为单位

停止等待ARQ协议

  • 等待重传协议是将数据进行分组,每发送完一个分组就通知发送并等待对方确认,收到确认后在发送下一个分组
  • 无差错情况下
    在这里插入图片描述
  • 出现差错情况下超时重传
    在这里插入图片描述
  • 确认丢失和确认迟到
  • 在这里插入图片描述

连续ARQ协议

  • 位于发送窗口的数据都可以连续发送出去,而不需要等待对方的确认
    在这里插入图片描述
  • 发送方每接收到一个确认,就把发送窗口向前滑动一个分组位置,下边表示发送方接收到第一个分组确认,于是把发送窗口向前移动一个分组位置
    在这里插入图片描述

如何保证可靠传输

  • 字节编号机制:TCP数据段以字节为单位对数据段的"数据"部分进行一一编号,确保每一个字节的数据都可以有序传送和接收.
  • 数据段确认机制:每接收一个数据段都必须有接收端向发送端返回确认数据段,其中的确认号表示已经正确接收的数据段序号.
  • 超时重传机制:TCP中有一个重传定时器(RTT),发送一个数据段的同时也开启这个定时器,如果定时器过期之时还没有返回确认,则定时器停止,重传该数据.
  • 选择性确认机制:(Selective ACK,SACK)/只重传缺少部分的数据,不会重传那些已经正确接收的数据.

流量控制

目的

  • 需要进行流量控制的原因就是,数据发送的太快,接收端来不及接收而出现的丢包状况.流量控制的目的也就是不要让发送端的发送的数据大于接收端的数据处理能力.

滑动窗口

  • TCP的流量控制通过滑动窗口机制来进行,窗口的大小的单位是字节.
  • 在TCP首部有一个窗口字段(见上图TCP首部),这个字段的数值就是给对方设置的发送窗口的上限,发送窗口在连接时由双方商定,但在通信过程中,接收端可以依据自己的资源状况,动态的调整对方发送窗口的值的大小,达到控制的目的.
  • 假设每个字段大小为100字节,当前发送窗口大小是400字节,发送端已经发送了400字节的数据,但是仅收到前200个字节的确认信息,还有200个字节没有发来确认,那么发送窗口当前时刻还能发送300字节,于是发送窗口前移,整个过程如图所示.是一个简单的滑动窗口的情况.
    在这里插入图片描述

拥塞控制

  • 网络拥塞
    在这里插入图片描述
  • “拥塞窗口”:是为了避免发生拥塞而设置的窗口,最终发送的字节数是接收端为发送端设置的"发送窗口"和"拥塞窗口"的最小值.
  • “慢启动阈值”(SSTHRESH):初始值是64k,即65535个字节,当发生一次数据丢失时,其值变为"拥塞窗口"大小的一半.

在这里插入图片描述

慢启动

  • 主机刚开始发送报文段时先将拥塞窗口的大小设置为一个MSS(该连接上当前使用的最大数据段大小).
  • 每收到一个报文段的确认后,将拥塞窗口增加最多一个MSS的大小.
  • 以此类推,用这样的方法逐步增大发送端拥塞窗口的大小,使分组注入到网络的速率更加合理.
  • 直到拥塞窗口的值达到慢启动阈值,这时候"拥塞避免"就发挥作用了.

拥塞避免

  • 该方案不再像慢启动一样以指数速度增长拥塞窗口的大小,而是到达慢启动阈值后,按线性规律增长,是网络比较不容易出现拥塞
  • 以上两个方案配合使用,可有效减少网络拥塞的影响,但不能完全避免拥塞情况,后来又提出了 "快速重传"和"快速恢复"机制,基本思想是:当接收端收到一个不是按3顺序到达的数据段时,迅速发送一个重复ACK数据段,再重复收到3个重复的ACK数据段后,即认为对应"确认号"上的字段已丢失,TCP不等重传定时器失效,就重传已丢失的数据,此为快速重传,同时快速恢复发挥作用,把当前拥塞窗口大小设置为当前慢启动阈值大小的一半,以减轻网络负荷,然后再执行"拥塞避免"…

快速重传

快速恢复

连接控制

三次握手

在这里插入图片描述
最初两端的TCP进程都处于CLOSE(关闭)状态。
上图中A主动打开连接,B被动打开连接。

  • B打开连接后处于LISTEN(监听状态),等待客户的连接请求。
  • A向B发送请求报文,SYN=1,ACK=0,选择一个初始序号seq=x。
  • B 收到连接请求报文,如果同意建立连接,则向 A 发送连接确认报文,SYN=1,ACK=1,确认号为ack= x+1,同时也选择一个初始的序号 seq=y。
  • A 收到 B 的连接确认报文后,还要向 B 发出确认,确认号为ack= y+1,序号为 seq=x+1。
  • B 收到 A 的确认后,连接建立。
  • 其中TCP标记SYN,序号,确认号都可以在TCP首部中找到

四次挥手

在这里插入图片描述

  • Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。
  • Server收到FIN后,发送一个ACK给Client,确认序号为u + 1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。
  • Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
  • Client收到FIN后,Client进入TIME_WAIT状态(主动关闭方才会进入该状态),接着发送一个ACK给Server,确认序号为w + 1,Server进入CLOSED状态,完成四次挥手。

同时打开

同时关闭

半关闭

超时重传机制

猜你喜欢

转载自blog.csdn.net/DALAOS/article/details/114655022