运输层概述
运输层向应用层抽象了一个面向进程通信的信道。
两个主要协议:
- UDP:User Datagram Protocal
- TCP: Transmission Control Protocal
UDP 不需要建立连接,TCP是基于连接的。
端口的概念
复用与分用,理解上可以把端口想象成邮局,复用指的是我们要寄信都需要把信件送到邮局委托其寄出;分用指的是邮局又要把收到的信件分别送到挨家挨户。
通信只需要将数据传送到指定的端口,剩下的工作就交由TCP和UDP实现相应进程的分发。
端口号为16位二进制位,能够表达 [ 0 , 2 16 − 1 ] [0, 2^{16}- 1] [0,216−1]的端口号。
- 服务器端使用的端口号
系统端口号:一些常用重要的协议使用的端口号。
FTP | TELNET | SMTP | DNS | TFTP | HTTP | HTTPS | SNMP | SNMP(trap) |
---|---|---|---|---|---|---|---|---|
21 | 23 | 25 | 53 | 69 | 80 | 443 | 161 | 162 |
SNMP 是专门设计用于在 IP 网络管理网络节点(服务器、工作站、路由器、交换机及HUBS等)的一种标准协议,它是一种应用层协议。 SNMP 使网络管理员能够管理网络效能,发现并解决网络问题以及规划网络增长。通过 SNMP 接收随机消息(及事件报告)网络管理系统获知网络出现问题。百度百科
登记端口号: 1024~49151。为没有系统端口号的应用使用,需要在IANA登记防止重复。
- 客户端使用的端口号
49152~65535。也叫短暂端口号,供应用暂时使用,释放占用就可以被其他应用复用。
UDP-用户数据报协议
特点:
-
无连接
-
仅最大努力交付(非可靠交付)
-
面向报文:UDP对应用层交付下载的报文直接加上头部就交付网络层,同时从IP层接受的报文也是拆除首部报文就上交应用层。因此需要注意UDP报文的长度,过长过短都会影响性能。
-
无拥塞控制:当网络发生拥塞时,UDP不会调整数据发送速率。
-
支持一对一,一对多,多对一的交互通信。(broadcast)
-
首部开销小,UDP首部固定8bytes,TCP首部最小20bytes。
UDP的首部结构
- 原端口 (发送方端口)
- 目标端口(接收方端口)
- 数据报长度(最小8,表示仅有首部)
- 检验和
当端口上没有对应的应用程序时,会丢弃该报文,并有ICMP(网际控制报文协议)发送“端口不可达”差错报文给发送方。
UDP的检验和计算
先在首部加上12bytes 的伪首部,只是在计算校验和的时候加上,计算后抛弃。
- 首部和数据部分一起检验。
- 不是偶数补充0。(不发送)
- 发送方先将检验和填0,然后计算二进制反码和。
- 接收方连同伪首部再次求二进制反码的和,无差错应该为全1。
- UDP协议字段值是17。