第三部分——传输层层协议
一些概念:
传输层为运行在不同主机上的进程停工逻辑通信服务
多路复用:接收源主机不同套接字中的数据块,为每一个块封装首部信息并向下层发送
多路分解:将传输层报文中的数据交付给正确的套接字(可能是不同的套接字)
TCP/UDP的基本任务:将两个端系统间IP的交付任务拓展为运行在运行两个系端系统的进程之间的交付任务(利用传输层的多路复用和多路分解)
TCP/UDP多路分解的区别:UDP套接字使用(目标IP、目标端口)的二元组标识一对套接字连接,两个不同IP或端口发到同一个IP、端口的UDP报文会交付给一个UDP套接字;而TCP套接字使用(目标IP、目标端口、源IP、源端口)的四元组标识一对TCP套接字连接,因此不同IP或端口发送到同一个IP、端口的TCP报文会交付给不同的TCP套接字
UDP只提供最低限度的运输层服务:进程间数据交付、差错检测
TCP除了UDP提供的基本服务之外,还提供:可靠数据传输、拥塞控制
运输层协议概述:(后面详细说)
TCP(传输控制协议):
面向连接服务:
- 全双工通信,允许同时收发报文
- 因为面向连接,所以需要三次握手,四次挥手
- 用完关闭
可靠数据传输服务:无差错、按序发送接收报文,没有丢失和冗余
拥塞控制:当网络拥堵时,可以抑制发送速率,限制TCP连接,这一功能对并不是传输层的核心功能,对传输层本身并没有好处,甚至这对于带宽敏感的应用会带来损害,但这对通信网络有好处。
UDP(用户数据协议):轻量级的协议,只提供满足传输层要求的最小服务。
无连接的协议,因此不需要握手
不是可靠传输,数据可能丢失或者乱序到达
没有拥塞控制机制,可以以任意速率发送报文,但是多数防火墙会限制UDP的流量
SSL(安全性套接字):对TCP做了安全性的增强,包括加密、数据完整性以及端点鉴别(TCP和UDP本身没有加密机制)
RTT(往返时间):数据从一端传到另一端再传回来的时间,可以看作是TCP三次握手的前两次耗时
UDP协议:
特点:应用层能更好地孔子要发送数据和发送时间、无需建立连接、无连接状态(各种连接控制问题)、分组首部开销小
报文结构:
源端口号 | 目标端口号 |
长度(单位:字节) | 互联网校验和 |
应用层数据 | |
每个单元格代表2个字节,黄色部分代表UDP报文首部,首部长度8个字节,灰色部分代表UDP真实数据部分。
UDP报文中只有端口号,IP地址在下一层(网络层)报文中封装进来
报文各部分意义:
长度:指UDP报文总长度,包括首部+数据部分
互联网校验和:用于差错检验
互联网校验和的计算方法:将UDP整个报文(不包含校验和)转化成二进制比特,每16个比特相加,如果进位成为17位,则将最高位加回末尾(回卷),将所有数据加完的结果保存为校验和。
互联网校验和的使用:接收方接收UDP整个报文(包含校验和)转化二进制比特,妹16位相加,进位产生17位的话就回卷,最后结果如果是16位1,则表示数据正确,如果有不是1的位,则表示报文参数过程中出现错误。