网络的传输层解析(二)

本文深入探讨了传输层的两大协议——UDP和TCP。UDP以其简单、高效的特点,适用于对实时性要求高的场景,但缺乏可靠性机制。TCP则提供了包括连接管理、可靠传输、流量控制和拥塞控制等一系列机制,确保数据的准确传输,但相对UDP效率较低。文章详细阐述了TCP的三次握手、四次挥手、滑动窗口、拥塞控制等关键概念,对比了UDP和TCP的应用场景,指出在某些情况下,可以通过在应用层增加额外代码来实现UDP的可靠性。
摘要由CSDN通过智能技术生成

在这里插入图片描述

传输层

传输层 : 关注的是点对点之间的传输,只需要关注发送者和接收者就可以了,中间的传输过程,一概不管。(类似于黑盒测试)
比如:你要从北京去上海,我只关注你的起点是上海,终点是北京,不关心你驾车去,火车去,还是飞机去)

1. 传输层包含两大协议(TCP和UDP):

1.1 UDP协议

1.1.1 首先介绍一下UDP:
UDP 是一个比较简单的协议,具体简单在哪里呢?我们来看一下UDP的几个特点:
UDP的传输过程类似与寄信。

  1. 无连接:知道对端的IP和端口号就直接进行传输,不需要进行连接。
  2. 不可靠:没有确认机制,没有重传机制;如果因为网络故障,该段无法发送到对方,UDP层协议也不会给应用层返回任何错误的信息;
  3. 面向数据报 :不能够灵活的控制读写数据的次数和数量;
    应用层交给UDP多长的报文,UDP原样发送,既不会拆分,也不会合并;

用UDP传输100个字节的数据:
如果发送端调用一次sendto,发送100个字节,那么接收端也必须调用对应的一次recvfrom,接收100个字节;而不能循环调用10次recvfrom,每次接收10个字节;

1.1.2 UDP协议端格式
在这里插入图片描述

UDP使用注意事项
这就限制了应用层协议的数据长度,那数据长度超出了UDP的表示范围,就会出现问题。
我们注意到, UDP协议首部中有一个16位的最大长度. 也就是说一个UDP能传输的数据最大长度是64K(16*4)(包含UDP首部).

当应用数据较长并且想要用UDP,怎么办?
可以在应用层通过代码把应用数据拆分成多个数据包,再使用多个UDP数据包来分别发送,并在接收端手动拼装。(代价是代码实现的成本大大提高了 )

1.1.3 分别介绍一下UDP协议报头的四个部分:

  1. 源端口号:数据发送一方(可以是客户端或服务器端)将UDP数据包通过源端口发送出去。

  2. 目的端口号:接收数据

  3. UDP端口号:因为UDP报头使用两个字节存放端口号,所以端口号的有效范围是从0到65535。一般来说,大于49151的端口号都代表动态端口。
    UDP端口号指定有两种方式:由管理机构指定端口和动态绑定的方式。
    端口号传输层的概念,作用就是区分这个数据要交给哪个程序来处理。

  4. UDP校验和:UDP协议使用报头中的校验值来保证数据的安全。校验值首先在数据发送方通过特殊的算法计算得出,在传递到接收方之后,还需要再重新计算。如果某个数据报在传输过程中受到损坏(被第三方篡改或者线路噪音等原因 ),发送方和接收方的校验计算值将不会相符&#x

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值