TCP和UDP协议

提到网络不得不说下TCP和UDP,这两个协议都是OSI模型中的四层协议,传输数据的形式是以字节流的形式。下面让我们一起初步了解一下TCP和UDP。

TCP——传输控制协议

TCP协议是面向连接的可靠传输协议。其功能是将应用层发来的8位字节表示的数据流分割成适当长度的数据段发给下层。

       注:TCP的主要功能是对数据分段,那么这里就要提到两个名词MSS和MTS。

           MSS是最大段长度为1480B。这里的段长度是指数据被TCP协议分段后每段中数据段的最大长度为1480B。

           MTS是最大传输单元1500B。这个最大传输单元是指被TCP分段后每段数据包的最大传输单元为1500B。

知道了什么是MSS和MTS后大家就会发现,分段后每段数据部分最大是1480B,然而每段数据包却是1500B,那么相差这20B干嘛去了呢?别急,下面就来大家讲这20B去哪了。

接下来介绍下TCP包的首部,了解了首部就知道了那20B去哪里了。下面就给大家介绍TCP包首部的内容。(注:下图源自网络)这里写图片描述

首部内容注释:

 16-Bit source port:原端口,指的是发送数据的源进程端口。简单来说就是数据的发出地。大小为16位比特

 16-Bit destination port:目的端口,指的是接收数据的进程端口。就是数据的的目的地。大小为16位比特

 32-Bit sequence number:序号,代表当前TCP数据段第一个字节占整个字节流的相对位置。简单来说就是标识这是数据被分段发送后的第几个包。大小为32位比特。

 32-Bit acknowledgement number:大小为32位比特,确认号,ACK为1时有效,上次成功收到的数据字节序号+1(如接收到的为1024--2048,则返回2049)。

 4-Bit header length:大小为4位,比特TCP首部长度,最小为20字节,最大为60字节。相差的40字节为下面的Options选项的最大字节数。

 resv:6位比特保留位。后面的URG紧急指针;ACK确认序号有效;PSH接收方应尽快将此报文段交给应用层;RST重建连接;SYN同步序号,用来发起一个新连接;FIN发端完成发送任务。

 16 -Bit windows size:窗口大小,TCP流量控制,字节数,标识接受方可接受的数据字节数,最大为65535。大小为16位比特。

 16 Bit TCP checksum:校验和,用于验证数据的完整性。大小为16位比特。

 16 Bit urgent pointer:紧急指针,当上面的UPG为1时紧急指针才生效。用于发送紧急数据。大小为16位比特。

 Options:选项(可没有)就是上面提到最大40字节的部分,此选项用于数据的加密等操作。

 Data:数据段。

上述首部大小如果选项部分为空的话,正好是160位比特(8bit=1字节)20字节。这就是那相差的20字节

接下来说下TCP的数据分段过程如下图(注:图片源自网络)
TCP数据分段

如图数据按前面提到的数据段长度分段后每段数据包都会有一个TCP首部加上数据段。

接下来就是TCP很重要的建立与断开连接的过程(三次握手和四次断开)(注:下两图源自于网络)
建立连接过程(三次握手) 这里写图片描述

过程描述:

1.左主机向右主机发送SYN请求连接报文,请求与右主机建立连接。
2.右主机接受左主机的请求连接报文,并向左主机发送SYN报文和ACK确认包确认与左主机建立连接。
3.左主机收到有主机的SYN和ACK,并向右主机人发送ACK确认收到右主机发送的确认连接包,两主机连接建立。

  注:ACK: TCP协议规定,只有ACK=1时有效,也规定连接建立后所有发送的报文的ACK必须为1
     SYN: 在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文。对方若同意建立连接,则应在响应报文中使SYN=1和ACK=1. 因此,  SYN置1就表示这是一个连接请求或连接接受报文。
     FIN: 即完,终结的意思, 用来释放一个连接。当 FIN = 1 时,表明此报文段的发送方的数据已经发送完毕,并要求释放连接。

断开连接过程(四次断开)
这里写图片描述
过程描述:
1.当左主机没有数据要发送时就要释放左主机的连接,左主机会发送一个报文(没有数据)其中FIN设置为1。
2.右主机收到FIN为1的报文后会发送一个确认与左主机断开的报文。
3.右主机还会发送一个FIN为1的报文(没有数据)给左主机释放右主机连接。
4.左主机收到确认报文和FLN为1的报文后会向右主机发送一个确认包问,进入到TIME_WAIT状态,等待断开连接。

   注:四次断开时右主机发送的两个报文是同时发送的。

UDP——用户数据报协议

UDP协议是面向非连接的不可靠传输协议,功能是将数据流量压缩成数据包形式发送。

注:UDP协议不会将数据包分段,会将整个数据一起发送。

UDP也有一个十分简单的数据包首部,如下图(注:图片源自网络)
这里写图片描述
首部注释:

16-bit source port:源端口号,数据包发送的源进程端口。大小为16位比特。
16-bit destination port:目标端口号。书记包发送的目的进程端接口。大小为16位比特。
16-bit UDP length:UDP首部长度。大小为16位比特。
16-bit UDP checksum:校验和,检查数据是否损坏,若损坏直接丢弃。

UDP传输就很简单没有连接和断开过程,接受到数据流量之后打包直接发送。

TCP协议和UDP协议特点

首先说TCP协议,其主要特点就是可靠、稳定。主要运用于发送一些需要安全保护的数据,以及一些数据量比较大的文件。

注:
1.TCP可靠性主要体现在其传输机制:需要建立与断开连接的过程,以及在传输中的重传。
2.TCP用于发送数据量大的文件主要因为其会将数据分段,排序发送。与重传机制共同作用减少丢包率。

TCP也是有缺点的,其主要的缺点就是:满,传输效率低,占用资源高。这主要是因为它的连接过程。

下面来讲讲UDP协议,其特点就是速度快,系统消耗低。主要运用于发送对丢包容忍度大,需要速度快的数据传输。
其缺点在于:不可靠,不稳定。它没有TCP那些可靠的机制也不会数据分段,在数据传输时,如果网络质量不好,很容易出现丢包的情况。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值