传输层需要完成的功能
- 为网络应用程序提供接口
为应用程序提供访问网络的途径
- 多路复用/多路分解机制
- 多路复用表示从不同的应用程序和计算机接受数据,再把数据传递到目的计算机上的接受程序
-
多路分解表示传输层必须能够从网际层接受数据,把它转发到多个程序。
-
错误检测,流量控制和验证
需要一种全面机制来确保发送端与接受端直接的数据传输
</br>
传输层概念
-
传输层提供了两种到达目标网络的方式:
-
传输控制协议(TCP):提供了完善的错误控制的流量控制,能够确保数据正确传输,它是一个面向连接的协议。
- 面向连接的协议:在通信的计算机之间建立并维护一个连接,并且在通信过程中监视连接的状态。
- 用户数据报协议(UDP):只提供了非常基本的错误检测,用于不需要TCP精细控制功能的场合,它是一个无连接的协议。
- 以单向方式向目的发送数据报,不承担通知目的计算机关于数据发送的职责。
- 多路复用/多路分解
- 端口是一个预定义的内部指令,充当从应用程序到传输层或是从传输层到应用程序之间的通路。
- 套接字是一个由IP地址和端口号组成的地址。
- 多路复用和多路分解的关键就在于套接字地址。
理解TCP/UDP
TCP
- 重要特性
- 面向流的处理
TCP以流的方式处理数据。TCP可以一个字节一个字节地接受数据,而不是一次接受一个预定义格式的数据块。
- 重新排序
TCP可以恢复错误的数据。
- 流量控制
TCP的流量控制特性能够确保数据传输不会超过目的计算机接受数据的能力。
- 优先级与安全
TCP连接设置可选的安全级别和优先级
-
适当的关闭
-
TCP数据格式
-
源端口(16位)
-
目的端口(16位)
-
序列号(32位)
- 当SYN不为1,这是当前数据分段第一个字节的序列号
- 当SYN为1,这个字段的值就是初始序列值(ISN),用于对序列号同步,这时第一个字节的序列号=ISN+1。
- 确认号(32位)
用于确认已经接受到的数据分段,其值是下一个接受到的序列号加1.
- 数据偏移(4位)
- 保留(6位)
- 控制标记(分别占用一位)
- URG
- ACK
为1时表示“确认号”字段是有意义的。
- PSH
- RST
- SYN
为1时表示序列号将被同步
- FIN
- 窗口(16位)
用于流量控制的参数。
-
校验和(16位)
-
紧急指针(16位)
-
选项
-
填充
-
数据
-
TCP连接
-
被动打开
被请求时,才会打开TCP到应用程序的连接。
- 主动打开
程序要求TCP发起与另一台计算机(处于被动打开状态)的连接。
- 建立连接(三次握手)
- 计算机A发送一个数据分段:
SYN = 1
ACK = 0
序列号 = X(也就是计算机A的ISN)
- 计算机B接受到计算机A的数据分段,返回一个数据分段:
SYN = 1
ACK = 1
序列号 = Y(计算机B的ISN)
确认号 = M+1(M是从计算机A接受到的最后一个序列号)
- 计算机A向计算机B发送一个数据分段,确认收到计算机B的ISN:
SYN = 0
ACK = 1
序列号 = 序列中下一个号码(M + 1)
确认号 = N + 1(N为从计算机B接受到的最后一个序列号)
-
窗口
TCP使用的流量控制方法被称为“滑动窗口” -
关闭连接
计算机A发送一个数据分段,其中FIN=1,计算机B接受到FIN数据分段时,它返回FIN的确认信息,然后通知本地应用程序接收到了FIN消息,计算机A接收到计算机B的FIN数据分段,返回确认消息,连接就关闭了。
UDP
- 源端口(16位可选)
- 目的端口(16位)
- 长度(16位)
- 校验和(16位)
用于客户端判断数据报是否损坏。
防火墙
防火墙可以通过关闭端口来实现一定的网络安全。
网友评论