计算机网络原理--传输层

  • 🎥 个人主页:Dikz12
  • 📕格言:那些在暗处执拗生长的花,终有一日会馥郁传香
  • 欢迎大家👍点赞✍评论⭐收藏

目录

 TCP/IP五层(或四层)模型

传输层 

TCP和UDP的区别 

UDP协议

 校验和

如何基于校验和完成数据传输?

 校验和是怎么计算的?

TCP协议 

 TCP协议报文格式


 TCP/IP五层(或四层)模型

传输层 

就是对应用层数据,在进行打包,变成传输层的数据报.把刚才的应用层数据,基础上拼接上传输层的报头.

学习传输层,就要学习传输层的典型协议TCP协议和UDP协议. 

TCP和UDP的区别 

UDP: 无连接 、面向数据报 、不可靠传输 、 全双工.

TCP:  有连接 、面向字节流 、 可靠传输 、 全双工.

UDP协议

 学习一个协议,最重要的就是去理解协议报文格式。

上图可以理解成:

 UDP报头:分成四个部分,每个部分占两个字节。

UDP报文长度:2个字节,16位表示数据,范围 0 - 65536 => 64kb (UDP 数据报最大就是64kb).

UDP载荷 : 真正保存数据的地方.

 校验和

在网络传输的过程中,由于外界干扰的情况下 ,就可能出现数据传输错误的情况。所以,就要有能识别出出错的数据,而校验和就是一种检查方式.

如何基于校验和完成数据传输?

1. 发送方,把要发送的数据整理好(data1),在通过一定的算法,计算出校验和 checksum1.

2.发送方把data1 和 checksum1 一起通过网络发送出去.

3.接收方收到数据,收到的数据称为(data2),这时候数据可能就不一样了,收到校验和checksum1.

4.接收方在根据 data2重新计算校验和(相同的算法).

5.对比,checksum1 和 checksum2 是否相同,如果相同,则认为data1 和 data2 大概率是相同的;否则,data1 和 data2 一定不同.

 校验和是怎么计算的?

 此处UDP中使用的是CRC算法(循环冗rong余算法)

     就是把当前要计算的校验和的数据,每个字节,都进行累加,把结果保存到这个 两个字节的变量中。(累加过程中如果溢出,也没关系)

 如果中间某个数据,出现传输错误,第二次计算的校验和就会和第一次不同。

CRC这个算法其实不是特别的靠谱,导致两个不同的数据,得到相同的校验的概率还是比较大的。(前一个字节恰好少1,后一个字节恰好多一)

md5 算法 

这个算法是很常用的,要了解它的一些特点.

1.定长.

 无论你原始的数据多长,计算得到的 md5,都是固定长度。

 

2.分散.

给定两个原始数据,只要有一个字节不同,得到的 md5值都会差异很大。

3.不可逆.

 给一个原始数据,计算 md5,非常容易;给你md5,还原出原始数据,计算量非常庞大,甚至超出了现有的计算机算力的极限,理论上是不可行的。

TCP协议 

 TCP协议报文格式

 32位序号 和 32位确认序号 :应用于TCP机制中的确认应答.

4位首部长度:TCP的报头长度是不固定的(变长的)报头最短是20字节(没有选项);最长是60字节.只有4位表示,最大取值范围15,单位是4个字节,所以最大值是60字节。

保留6位 : UDP有个问题,长度64kb,改不了,就很难受。所以,设计TCP的大佬就留了一个小心机,现在不用,先占个位置,后面需要再使用。

6个标志位:用来区分TCP报文的类别,分别用于TCP不同的机制中.

16位窗口大小:应用于TCP机制中的流量控制.

16位校验和:  跟UDP一样的.

  • 52
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 24
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值