TCP/UDP以及端口协议功能

TCP/IP协议簇的传输层协议主要有两个:TCP(传输控制协议)和UDP(用户数据协议)。

一、TCP协议

TCP是面向连接的、可靠的进程到进程通信的协议。TCP提供全双工服务,即数据可在同一时间双向传输,每一个TCP都有发送缓存和接收缓存,用来临时存储数据。

1.TCP报文段

TCP将若干个字节构成一个分组,称为报文段。TCP报文段封装在IP数据报中,

首部长度为20~60字节,以下是各字段的含义。

  • 源端口和目的端口字段——各占 2 字节(16位)。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。
  • 序号字段——占 4 字节。TCP 连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。比如分组的第一个数据包由文件的14个字节数据组成,那么该数据包所添加的序号就是1,同理第二个数据包由文件的59个字节数据组成,那么该数据包所添加的序号就是5。
  • 确认号字段——占 4 字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。比如接收端收到由文件14个字节数据+TCP首部组成的数据包后,删除首部提取14个字节数据,返回的确认号为5,即告诉发送端下一次应该发送文件的第5个字节及其之后字节组成的数据包过来。
  • 数据偏移(即首部长度)——占 4 位,它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远,也就是TCP首部的长度。“数据偏移”的单位是 32 位字(以 4 字节为计算单位),最大1111表示15x4=60个字节,即表示TCP首部最大长度为60个字节,因此“选项”部分最多40个字节。
  • 保留字段——占 6 位,保留为今后使用,但目前应置为 0。
  • 紧急 URG —— 当 URG = 1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。 即URG=1的数据包不用排队直接优先传输。

  • 同步 SYN —— 同步 SYN = 1 表示这是一个连接请求或连接接受报文。即A想与B建立连接,发送过去的第一个数据包(第一次握手)中SYN=1;B返回的数据包(第二次握手)中SYN=1表示同意建立连接。

  • 确认 ACK —— 只有当 ACK = 1 时确认号字段才有效。当 ACK = 0 时,确认号无效。

    ACK是对已接受数据的确认,当A与B还在请求连接阶段,A向B发送的第一个数据包(第一次握手)中ACK=0,无效,所以数据包中不显示,表示还没从B中接收到数据;序号Seq也为0,表示A还未向B发送数据;SYN=1,表示正在建立连接。

    同理,B向A返回一个数据包(第二次握手)中,确认号ACK=1,表示B收到了A序号为0的数据包;序号Seq=0,也表示B还未向A发送数据;SYN=1表示同意建立连接。

    A再向B发送一个数据包(第三次握手)中,确认号ACK=1,表示A收到了B发出的数据包;序号Seq=1,表示A已向B发送了1个数据包(即第一次握手);SYN=0,表示已建立连接。

  • 推送 PSH (PuSH) —— 接收 TCP 收到 PSH = 1 的报文段,就尽快地交付接收应用进程,而不再等到整个缓存都填满了后再向上交付。
  • 复位 RST (ReSeT) —— 当 RST = 1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。
  • 终止 FIN (FINis) —— 用来释放一个连接。FIN = 1 表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。
  • 检验和 —— 占 2 字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在 TCP 报文段的前面加上 12 字节的伪首部。
  • 紧急指针字段 —— 占 16 位,指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)。

二、TCP的三次握手

TCP的四次挥手

TCP端口及其应用

端口 协议 说明
21 FTP FTP服务器所开放的控制端口
23 TELNET 用于远程登录,可以远程控制管理目标计算机
25 SMTP SMTP服务器开放的端口,用于发送邮件
80 HTTP 超文本传输协议

 三、UDP协议

UDP是一个无连接、不保证可靠性的传输层协议。

UDP首部的格式

UDP常用的一些端口

端口 协议 说明
69 TFTP 简单文件传输协议
111 RPC 远程过程调用
123 NTP 网络时间协议

猜你喜欢

转载自blog.csdn.net/Xt991124/article/details/120820020