【TCP 和 UDP 基本原理】

TCP 和 UDP 基本原理

TCP/IP 协议族的传输层协议主要包括 TCP(Transfer Control Protocol,传输控制协议)
和 UDP(User Datagram Protocol,用户数据报协议)。TCP 是面向连接的可靠的传输层协议。
它支持在并不可靠的网络上实现面向连接的可靠的数据传输。UDP 是无连接的传输协议,主要
用于支持在较可靠的链路上的数据传输,或用于对延迟较敏感的应用。

一、TCP/IP传输层的作用
1、传输层的作用
 提供面向连接或无连接的服务
 维护连接状态
 对应用层数据进行分段和封装
 实现多路复用
 可靠地传输数据
 执行流量控制

二、 TCP协议基本原理
1、TCP 协议的特点

RFC 793 定义的 TCP(Transmission Control Protocol,传输控制协议)是一种面向连接
的、端到端的可靠传输协议。TCP 的主要特点包括:
 三次握手(Three-Way Handshake)建立连接:确保连接建立的可靠性。

 端口号:通过端口号标识上层协议和服务,实现了网络通道的多路复用。

 完整性校验:通过对协议和载荷数据计算校验和(Checksum),保证了接收方能检测
出传输过程中可能出现的差错。

 确认机制:对于正确接收到的数据,接收方通过显式应答通告发送方,超出一定时间
之后,发送方将重传没有被确认的段,确保传输的可靠性。

 序列号:发送的所有数据都拥有唯一的序列号,这样不但唯一标识了每一个段
(segment),而且明确了每个段在整个数据流中的位置,接收方可以利用这些信息实
现确认、丢失检测、乱序重排等功能。

 窗口机制:通过可调节的窗口,TCP 接收方可以通告期望的发送速度,从而控制数据
的流量。

2、TCP 封装
在这里插入图片描述
 源端口(Source Port):16 位的源端口字段包含初始化通信的端口号。源端口和源 IP
地址的作用是标识报文的返回地址。

 目的端口(Destination Port):16 位的目的端口字段定义传输的目的。这个端口指明
接收方计算机上的应用程序接口。

 序列号(Sequence Number):该字段用来标识 TCP 源端设备向目的端设备发送的字
节流,它表示在这个报文段中的第一个数据字节。如果将字节流看作在两个应用程序
间的单向流动,则 TCP 用序列号对每个字节进行计数。序列号是一个 32 位的数。

 确认号(Acknowledgement Number):TCP 使用 32 位的确认号字段标识期望收到的
下一个段的第一个字节,并声明此前的所有数据都已经正确无误地收到,因此,确认
序号应该是上次已成功收到的数据字节序列号加 1。收到确认号的源计算机会知道特
定的段已经被收到。确认号的字段只在 ACK 标志被设置时才有效。

 数据偏移(Data Offset):这个 4 位字段包括 TCP 头大小,以 32 位数据结构(字)
为单位。

 保留(Reserved):6 位置 0 的字段。为将来定义新的用途保留。

 控制位(Control Bits):共 6 位,每 1 位标志可以打开一个控制功能,这六个标志从
左至右是
URG(Urgent Pointer field significant,紧急指针字段标志)
ACK(Acknowledgment field significant,确认字段标志)
PSH(Push Function,推功能)
RST(Reset the connection,重置连接)
SYN(Synchronize sequence numbers,同步序列号)
FIN(No more data from sender,数据传送完毕)

 窗口(Window):目的主机使用 16 位的窗口字段告诉源主机它期望每次收到的数据
的字节数。窗口字段是一个 16 位字段。

 校验和(Checksum):TCP 头包括 16 位的校验和字段用于错误检查。源主机基于部
分 IP 头信息、TCP 头和数据内容计算一个校验和,目的主机也要进行相同的计算,
如果收到的内容没有错误过,两个计算结果应该完全一样,从而证明数据的有效性。

 紧急指针(Urgent Pointer):紧急指针字段是一个可选的 16 位指针,指向段内的最
后一个字节位置,这个字段只在 URG 标志被设置时才有效。

 选项(Options):至少 1 字节的可变长字段,标识哪个选项(如果有的话)有效。如
果没有选项,这个字节等于 0,说明选项字段的结束。这个字节等于 1 表示无需再有
操作;等于 2 表示下四个字节包括源机器的最大段长度(Maximum Segment Size,
MSS)。MSS 是数据字段中可包含的最大数据量,源和目的机器要对此达成一致。当
一个 TCP 连接建立时,连接的双方都要通告各自的 MSS,协商可以传输的最大段长
度。常见的 MSS 有 1024 字节,以太网可达 1460 字节。

 数据(Data):从技术上讲,它并不是 TCP 头的一部分,但应该了解到,数据字段位
于紧急指针和/或选项字段之后,填充字段之前。字段的大小是最大的 MSS,MSS 可
以在源和目的机器之间协商。数据段可能比 MSS 小,但却不能比 MSS 大。

3、TCP/UDP 端口号
协议号 6 标识 TCP,用协议号 17 标识 UDP

4、TCP 连接的建立
TCP 是一个面向连接的可靠的传输控制协议,在每次数据传输之前首先需要建立连接,连
接建立成功后才开始传输数据,数据传输结束后还要断开连接
在这里插入图片描述
TCP 的三次握手建立连接的过程如下:

  1. 由发起方 HostA 向被叫方 HostB 发出连接请求。将段的序列号标为 x,SYN 置位。
    由于是双方发的第一个包,ACK 无效。

  2. HostB 收到连接请求后,读出序列号为 x,发送序列号为 y 的包,同时将 ACK 置为有
    效,将确认号置为 x+1,同时将 SYN 置位。

  3. HostA 收到 HostB 的连接确认后,对该确认再次作确认。HostA 收到确认号为 x+1、
    序列号为 y 的包后,发送序列号为 x+1、确认号为 y+1 的段进行确认

  4. HostB 收到确认报文后,连接建立。
    这样,一个双向的 TCP 连接就建立好了,双方可以开始传输数据。

5、TCP 连接的拆除
在这里插入图片描述
上图所示是一个常规的 TCP 连接终止过程。当数据传输结束后,需要断开连接,其过程描
如下:

  1. HostA 要求终止连接,发送序列号为 u的段,FIN 置为有效,同时确认此前刚收到的
    段。

  2. HostB 收到 HostA 发送的段后,发送 ACK 段,确认号为 u+1,同时关闭连接。

  3. HostB 发送序列号为 w 的段,FIN 置为有效,通知连接关闭。

  4. HostA 收到 HostB 发送的段后,发送 ACK 段,确认号为 u+1,同时关闭连接。
    TCP 连接至此终止。可见这是一个四次握手过程

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值