五十二、linux 编程——网络介绍
52.1 网络介绍
- 使用远程资源
- 共享信息、程序和数据
- 分布处理
52.1.1 协议的概念
- 计算机网络中实现通信必须有一些约定,如对速率、传输代码、代码结构、传输控制步骤和出错控制等约定,这些约定即被称为通信协议
- 在两个节点之间要成功地进行通信,两个节点之间必须约定使用共同的“语言”,这些被通信各方共同遵守的约定、语言、规则被称为协议
- 在 Internet 中,最为通用的网络协议是 TCP/IP 协议
52.1.2 网络分层模型
- 应用层:制定完成某些用户初始化任务的方法。应用协议通常由应用开发者设计和实现。如 FTP、skype灯
- 表示层:指定对应用的数据表示格式和转换规则的方法
- 会话层:指定由多个连接组成一个通信回话的方法。包括关闭连接、重启连接和检查点进程
- 传输层:指定运行在相同计算机系统中的多个程序之间的连接或关联的方法,如果在其他地方没有实现,本层可能实现可靠的传输
- 网络层:指定经过潜在不同类型链路层网络的多跳通信方法。对于分组网络,它描述了抽象的分组格式和标准的地址结构
- 链路层:指定经过单一链路通信的方法,包括多个系统共享同一介质时的“介质访问”控制协议。本层通常包括差错检测和链路层地址格式
- 物理层:指定连接器、数据速率和如果在某些介质上进行位编码。本层也描述了底层的差错检测和纠正、频率分配。
52.1.3 OSI模型与TCP/IP模型对应关系
51.2 TCP/IP 协议族
数据包封装:
51.2.1 协议族介绍
- TCP/IP 实际上是一个一起工作的通信家族,为网际数据通信提供通路
- TCP/IP 协议族大体上分为三部分
- Internet 协议(IP)
- 传输控制协议(TCP)和用户数据报文协议(UDP)
- 处于 TCP 和 UDP 之上的一组协议开发的应用程序。它们包括:
- 远程登录:TELNET
- 文件传送协议:FTP
- 域名服务:DNS
- 简单的邮件传送程序:SMTP
- 等其他协议
51.2.2 网络层协议
- Internet 协议(IP)
- 该协议本设计成互联分组交换通信网,以形成一个网际通信环境。它负责在源主机和目的主机之间传输来自其较高层软件的称为数据报文的数据块,它在源和目的地之间提供非连接型传递服务。
- IP 的主要目的是为数据输入/输出网络提供基本算法,为高层协议提供无连接的传送服务。这意味着在 IP 将数据递交给接收站点以前不在传输站点和接收站点之间建立对话(虚拟链路)。它只是封装和传递数据,但不向发送者或接收者报告包的状态,不处理所遇到的故障。
- IP 协议有以下四个主要功能:
- 数据传送
- 寻址
- 路由选择
- 数据报文的分段
- IP 协议不注意包内的数据类型,它所知道的一切是必须将某些称为 IP 帧头的控制协议加到高层协议(TCP 或 UDP)所接收的数据上
- 网络层其他数据路由协议
- 路由协议分析数据包的地址并且决定传输数据到目的电脑最佳路线。它们也可以把大的数据分成几部分,并且在目的地再把它们组合起来。IP 处理实际上传输数据
- 网际控制报文协议(ICMP,Internet Control Message Protocol)处理 IP 的状态信息,比如能影响路由决策的数据错误或改变。ICMP 实际上不是IP 层部分,但直接同 IP 层一起工作,报告网络上的某些出错情况。允许网际路由器传输差错信息或测试报文
- RIP(路由信息协议,Routing Information Protocol),它是几个决定信息传输的最佳路由协议中的一个
- OSPF(Open Shortest Path First)一个用来决定路由的协议
- 地址解析协议(ARP,Address Resolution Protocol)确定网络上一台电脑的数字地址。ARP 实际上不是网络层部分,它处于 IP 和数据链路层之间,它是在 32位 IP 地址和 48 位局域网物理地址之间执行翻译的协议。
- DNS(域名系统,Domain Name System)从机器的名字确定一个机器的数字地址
- RARP(反向地址解析协议,Reverse Address Resolution Protocol)确定网络上一台计算机的地址,和 ARP 正好相反
- 路由协议分析数据包的地址并且决定传输数据到目的电脑最佳路线。它们也可以把大的数据分成几部分,并且在目的地再把它们组合起来。IP 处理实际上传输数据
51.2.3 传输层协议
- 传输控制协议(TCP)
- 可靠的面向连接的传输层服务
- 主要功能:
- 监听输入对话建立请求
- 请求另一网络站点对话
- 可靠的发送和接收数据
- 适度的关闭对话
- TCP(传输控制协议 Transmission Control Protocol)是重要的传输层协议,TCP 提供一种面向连接的、可靠的字节流服务
- TCP 协议的目的是允许数据同网络上的另外站点进行可靠的交换。它能提供端口编号的译码,以识别主机的应用程序,而且完成数据的可靠传输
- TCP 协议具有严格的内装差错检验算法确保数据的完整性
- TCP 协议是面向字节的顺序协议,这意味着包内的每个字节被分配一个顺序编号,并分配给每包一个顺序编号
- 用户数据报文协议(UDP)
- UDP 提供不可靠的非连接型传输层服务
- 它允许在源和目的地站点之间传送数据,而不必在传送数据之前建立对话
- 不使用 TCP 使用的端对端差错校验
- 传输层功能全部发挥,而开销却比较低
- 主要用于那些不要求 TCP 协议的非连接型应用程序。例如,名字服务、网络管理、视频点播和网络会议灯。
- UDP(用户数据报协议 User Datagram Protocol)也是 TCP/IP 的传输层协议,它是无连接的,不可靠的传输服务。当接收数据时,它不向发送方提供确认信息,它不提供输入包的顺序,如果出现丢失包或重份包的情况,也不会向发送方发出差错报文
- 它允许在源和目的地站点之间传送数据,而不必在传送数据之前建立对话
- 不使用 TCP 使用的端对端差错校验
- 传输层功能全都发挥,而开销却比较低
- 由于它执行功能时具有较低的开销,因而执行速度比 TCP 快。它多半用于不需要可靠传输的应用程序,例如网络视频点播和视频会议等。
- UDP 提供不可靠的非连接型传输层服务
- TCP 和 UDP 协议的区别
- TCP 以连接为基础,即两台电脑必须先建立一个连接,然后才能传输数据。事实上,发送和接受的电脑必须一直互相通讯和联系
- UDP 是一个无连接服务,数据可以直接发送而不必在两台电脑之间建立一个网络连接。它和有连接的 TCP 相比,占用带宽少,但是无法确认数据是否真正到达了客户端,而客户端收到的数据也不知道是否还是原来的发送顺序
51.2.4 应用层协议
- BOOTP(启动协议,Boot Protocol)由网络服务器上取得启动信息,然后将本地的网络计算机启动
- Telnet(远程登录)允许一个远程登录,使用者可以从网络上的一台机器通过 TELNET 连线到另一台机器,就像使用者直接在本地操作一样
- FTP 和 TFTP:文件传送协议
- FTP(文件传输协议,File Transfer Protocol)通过国际互联网从一台计算机上传输一个或多个文件到另外一台计算机
- SMTP:简单的文件传送协议
- EGP(外部网关协议,Exterior Gateway Protocol)为外部网络传输路由信息
- GGP(网关到网关协议,Gateway-to-Gateway Protocol)在网关和网关之间传输路由协议
- IGP(内部网关协议,Interior Gateway Protocol)在内部网络传输路由信息
- DNS:域名服务
51.3 IP 地址
51.3.1 介绍
- 在 TCP/IP 网络中,每个主机都由唯一的地址,它是通过 IP 协议来实现的
- IP 协议要求在每次与 TCP/IP 网络建立连接时,每台主机都必须为这个连接分配一个唯一的 32 位地址,因为在这个 32 位 IP 地址中,不但可以用来识别某一台主机,而且还隐含着网际间的路径信息
- 主机是指网络上的一个节点,不能简单地理解为一台计算机,实际上 IP 地址是分配给计算机的网络适配器(即网卡)的,一台计算机可以由多个网络适配器,就可以由多个 IP 地址,一个网络适配器就是一个节点。
- IP 地址为 32 位地址,一般以 4 个字节表示。每个字节的数字又用十进制表示,即每个字节的数的范围是 0~255,且每个数字之间用点隔开,例如:192.168.0.112,这种记录方法称为“点-分”十进制记号法。IP 地址的结构如下所示:
- 192 为网络类型;168.0 为网络 ID;112 为主机 ID
51.3.2 IP 地址的分类
51.4 端口
51.4.1 端口号
- TCP/UDP 协议使用 16 位整数存储端口号,所以每个主机拥有 65535 个端口
- 一些端口被 IANA 分配给制定应用
- 21:FTP
- 23:Telnet
- 80:HTTP
- RFC 1700(大约有2000个保留端口)