计算机网络——运输层基础


一、运输层提供的服务

运输层的单位是报文段
(应用层:报文 、网络层:数据报、数据链路层:帧、物理层:比特)

1.UDP与TCP的区别

用户数据报协议UDP (User Datagram Protocol):

  • 无连接,不可靠,但是首部小
  • 尽力交付,无流量控制拥塞控制,所以多用于实时应用
  • 面向报文(对于应用程序传下来的报文不合并也不拆分,只是添加 UDP 首部)
  • 支持一对一、一对多、多对多

传输控制协议 TCP(Transmission Control Protocol):

  • 面向连接,可靠(流量控制、拥塞控制)
  • 全双工,只支持点对点通信
  • 面向字节流(把应用层传下来的报文看成字节流,把字节流组织成大小不等的数据块)

2.端口

端口用来标识主机中的应用进程,只有本地意义,长度16bit,最多表示2^16=65536个端口
端口号:

使用环境端口号
服务端熟知端口号(0-1023):给TCP/IP最重要的应用程序,如FTP 21 HTTP 80等
服务端登记端口号(1024-49151):给不是熟知端口号的应用程序用,如mc服务器 25565等
客户端端口号(49152-65535):客户进程运行时动态选择

套接字Socket:IP+端口号,唯一标识了网络中的一台主机和运行在主机上的某个进程。

3.实现复用分用和差错检测

端口的复用和分用

在这里插入图片描述

差错检测,运输层和数据链路层区别

  • 运输层的差错检测的目的是无传输差错。即丢失乱序重复。
  • 数据链路层的差错检测的目的是无比特差错。即多0少1这种,信号干扰导致的问题。

二、UDP协议 8B固定首部

UDP本身实现了很少的功能(复用分用和差错检测),可以理解成原封不动把报文交给了网络层

1.首部格式

在这里插入图片描述

2.伪首部——用于计算校验和 (12B)

伪首部只在计算校验和的时候出现,不向上向下传送
伪首部组成:
源IP,目的IP,全0,协议(TCP为6 UDP为17),UDP长度,如下图
在这里插入图片描述

3.UDP校验

在这里插入图片描述


三、TCP协议 20B固定首部

TCP因为要求可靠,所以需要流量控制和拥塞控制(重点)
TCP面向字节流,他会把应用层给的数据看成一个一个的字节

1.面向字节流

在这里插入图片描述

2.首部格式

在这里插入图片描述

序号seq 重要

表示当前报文段所发送数据的第一个字节的序号
tcp传送的字节流的每一个字节都是按顺序有序号编号的,这样就能确保数据的有序传输

确认号ack 重要

表示期望收到的下一个报文段的第一个字节的序号
如果确认号为N,那么就可以代表已经正确收到N-1为止的所有数据

数据偏移(首部长度) 4B为单位

占四位,最长四个1,即15*4B=60B。也就是代表TCP首部最长60字节

再复习一下IPv4的记忆口诀:一种八片的首饰
总长度单位:1B 片偏移:8B 首部长度:4B
IPv4首部固定20B (填充字段保证4B整数倍)

6个控制位

  • URG:紧急位,表示高优先级的数据,不在缓存里排队,配合紧急指针使用
  • ACK:确认位,用于表示确认号ack有效
  • PSH:推送位,在接收方体现,高优先级数据赶紧交付给应用层
  • RST:复位,表明TCP连接中出现严重差错,必须释放连接,再重新建立传输连接
  • SYN:同步位,表示当前是一个连接请求/接受报文
  • FIN:终止位,表示发送方数据发完,但仍然可以接收数据(半关闭状态)

窗口

指本报文段发送方可容纳的字节流,也就是允许对方发送的数据量

检验和

和UDP一样,加一个12B的伪首部,协议字段为6(代表TCP)

紧急指针

在控制位URG为1时有效,代表紧急数据的长度(紧急数据已经在缓存队列的头部了,所以只需要大小就能判断数据长度

选项

最大报文段长度MSS(拥塞窗口的单位)、窗口扩大、时间戳等等


3.TCP的可靠传输

保证接收的和发送的是一样的。

校验

与UDP一样加一个伪首部

滑动窗口

重传

  • 超时重传:TCP采取自适应的算法,动态改变重传时间RTTs(加权平均往返时间)重传计时器
  • 快速重传(冗余ACK)

4.TCP的连接管理

TCP的连接建立(三次握手

在这里插入图片描述

SYN洪范攻击

攻击者大量发送第一次握手(连接请求报文段)给服务器后,服务器发送ACK后攻击者不再确认,导致服务器一直处于挂起半连接状态,然后服务器还会持续发送ACK给攻击者,导致持续浪费服务器资源。可能导致无法对正常用户进行响应。
解决办法:SYN Cookie等

TCP的连接释放(四次挥手

在这里插入图片描述

等待2MSL的原因:时间等待计时器
①如果最后一次释放确认服务器没收到,那么服务器会重传一次Round3,保证客户发的最后一次ACK报文段能够到达服务器
②可以使本连接持续时间内产生的所有报文段消失,防止“已失效的连接请求报文段”


5.TCP的流量控制

TCP利用滑动窗口来进行流量控制

停止等待协议(性能差,信道利用率低

发送完一个数据报就停止发送,等待对方的确认,在收到确认后再发送下一个数据报。
重传计时器:每次发送一个数据报就启动一个计时器。

差错情况:

  1. 数据帧丢失或检测到帧出错
  2. ACK丢失
  3. ACK迟到

滑动窗口协议(性能好,流水线技术

后退N帧协议(GBN)

在这里插入图片描述
在这里插入图片描述

GBN在重传时必须把原来已经正确传送的数据帧重传,使传送效率降低,故此有了选择重传协议

选择重传协议(SR)

在这里插入图片描述在这里插入图片描述


6.TCP的拥塞控制

防止过多的数据注入到网络中

拥塞控制和流量控制的区别:

  • 拥塞控制:全局
  • 传输层流量控制:端到端,给发送端一个窗口公告
  • 链路层流量控制:点到点,收不下就不回复确认

接收窗口和拥塞窗口

接收窗口(rwind):接收方根据接收缓存设置的值,并告知给发送方,反映接收方容量
拥塞窗口(cwind):发送方根据自己估算的网络拥塞程度而设置的窗口值,反映网络当前容量
发送窗口:min{接收窗口,拥塞窗口}

拥塞控制算法

传输轮次 :发送一批报文段并收到它们确认的时间 RTT
慢启动阈值(ssthresh) : 到了这个阈值就加法增大来拥塞避免,到了网络拥塞时,更新ssthresh为当前拥塞窗口大小的1/2
最大报文段(MSS) :拥塞窗口的单位

慢开始和拥塞避免

在这里插入图片描述

快重传和快恢复

在这里插入图片描述


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值