第五章:运输层
SS5.1 运输层协议概述
1 进程之间的通信
A 运输层要实现复用和分用:
复用:发送方不同进程都能使用用一个运输层协议传送数据
分用:接收方的运输层在剥去报文首部后能将这些数据交付给正确的应用
B 运输层提供应用进程间的逻辑通信,而网络层提供主机间的通信服务
C 运输层要对收到的报文进行差错检测
D 两种不同的运输层协议
面向连接的TCP(传输控制协议)、无连接的UDP(用户数据报协议)
E 运输层向高层用户屏蔽了下面网络核心的细节,使应用进程看见的好像在两个运输层实体间有端到端的逻辑通信信道
2 运输层的端口
应用层和运输层之间设置通信的抽象终点,称为协议端口,简称端口,每一个端口用一个称为端口号的正整数来标志,是软件端口,与硬件设备上的端口不是一个概念
TCP/IP用一个16位端口号来标志一个端口(最多65535个),只在本计算机上有意义
两类端口号:
服务器端使用的端口号:(两类)
熟知端口号(全球通用端口号):0-1023,重要的应用程序
登记端口号:1024-49151:为没有熟知端口号的应用程序使用(要在IANA登记,防止重复)
客户端使用的端口号(短暂端口号):49152-65535:临时使用的端口号
SS5.2 用户数据报协议UDP
A UDP概述
UDP实现的功能:在IP数据报服务基础上添加了很少的两点:
1 检错码实现差错检测
2 端口号实现分用复用
UDP的主要特点:
1 无连接
2 尽最大努力交付
3 面向报文:UDP对应用层交下来的报文,添加了UDP首部后就向下交给网络层,不对报文长度、内容做出任何改变,当网络层接收到超长或超短的报文会进行分片或填充处理(因而网络层效率会降低)
4 没有拥塞控制:许多实时应用要求源主机以恒定速率发送数据,传输过程中出现一点差错不要紧,因此UDP十分适合
5 支持一对一、一对多、多对一和多对多的交互通信
6 首部开销小,仅8字节
B UDP报文首部
UDP有两个字段,首部字段和数据字段,首部字段8字节,由四个字段组成,每个字段长度都是2字节
1 源端口,源端口号,需要对方回信时使用,不需要回信时可用全0
2 目的端口,目的端口号,在终点交付报文时必须使用
3 长度,UDP用户数据报的长度,包含首部及数据报长度,最小值是8(仅有首部)
4 检验和,检测UDP用户数据报在传输中是否有错,错就丢弃
注意,ICMP差错报告报文选取错误的IP数据报首部及首部后8字节就是提取UDP的首部
另外,使用traceroute追踪时就是使用了一个不可达的端口从而达到测试目的
伪首部:并非真实存在的首部,只在计算检验和时添加在UDP用户数据报首部的12字节(凑成20字节,从而使用与IP数据报相似的检验和计算方法,但IP数据报只检验首部,UDP需要检验带上伪首部的首部和数据)