一、传输层协议
从之前介绍的网络层协议来看,通信的两端是两台主机,IP数据报首部就标明了这两台主机的IP地址。但是从传输层来看,是发送方主机中的一个进程与接收方主机中的一个进程在交换数据,因此,严格地讲,通信双方不是主机,而是主机中的进程。
主机中常常有多个应用进程同时在与外部通信(比如你的浏览器和QQ在同时运行),下图中,A主机的AP1进程在于B主机的AP3进程通信,同时主机A的AP2进程也在与B主机的AP4进程通信。
两个主机的传输层之间有一个灰色双向箭头,写着“传输层提供应用进程间的逻辑通信”。 逻辑通信:看起来是数据似乎是沿着双向箭头在传输层水平传输的,但实际上是沿图中的虚线经多个协议层次而传输。
TCP/IP协议栈传输层有两个重要协议——UDP和TCP,不同的应用进程在传输层使用TCP或UDP之一:
二、端口
端口的作用体现在传输层。
刚才的图中,AP1与AP3的通信与AP2与AP4的通信可以使用同一个传输层协议来传输(TCP或UDP),根据IP地址或MAC地址都只能是把数据传到正确的主机,但具体需要传到哪一个进程,是通过端口来辨认的。比如同时使用浏览器和QQ,浏览器占用80端口,而QQ占用4000端口,那么发送过来的QQ消息便会通过4000端口显示在QQ客户端,而不会错误地显示在浏览器上。
端口号有0~65535的编号,其中:
- 编号0~1023为 系统端口号 ,这些端口号可以在网址 www.iana.org 查询到,它们被指派给了TCP/IP最重要的一些应用程序,以下是一些常见的系统端口号:
应用层协议: | FTP | TELNET | SMTP | DNS | TFTP | HTTP | SNMP |
---|---|---|---|---|---|---|---|
系统端口号: | 21 | 23 | 25 | 53 | 69 | 80 | 161 |
编号1024~49151为 登记端口号 ,为没有系统端口号的应用程序使用,使用这类端口号必须在IANA按规定手续登记,以防止重复。
编号49152~65535为 短暂端口号 ,是留给客户进程选择暂时使用的,使用结束后,这类端口号会被放开以供其它程序使用。
三、UDP概述
UDP(User Datagram Protocol)用户数据报协议,它只在IP数据报服务之上增加了很少一点功能,它的主要特点有:
(1).UDP是无连接的,发送数据之前不需要建立连接(而TCP需要),减少了开销和时延。
(2).UDP尽最大努力交付,不保证交付可靠性。
(3).UDP是面向报文的,对于从网络层交付下来的IP数据报,只做很简单的封装(8字节UDP报头),首部开销小。
(4).UDP没有拥塞控制,出现网络拥塞时发送方也不会降低发送速率。这种特性对某些实时应用是很重要的,比如IP电话,视频会议等,它们允许拥塞时丢失一些数据,因为如果不抛弃这些数据,极可能造成时延的累积。
(5).UDP支持一对一、一对多、多对一和多对多的交互通信。
从应用层到传输层,再到网络层的各层次封装:
四、UDP报文
UDP数据报可分为两部分:UDP报头和数据部分。其中数据部分是应用层交付下来的数据。UDP报头总共8字节,而这8字节又分为4个字段:
(1)源端口 2字节 在对方需要回信时可用,不需要时可以全0;
(2)目的端口 2字节 必须,也是最重要的字段;
(3)长度 2字节 长度值包括报头和数据部分;
(4)校验和 2字节 用于检验UDP数据报在传输过程中是否有出错,有错就丢弃。
五、tcpdump抓取UDP报文
学习途径:实验楼