运输层;运输层向上层的应用层提供服务.
IP协议会将分组从一个主机发送到另一个主机,该分组还停留在网络层。
但端到端的通信是两个应用进程之间的通信,此时还需要
运输层的复用:一台主机的多个应用进程与另一主机上多个应用进程通信。
当用浏览器浏览网页时候,该主机应用层上会运行浏览器客户进程,
当使用电子邮件发送时候,应用层上会运行电子邮件的客户进程。
发送方不同的应用进程使用同一个运输层传输数据。
运输层的分用:接收方的应用层将报文剥去首部和尾部,提供给不同应用进程。
运输层的应用:
(1)两个主要的协议
UDP(user datagram protocol)用户数据报协议
TCP(transmission control protocol)传输控制协议
OSI体系中两个对等实体在通信的数据单元为运输协议数据单元(transport protocol data unit),
TCP/IP协议体系中,根据使用的协议是TCP或者IP,称作TCP报文段和UDP用户数据报。
TCP提供面向连接的服务,开始要先建立连接,数据发送完成后要释放连接。
如何对TCP/IP体系中应用的进程进行标识呢?
使用协议端口(protocol port)进行,该端口是软件端口,
是各种协议进程与运输层实体进行交互的地点。
端口有数据缓存的功能,设有队列实现,一次发送过多数据时候会产生排队时延。
TCP/IP运输层使用同一个世界位端口号标识一个端口。端口号只具有本地意义,标识本主机应用层各个应用进程和运输层之间交互的应用接口。
所以不同主机应用进程之间通信时候,不止需要知道IP地址,还需要知道端口号。
端口号分类:
(1)服务端使用的端口号
一类是熟知端口号(或全球通用端口号):1-1023,给了一些重要的程序。
如HTTP为80;
另一位为登记端口号:1024-49151;为没有熟知端口号的应用使用,
(2)客户端使用的端口号:
49152-65535;在客户端运行时动态选择,叫做短暂端口号,通信结束后立即被收回。
UDP用户数据报协议
特点
(1)无连接,减少了时延,尽最大努力交付;
(2)需要面向报文,对应用层交付的报文,直接添加首部后,向下交付网络层,一次交付一个完整报文,不进行分割;而接收端,对于受到的报文,直接去除首部,然后直接向上交付应用层。
(3)没有拥塞控制,很多实时应用(IP电话等)要求发送速率恒定,即使出现网络拥塞时候丢失一些数据也可以。
(4)支持一对一,一对多,多对一,多对多的通信。
(5)首部开销小,只有8个字节。
(5)具有分用和复用功能,在开头介绍运输层时提及了,
UDP首部格式
(1)源端口:源端口号,在回信时选用,不需要时候可以全0;
(2)目的端口:目的端口号。
(3)长度:数据报长度,最小为了,即首部长度。
(4)检验和:检验数据报传输时候是否出错,出错则丢弃。
计算检验和:
伪首部为计算检验和临时添加的,不会用于消息传递。
UDP检验和是将首部和数据部分一起检验;
(1)发送方首部检验和字段全部为0,整个UDP报文按16位分组,当数据报数据部分不足位时,用0补齐, 二进制反码运算求16位字的和,然后将结果写入检验和字段。
(2)最后接收方同样方法二进制反码计算和(不同的是此时检验和字段已经写入了先前发送方的计算结果,按此计算即可),结果全1则没有差错,否则出错,丢弃该报文。
最后说一下二进制反码求和运算规则:
低位到高位逐列计算,0和0相加得0.1和0得1,1和1相加得0产生进位1,加到下一个高位 上,如果最高位产生进位,结果的最低位上加1。