TCP/IP 传输层

传输层为网络应用程序提供了一个接口,并且能够对网络传输提供可选的错误检测,流量控制和功能验证。

在传输层主要存在以下几点机制:

  • 为网络应用程序提供接口
  • 多路复用/多路分解 : 这里多路复用表示从不同的应用程序和计算机接收数据,再把数据传递到目的计算机上的接收程序。
  • 错误检测、流量控制和验证
  • 传输控制协议(TCP)
  • 用户数据报协议(UDP)

面向连接的协议和无连接的协议

为了针对不同程度的质量保证,传输层提供了两种不同的协议原型。

  • 面向连接的协议: 会在通信计算机之间建立并维护一个连接,并且在通信过程中监视连接的状态。(也就是说通过网络传输的每一个数据包都会有一个确认,发送端计算机会记录状态信息来确保每个数据包都被正确无误地接收了,并且再有需要的时候重发数据)。
  • 无连接的协议 : 以单向方式向目的发送数据包,不承担通知目的计算机关于发送的职责。目的计算机接收到数据也不要向源计算机返回状态信息。

TCP : 面向连接的传输协议

TCP是一个面向连接的协议,提供了全面的错误控制和流量控制。TCP的具有更高的可靠性。

它具有以下特性:

  • 面向流的处理 : TCP 以流的方式处理数据。TCP 可以一个字节一个字节地接收数据,而不是一次就收一个预定义格式的数据块。TCP 把接收到的数据组成不同长度的段,再传输到网际层。
  • 重排序 : 如果数据以错误的排序达到目的,TCP 模块能够对数据进行重新排序恢复原始排序。
  • 流量控制 : TCP 的流量控制特性能够确保数据传输不会超过目的计算机接收数据的能力。由于现实世界里会有各种不同的应用环境,处理器速度和缓存区大小的差别也可能很大。
  • 优先级与安全 : TCP 连接设置可选的安全级别和优先级,但很多TCP实现并没有这些安全和优先级特性。
  • 适当的关闭:TCP 像重视建立连接一样重视关闭连接工作,以确保在连接被关闭前,所有的数据段都被发送和接收了。
TCP的数据格式

在这里插入图片描述

  • 源端口 : 16 位 分配给源计算机的应用程序的端口号

  • 目的端口 : 16 位 分配给目的计算机上的程序的端口号

  • 序列号:32位 当SYN 标记不为1 时,这是当前数据段第一个字节的序列号;如果SYN 的值是 1 ,这个字段的值就是初始序列值(ISN),对于序列号进行同步,这是第一个字节的序列号比这个字段的值大1

  • 确认号:32位 用于确认已经接收到的数据分段,其值是接收计算机即将接收的下一个序列号,也就是下一个接收的字节序列号加1

  • 数据偏移: 4位 这个字段表示报头的长度,也就是告诉接收端的TCP软件数据从何开始。

  • 保留 : 保留字段(6位),为TCP 将来的发展预留空间,目前全部为0

  • 控制标记: 分别占用1位

    • URG : 为1时表示当前数据段时紧急的,也会让“紧急指针”字段的值有意义。
    • ACK :为1时表示“确认号”字段有意义。
    • PSH :为1时让TCP软件把目前收到的全部数据都通过管道传递给接收应用程序。
    • RST :为1时会重置连接。
    • SYN :为1时表示序列号将被同步,说明这是一个连接的开始。
    • FIN : 为1时表示发送端计算机已经没有数据需要发送了。用于标记关闭一个连接。
  • 窗口: 16位 用于流量控制的参数。

  • 校验和:16位 用于检验数据的完整性,一般有CRC 校验

  • 紧急指针:16位 这是一个偏量指针,指向标记紧急信息开始的序列号。

  • 选项: 指定一些可选设置中的某一项。

  • 填充: 额外填充的0,以确保数据从32位字的边界开始。

  • 数据: 数据分段中的数据。

TCP 连接

tcp 通过连接发送和接收数据,而这个连接必须根据TCP的规则进行请求、打开和关闭。TCP支持两种情况下打开状态:

  • 被动打开: 某个应用程序进程通知TCP 准备通过TCP 端口接收连接,这样就会打开TCP到应用程序的连接,从而位参与连接请求做准备。
  • 主动打开:程序要求TCP 发起与另一台计算机(处于被动打开)的连接,这就是主动打开的状态。

一般来说再客户端的TCP 是关闭的,直到用户发起一个请求连接,客户端的主动打开。处于主动打开的状态计算机上的TCP 软件会建立信息交换,这个信息交换称为“3次握手”。

建立连接

tcp 通信时一种传输和确认的系统,让通信的TCP 软件能够定期更新传输的状态,之前说的控制标记
实际上并不是为每一个字节都排版一个序列号,而是在报头序列号排序。在序列号字段里包含的时ISN ,它的值比数据分段中第一个字节的序列号小1。这个序列号同步的过程称为3次握手———>

① 计算机A 发送一个分段数据参数为
SYN =0
ACK =0
序列号=x(X为电脑的A 的ISN)

②计算机B接收到A的数据返回数据分段 参数为

SYN = 1
ACK =1
序列号=Y
确认号 = M+1

③ 计算机A发送给B的一个分段数据
SYN = 0
ACK =1
序列号 = M +1
确认号 = N+1

在这里插入图片描述
这里可以去查看我的另外一篇文章来查看实现网络流量分析工具(tcpdump)
TCP 流量控制

TCP 报头中的“窗口”字段为了连接提供了一种流量控制机制,其目的时防止发送端计算机不要发送得太快,以避免接收端计算机来不及处理接收的数据而导致数据丢失。

关闭连接
当需要关闭连接时,计算机A 发送一个数据段,其中的FIN 的标记设置为1.之后应用程序就会进入‘结束–等待’状态。

UDP 连接

udp 比 TCP 简单的多,不执行上面的任何操作。因为UDP 只存在有限的错误检验功能,UDP 数据报中只包含一个校验和。只能通过校验和来进行校验数据完整性。
UDP 头报中包含4个 16为字段在这里插入图片描述
由于实际的UDP 报头并不包含源IP地址和目标IP地址,数据报可能会被传输到错误的计算机或者服务。校验和使用的部分数据来自于IP报头提取的值,这个接收段计算能够判断UDP 数据是否交付出错。

UDP 的简单、无连接设计让它成为网络广播所使用的协议,广播是会被子网上全部计算机接收和处理的单个消息。很明显,当某台计算机想在网络上发送一个广播时,如果需要与子网上每台计算机都同时建立一个 TCP类型的连接,必然会严重影响网络性能。

其他协议

还有协议其他的协议也工作于传输层。比如数据报拥塞控制协议(DCCP)、流控制传输协议(SCTP),实时传输协议(REP)提供了传输实时音频和视频的结构。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值