我们在上文中给大家简单介绍了计算机网络体系的七层结构,而今天我们就一起来了解一下,计算机网络传输层协议类型与特点。
传输层涉及到两个重要的协议:UDP和TCP,本节我们重点介绍这两个协议。
1、UDP协议
1.1、UDP数据报格式
UDP基本没干啥事,继承了IP包的特性:数据可能丢失,顺序传输无法保证。UDP与后边介绍的TCP不一样,是无状态的。我们来看看UDP数据报的格式:
源端口号:发送数据报方使用的端口号,用于标识发送进程;
目的端口号:接收数据包方使用的端口号,用于标识接收进程;
UDP长度:UDP头部和UDP负载数据的字节长度;
UDP校验和:UDP校验和覆盖UDP头部和UDP数据和一个伪头部(区别:IP头部校验和只覆盖IP头部),伪头部衍生子IPv4头部字段的12个字节,或者衍生子IPv6头部字段的一个40字节的伪头部;
负载数据:具体的UDP数据。
可以发现,UDP与下层不同,是需要端口号的。
为什么UDP需要端口号,TCP和UDP端口号可以相同吗?
类似ICMP协议回显请求的标识符,UDP的端口用于区分是哪个进程的数据包,如果没有端口号,那么就不知道应该把数据包终交给哪个进程来处理了。
TCP端口号由TCP来查看,UDP端口号由UDP来查看,TCP端口号和UDP端口号是相互独立的,所以是可以相同的。每个请求都有源IP、目标IP、源端口号、目标端口、协议五个元素来标识的,每个协议的端口池是完全独立的。
为什么UDP的端口号多是65535个?
在UDP/TCP协议中源端口和目的端口都只有16位,也就是说端口的取值范围为0~65535。
1.2、UDP特点
UDP在IP层之上,没有做其他的封装,主要表现如下特点:
数据可能丢失,顺序传输无法保证;
无状态,不需要像TCP那样要建立连接;
没有拥塞控制,来一个包就发一个。
1.3、UDP使用场景
基于UDP的特点,UDP主要用于以下场景:
需要资源少,在网络情况比较好的内网,或者对对包不敏感的场合。如DHCP和TFTP就是基于UDP的;
广播场景,不需要一对一建立连接,如DHCP;
需要时延低,允许丢包,不关注网络拥塞的场景,如视频直播这种流媒体,实时游戏,通信,物联网等领域。
2、TCP协议
TCP是我们平时用到多的协议,特别是做web开发的时候,或者互联网后端开发,真的是时时刻刻都会用到,这里我会展开来讲。《TCP/IP详解-卷1:协议》一书中花了6章来讲解TCP的各种功能,单单是从TCP/IP协议栈的名称就可以看出,TCP协议的分量有多重了。为此,面试官张口就聊TCP咋的咋的。
与UDP不同,TCP做了很多功能的封装与实现。
先来简单介绍下TCP协议:
TCP给应用程序提供给了一种与UDP完全不同的服务。
TCP是面向连接的可靠的服务:面向连接指TCP的两个应用程序必须在它们可交换数据之前,通过相互联系来建立一个TCP连接;
TCP提供了一种字节流抽象概念给应用程序:TCP不会自动插入记录标志或者消息边界,这意味着TCP没有限制应用程序的写范围。发送端分两次发10字节和30字节,接收端可能会以两个20字节的方式读入。
我们还是先来看看TCP数据报的格式吧,这个可比UDP复杂多了,但是也是设计的恰到好处的。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请在707945861群中学习了解。