首页 > 其他分享 >第六章 网络互连与互联网(五):TCP 和 UDP 协议

第六章 网络互连与互联网(五):TCP 和 UDP 协议

时间:2024-08-16 10:22:31浏览次数:17  
标签:协议 UDP 互连 TCP 发送 顺序号 连接

五、TCP 和 UDP 协议

在 TCP/IP 协议簇中有两个传输协议,即传输控制协议(TCP)和用户数据报协议(UDP)。TCP是面向连接的,而 UDP 是无连接的。

1、TCP服务

(1)TCP 协议提供面向连接的、可靠的传输服务,适用于各种可靠的或不可靠的网络。

(2)TCP 用户送来的是字节流形式的数据,这些数据缓存在 TCP 实体的发送缓冲区中。

(3)TCP 实体自主地决定如何把字节流分段,组成 TPDU 发送出去。在接收端,也是由 TCP 实体决定何时把积累在接收缓冲区中的字节流提交给用户。分段的大小和提交的频度是由具体的实现根据性能和开销权衡决定的, TCP 规范中没有定义。显然,即使两个 TCP 实体的实现不同,也可以互操作

(4)TCP 也允许用户把字节流分成报文,用推进(PUSH)命令指出报文的界限 。发送 TCP 实体把 PUSH 标志之前的所有未发数据组成 TPDU 立即发送出去,接收端 TCP 实体同样根据 PUSH 标志决定提交的界限。

2、TCP协议

TCP 只有一种类型的PDU,叫作 TCP 段,段头(也叫TCP 头或传输头)的格式如下图所示,其中的字段如下。

在这里插入图片描述

(1)源端口(16位):说明源服务访问点。

(2)目标端口(16位):表示目标服务访问点。

(3)发送顺序号(32位):本段中第一个数据字节的顺序号。

(4)接收顺序号(32位):捎带接收的顺序号,指明接收方期望接收的下一个数据字节的顺序号。

(5)偏置值(4位):传输头中 32 位字的个数。因为传输头有任选部分,长度不固定,所以需要偏置值。

(6)保留字段(6位):未用,所有实现必须把这个字段置全 0。

(7)标志字段(6位):表示各种控制信息,其中

  • URG:紧急指针有效。
  • ACK:接收顺序号有效。
  • PSH:推进功能有效。
  • RST:连接复位为初始状态,通常用于连接故障后的恢复。
  • SYN:对顺序号同步,用于连接的建立。
  • FIN:数据发送完,连接可以释放。

(8)窗口(16位):为流控分配的信息量。

(9)校验和(16位):段中所有 16 位字按模2的16次方-1相加的和,然后取1的补码。

(10)紧急指针(16位):从发送顺序号开始的偏置值,指向字节流中的一个位置,此位置之前的数据是紧急数据。

(11)任选项(长度可变):目前只有一个任选项,即建立连接时指定的最大段长。

(12)补丁:补齐 32位字边界。

3、TCP 拥塞控制

(1)重传计时器管理

TCP 实体管理着多种定时器(重传定时器、放弃定时器等),用于确定网络传输时延和监视网络拥塞情况。定时器的时间界限涉及网络的端到端往返时延,静态计时方式不能适应网络通信瞬息万变的情况,所以大多数实现都是通过观察最近一段时间的报文时延来估算当前的往返时间,一种方法是取最近一段时间报文时延的算术平均值来预测未来的往返时间

(2)慢启动和拥塞控制

TCP 实体使用的发送窗口越大,在得到确认之前发送的报文数就越多,这样就可能造网络的拥塞,特别在 TCP 刚连接建立发送时对网络通信的影响更大。可以采用的一种策略是,发送方实体在接收到确认之前逐步扩展窗口的大小,而不是从一开始就采用很大的窗口,这方法称为慢启动过程。

4、UDP 协议

(1)UDP 也是常用的传输层协议,它对应用层提供无连接的传输服务,虽然这种服务是不可靠的、不保证顺序的提交,但这并没有减少它的使用价值。相反,由于协议开销少而在很多场合相当实用,特别是在网络管理方面,大多使用UDP协议。

(2)UDP 运行在 IP 协议层之上,由于它不提供连接,所以只是在 IP 协议之上加上端口寻址功能,这个功能表现在 UDP 头上。

(3)UDP 头包含源端口号目标端口号。段长指整个 UDP 段的长度,包括头部和数据部分。校验和与 TCP 相同,但是任选的,如果不使用校验和,则这个字段置0。

(4)由于 IP 的校验和只作用于 IP 头,并不包括数据部分,所以当UDP的校验和字段为0时,实际上对用户数据不进行校验。

5、总结两种协议的特点和差异

(1)连接性

  • TCP:是一种面向连接的协议,这意味着通信前必须建立连接,类似于打电话前需要拨号建立连接。
  • UDP:无连接协议,不需要建立连接就可以直接通信,适用于需要快速传输的场景。

(2)可靠性

  • TCP:提供可靠的数据传输服务,通过序列号、确认应答、重传控制等机制保证数据完整性和顺序。
  • UDP: 不保证数据传输的可靠性,可能会出现数据丢失或顺序错乱的情况,适用于对实时性要求高的应用。

