网络基础-TCP协议格式及其与UDP的对比

TCP协议段格式

这里写图片描述
下面对上面的各个字段进行解释:

  • 源/目的端口号:表示数据是从哪个进程来,到那个进程去;
  • 序列号:指发送数据的位置,每发送一次,就累加一次该数据字节数的大小;
  • 确认应答号:是指下一次应该收到的数据的序列号;
  • 首部长度:该字段可以看作TCP传输的数据部分应该从TCP包的哪个位开始计算。
  • 保留位:该字段主要是为了以后扩展时使用,其长度为4位.一般设置为0,但即使收到的包在该字段不为0,此包也不会被丢弃。
  • 标志控制位:
    • CWR:用于IP首部的ECN字段。
    • ECE: 置为1会通知通信对方,从对方到这边的网络有堵塞。在收到数据包的IP首部中ECN为1时将TCP首部中的ECE设置为1.
    • URG:该位为1时,表示包中有需要紧急处理的数据。
    • ACK:该位为1时,确认应答的字段变为有效
    • PSH:该位为1时,表示需要立刻将将收到的数据传给上层;为0先缓存
    • RST:该位为1时,表示TCP连接中出现异常必须强制断开连接
    • SYN:该位为1时,表示希望建立连接
    • FIN:该位为1时,表示今后不再有数据传送,希望断开连接
  • 窗口大小:用于通知能够接收的数据大小;如果窗口为0,可以发送一个窗口探测,必须是1字节,用于了解最新窗口大小。
  • 检验和:TCP的检验和与UDP相似,区别在于TCP的检验和无法关闭
  • 紧急指针:只有在URG为1时才有效,表示本报文段中紧急数据的指针
  • 选项:选项字段用于提高TCP的传输性能

使用检验和的目的

数据链路层可以检查出由于噪声干扰出现的位错误。那么为什么在传输层需要检验和?
TCP与UDP的检验和更像是一种进行路由器内存故障或程序漏洞导致的数据是否被破环的检查。
路由器的程序中也可能会存在漏洞,或程序异常宕掉的可能。在网络中的数据传输往往会经过很多路由器。一旦在途中的某一个路由器发生故障,经过此路由器的数据极有可能被破坏。
在这种情况下,TCP与UDP如果能够提高检验和计算,也可以判断协议首部和数据是否会被破坏。

TCP与UDP

现在知道了TCP与UDP各自的特点之后,可能会有一个疑问。TCP提供可靠传输。那么还要UDP干什么?
实际上,在UDP和TCP的选择上是根据实际应用场景决定的。
TCP用于在传输层实现可靠传输的情况。由于它是面向有连接并具备顺序控制重发控制等机制的,所以它可以为应用提供可靠传输
UDP主要用于对高速传输和实时性有较高要求的通信或广播通信。
拿IP电话来说,比起可靠传输更重要的是实时的通讯。如果使用TCP,数据在传输途中如果由于丢失而触发重发机制,就无法流畅的传输人的声音了,会导致无法正常交流。
而采用UDP,不会进行重发处理,不会出现声音大幅度延迟的问题,即使有部分数据丢失,也只会影响一小部分的通话。
再比如网络视频,采用UDP而不是TCP,丢失几帧影响并不大,但是对速度的流畅性要求很高。
下图为各自适用的应用:
这里写图片描述
下面再次总结一下TCP与UDP的特点:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值