本文了解的具体内容与核心
TCP/IP 协议体系
- 应用层:为网络用户提供各种服务,例如电子邮件、文件传输等。
- 表示层:为不同主机间的通信提供统一的数据表示形式。
- 会话层:负责信息传输的组织和协调,管理进程会话过程。
- 传输层:管理网络通信两端的数据传输,提供可靠或不可靠的传输服务。
- 网络层:负责数据传输的路由选择和网际互连。
- 数据链路层,负责物理相邻(通过网络介质相连)的主机间的数据传输,主要作用包括物理地址寻址、数据帧封装、差错控制等。该层可分为逻辑链路控制子层(LLC)和介质访问控制子层(MAC)。
- 物理层,负责把主机中的数据转换成电信号,再通过网络介质(双绞线、光纤、无线信
道等)来传输。该层描述了通信设备的机械、电气、功能等特性。
通常,上述的传输层、网络层、数据链路层和物理层又被依次称为第四层、第三层、第二层和第一层。相比于OSI体系,TCPIP 协议体系的架构更加简单实用:
说明:
注意:
- 除了上述标准的四个层次外,TCP/IP协议体系还需要路由协议来管理数据传输路径,ARP协议来管理本地网络寻址。这两部分都在Linux网络内核中实现
- 为支持应用程序访问网络服务,内核提供了编程接口,即套接字接口。(俗称网络编程)
网络数据包的封装与解封
以 FTP 客户/服务器工作过程为例,描述 TCP/IP 协议体系处理流程
文字描述流程:
发送
- 第一,在应用层,FTP 协议模块在文件数据前部添加 FTP 头部(标准的 FTP 协议数据段),把文件数据封装成FTP数据:
- 第二,在传输层,TCP协议模块在FTP数据前部添加TCP头部(标准的 TCP协议数据段),把FTP数据封装成TCP数据(段):
- 第三,在网络层,IP协议模块在 TCP 数据前部添加 IP 头部(标准的 I P协议数据段),把 TCP 数据封装成 IP 数据(分组);
- 第四,在网络介质层,以太网设备驱动程序在数据前部和后部添加以太网头部和尾部(标准的以太网数据段),把IP数据封装成以太网数据(帧)。
- 最后,以太网设备把以太网数据转换成电信号,通过以太网线将数据信号传给客户端。
接收
- 第一,检测到网线上的电平信号后,以太网卡尝试把收到的数据转换成完整的以太网数据:
- 第二,如果以太网卡成功获取一个发给本客户端的数据,则启动驱动程序去掉以太网数据的头部和尾部,得到被封装的IP数据,并将该数据递交给网络层;
- 第三,在网络层,IP 协议模块去掉 IP 数据头部,还原被封装的 TCP 数据,并递交给传输层;
- 第四,在传输层,TCF协议模块去掉 TCP 数据头部,还原被封装的FTP 数据,并递交给应用层:
- 第五,在应用层FTP协议模块去掉 FTP数据头部,还原被封装的文件数据。
分片知识补充
传输文件时,TCP/IP协议体系必须考虑网络介质对网络数据单元的尺寸限制。当文件长度超出了最大尺寸限制时,服务器端把文件数据分成一些小的分片,然后分别封装发送。当接收到这些分片后,客户端把分片重新组合成原始文件。
linux网络内核组成
- 套接字接口:网络内核最顶层是支持应用程序开发的函数接口,这是一系列标准函数。
- 套接字支持多种不同类型的协议族:UNIX域协议族、TCP/IP协议族、IPX协议族等。本书只讨论TCP/IP协议族对应的套接字(INET套接字),该套接字又包括3个基本类型:SOCK_STREAM、SOCK_DGRAM和SOCK_RAW。通过SOCK_STREAM接可以访问TCP协议、SOCK_DGRAM套接字可以访问UDP协议、SOCK_RAW套接字可以直接访问IP协议。可见,套接字接口是网络内核的入口。
- 传输层和网络层。套接字往下依次是传输层和网络层。传输层包括标准的TCP和 UDP协议模块,而网络层包括标准的 IP 协议模块。
- 数据链路层。对于需要逻辑链路的网络,