(3)传输速度

  • TCP:相对较慢,因为需要建立连接、维护状态、进行流量控制和拥塞控制等操作。
  • UDP:传输速度较快,因为它无需上述TCP所需的步骤,直接发送数据。

(4)应用场景

  • TCP:常用于需要可靠数据传输的场景,如网页浏览(HTTP)、文件传输(FTP)、电子邮件(SMTP)等。
  • UDP:通常应用于对实时性要求较高的场景,例如实时视频(VoIP)、在线游戏和域名解析(DNS)等。

(5)头部开销

  • TCP:头部开销较大,包含更多的控制信息,如序列号、确认号、窗口大小等。
  • UDP:头部开销较小,只包含必要的字段,如源端口、目的端口、长度和校验和。

(6)流量控制

  • TCP:具有流量控制和拥塞控制机制,可以动态调整发送速率,防止网络拥塞和丢包。
  • UDP:没有这些机制,它只负责将数据报从源端发送到目的端,不关心网络状况和数据传输质量。

(7)通信模式

  • TCP:通常用于一对一的通信,即一个TCP连接只能有一个发送方和一个接收方。
  • UDP:支持一对多、多对一和多对多的通信模式,可以实现广播和组播功能。

标签:协议,UDP,互连,TCP,发送,顺序号,连接
From: https://blog.csdn.net/weixin_45627039/article/details/141252659

相关文章

  • Python 通过UDP传输超过64k的信息
    在UDP中,单个数据包的最大尺寸通常受到网络层的限制,这通常被称为最大传输单元(MTU)。在以太网环境中,标准的MTU大小通常为1500字节。尽管有些网络环境可能支持更大的数据包,但是UDP数据包的理论最大限制是65535字节(64KB),这是由于UDP头部的16位长度字段决定的。然而,如果你需要发送超过这......
  • 第六章 网络互连与互联网(三)
    三、IP协议Internet是今天使用最广泛的网络。因特网中的主要协议是TCP和IP,所以Internet协议也叫TCP/IP协议簇。这些协议可划分为4个层次,它们与OSI/RM的对应关系如表所示。由于ARPAnet的设计者注重的是网络互连,允许通信子网采用已有的或将来的各种协议,所......
  • udp和arp之间的交互作用
    udp和arp之间的交互作用arp-a验证arp告诉缓存是空的sock-u-i-nl-w8192svr4discard1.在第一个arp应答返回以前,总共产生了6个arp请求。2.在接收到第一个arp应答时(第7行),只发送最后一个数据报片(第9行)3.在大多数的现实中,在等待一个arp应答时,只将最后一个报文发送给特定目标......
  • udp介绍
    1.udp介绍udp是一个简单的面向数据报的运输层协议,进程的每个输出操作都正好产生一个udp数据报,并组装成一份待发送的ip数据包,这与面向流字符的协议不同,如tcp,应用程序产生的全体数据与真正发送的单个ip数据报可能没有什么联系。udp不提供可靠性:它把应用程序传给ip层的数据发送出......
  • tcp介绍.3
    1.tcp的成块数据流我们看到tftp使用了停止等待协议,数据发送方在发送下一个数据块之前需要等待接收对已发送数据的确认,本章我们介绍tcp所使用的被称为滑动窗口协议的另一种形式的流量控制方法,该协议允许发送方在停止并等待确认前可以连续发送多个分组,由于发送方不必每发一个分组就......
  • tcp介绍.2
    2msl等待状态time_wait状态也称为2msl等待状态,每个具体tcp实现必须选择一个报文段最大生存的时间msl(maximumsegmentlifetime).它是任何报文段被丢弃前在网络内的最长时间。msl为2分钟,然而,实现中的常用值是30秒,1分钟,或2分钟。对一个具体实现所给定的msl值,处理的原则是:当tcp执......
  • tcp介绍.1
    1.tcp介绍tcp的服务tcp提供一种面向连接的、可靠的字节流服务。面向连接意味着两个使用tcp的应用(通常一个客户和一个服务器)在彼此交换数据之前必须先建立一个tcp链接。在一个tcp链接中,仅有两方进行彼此通信。tcp的服务tcp提供一种面向连接的、可靠的字节流服务。面向连接......
  • 【网编】——tcp编程
    tcp流程服务器 头文件:#include<sys/types.h>     /*SeeNOTES*/#include<sys/socket.h>#include<errno.h>#include<stdio.h>#include<netinet/in.h>#include<netinet/ip.h>/*supersetofprevious*/#include<arp......
  • 使用TcpDump 和 Wireshark 分析数据库异常
    MySQL:5.7.19OS:rhel6.3jdbc:mysql-connector-java-5.1.45.jarjava:17.0.7问题:MySQL数据库在修改character_set_server和表的对应字段为utf8mb4后,任然无法插入emoji表情1.抓包1、登陆MySQL服务器,确定实际使用的网卡;2、执行tcpdump-s65535-x-nn-......