2.4 TCP/IP模型
和OSI模型类似,TCP/IP模型使用分层方法分解和隔离功能,但是用4层代替7层——分别是应用层、传输层、互联网层和网络接口层,如图2.3所示。
和OSI模型一样,我们从下往上研究各个层次。
2.4.1 网络接口层
网络接口层定义了主机与网络的连接方法,包括物理连接本身和用于数据传输的物理介质细节。有些令人困惑的是,以太网既是关键的网络接口协议,也是我们所关心的物理介质。
以太网将在第3章中详细介绍。
2.4.2 互联网层
互联网层定义了整个网络中编址和数据交付的机制。在这一层中运作的协议包括IP、ARP、ICMP和IGMP。
互联网协议(IP)定义了网络设备分配的逻辑地址。这一地址由网络地址和主机地址组成。网络地址用于将数据发往合适的目标网络,主机地址唯一标识目标网络中的主机。这些地址采用小数点格式,如192.168.1.100 ,你在以前可能已经遇见过,并且无数次地将它们分配给不同的设备。每个IP地址都定义一个子网掩码,可将地址解析为网络和主机部分。
地址解析协议(ARP)用于将IP地址转换为硬件地址,以将帧发往下一跳设备或者最终目标设备。ARP请求通过本地网络发送,询问那个网络接口有某个特定的IP地址。具有该IP地址的网卡发送ARP响应,包含了其硬件地址。
互联网控制消息协议(ICMP)用于控制通过网络的数据流、报告错误、进行诊断。最常用的ICMP命令是ping和tracert,用于验证连接性、确定主机之间的路径。
ICMP允许一台主机同时向许多目标发送数据。这称为组播(multicasting),这超出了本书讨论的范围,在此不做介绍。
互联网层将在第5章中更详细地研究。
2.4.3 传输层
传输层定义了主机间的连接类型,以及确认信息是否发送和如何发送。从使用的角度,该层只有两个协议可供选择:传输控制协议(TCP)和用户数据报协议(UDP)。
TCP是面向连接的协议,它建立、管理和终止网络连接。TCP保证数据的交付,包括流控、错误校验的支持,以及通过确认和重传恢复丢失的数据。
相反,UDP是无连接的协议,UDP数据不需要错误校正或者流控,因此不需要建立网络连接即可快速传输,也没有对数据到达指定目标作出确认。这听起来很糟糕,但是实际上并非如此,因为UDP对于流媒体等应用非常有用,在这种应用中数据的丢失总比重传丢失的包而引起延迟更好,在其他情况下,错误校正可以用更高层的应用,更有效地完成。
2.4.4 应用层
TCP/IP模型的应用层定义了端点运行的软件所使用的服务。当应用程序需要访问底层网络时,这一层通过将其转换为网络可传输格式处理请求。 这时,通过合适的端口建立连接。
端口是分配给应用程序或者协议的一类地址。TCP/UDP有65 536个端口。?互联网名称与数字地址分配机构(ICANN)将端口1~1023保留给著名的应用程序。端口1024~49151被称作“注册”端口,它们也在ICANN注册。端口49152~65535是私有(动态)端口,由各种应用根据需要使用。
端口0
如果你注意力很集中,可能会发现我们说有65 536个端口,然而分类中只有65 535个。从技术上说,保留端口的范围是0~1023,但是端口0被用于特定的目的,不被用于传递流量。端口0在Unix套接字编程中被作为一个快捷方式使用,请求端口0时,系统指定下一个可用的动态端口。这使编程人员省去了硬编码端口号或者编写代码确定可用动态端口的麻烦。
运行于这一层的协议包括用于请求和提供网页的HTTP(端口80)、用于文件传输的FTP(端口20和21)以及用于电子邮件的SMTP(端口25)。端口及其分配的完整列表可以在www.iana.org/assignments/port-numbers上找到。