传输层是只有主机才有的层次。传输层为应用层提供通信服务,同时可以使用网络层提供的服务。
1、传输层的功能
(1) 传输层提供进程和进程之间的逻辑通信,区别于网络层提供主机和主机之间的逻辑通信。即网络层将信息从一个主机传递到另外一个主机之后,需要经过传输层将这些信息分发给不同的进程,或者同一个进程的不同线程中。
(2) 复用和分用,复用指的是将不同进程的数据(报文段)使用同一个传输层的协议进行传输;分用指的是传输层将传来的报文段送交给不同的进程。
(3) 传输层对收到的报文进行差错检测。
(4) 传输层有TCP和UDP两种协议。
2、传输层的两个协议
2.1 TCP协议
面向连接的传输控制协议,传送数据之前必须建立连接,数据传送结束之后要释放连接。不提供广播或者多播服务。由于TCP要提供可靠的面向连接的传输服务,因此不可避免增加了许多开销:确认,流量控制,计时器及连接管理等。可靠,面向连接,时延大,适用于大文件。
2.2 UDP协议
无连接的用户数据报协议,传送数据之前不需要建立连接,收到UDP报文之后也不需要给出任何确认。不可靠,无连接,时延小,适用于小文件。
3、传输层的寻址与端口
端口是传输层的SAP,标识主机中的应用进程,这里的端口是逻辑端口/软件端口。
端口号只有本地意义,在因特网中不同计算机中的相同端口是没有联系的。端口号长度为16bit,能表示65536个不同的端口号。端口号的分类如下所示:
常见的熟知端口号应用程序如下所示:
在网络中采用发送方和接收方的套接字(Socket)组合来识别端点,套接字唯一标识了网络中的一个主机和它上面的一个进程。
套接字Socket=(主机IP地址,端口号)
4、UDP协议
UDP只在IP数据报服务之上增加了很少的功能,即复用分用和差错检测的功能。
UDP的主要特点:
(1) UDP是无连接的,减少开销和发送数据之前的时延;
(2) UDP使用最大努力交付,即不保证可靠交付;
(3) UDP是面向报文的,适合一次性传输少量数据的网络应用;
(4) UDP无拥塞控制,适合很多实时应用;
(5) UDP的首部开销小,只有8Byte,TCP的首部有20Byte
4.1 UDP的首部格式
在分用时,若数据报找不到对应的目的端口号,就丢弃报文,并给发送方发送ICMP“端口不可达”差错报告报文。
4.2 UDP校验
伪首部只有在计算校验和时候才会出现,不向下传递也不向上递交。伪首部中的17表示:封装UDP报文的IP数据包首部协议字段是17;伪首部中的首部长度:UDP首部8Byte+数据部分长度,不包括伪首部的长度。
在发送端校验处理过程:填上伪首部;全0填充检验和字段;全0填充数据部分(UDP数据报要看成许多4B的字串连起来0);伪首部+首部+数据部分采用二进制反码求和;把和求反码填入检验和字段;去掉伪首部,发送。
在接收端校验处理过程:填上伪首部;;伪首部+首部+数据部分采用二进制反码求和;结果全为1则无差错,否则丢弃数据报或者交给应用层并附上出差错的警告。