科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道Linux系统下广播程序制作介绍(上) (1)

Linux系统下广播程序制作介绍(上) (1)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

在一个IP(Internet Protocol)网络中,每一台计算机都有一个32位的IP地址。每台计算机的IP地址都是唯一的。WWW是一个范围十分大,并且不断增长的IP网络,所以网络上的每台计算机都必须有一个唯一的IP地址。

作者:meiyuan 来源:赛迪网技术社区 2007年10月22日

关键字: 操作系统 制作 广播 Linux

  • 评论
  • 分享微博
  • 分享邮件
 

TCP/IP网络的主要原理

在一个IP(Internet Protocol)网络中,每一台计算机都有一个32位的IP地址。每台计算机的IP地址都是唯一的。WWW是一个范围十分大,并且不断增长的IP网络,所以网络上的每台计算机都必须有一个唯一的IP地址。IP地址是用.分隔开的4个十进制数,例如16.42.0.9。实际上IP地址可以分为两部分:一部分是网络地址,另一部分是主机地址,例如,在16.42.0.9中,16.42是网络地址,0.9则为主机地址。而主机地址又可以分为子网地址和主机地址。计算机的IP地址很不容易记忆,如果使用一个名字就可以方便得多。如果使用名字,则必须有某一种机制将名字转化为IP地址。这些名字可以静态地保存在/etc/hosts文件中,或者Linux系统请求域名服务器(DNS服务器)来转换名字。如果使用DNS服务器的话,本地的主机则必须知道一个或者多个DNS服务器的IP地址,这些信息保存在/etc/resolv.conf文件中。

当你和其他计算机相连时,系统要使用IP地址和其他计算机交换数据。数据保存在IP数据包中。每一个IP数据包都有一个IP数据头,其中包括源地址和目的地址,一个数据校验和以及其他一些有关的信息。IP数据包的大小随传输介质的不同而不同,例如,以太网的数据包要大于PPP的数据包。目的地址的主机在接收数据包后,必须再将数据装配起来,然后传送给接收的应用程序。

连接在同一个IP子网上的主机之间可以直接传送IP数据包,而在不同子网之间的主机却要使用网关。网关用来在不同的子网之间传送数据包。

IP协议是一个传输层的协议,其他的协议可以利用IP协议来传输数据。TCP(Transmission Control Protocol)协议是一个可靠的点到点之间的协议,它使用IP协议来传送和接收自己的数据包。TCP协议是基于连接的协议。需要通信的两个应用程序之间将建立起一条虚拟的连接线路,即使其中要经过很多子网、网关和路由器。TCP协议保证在两个应用程序之间可靠地传送和接收数据,并且可以保证没有丢失的或者重复的数据包。当TCP协议使用IP协议传送它自己的数据包时,IP数据包中的数据就是TCP数据包本身。相互通信的主机中的IP协议层负责传送和接收IP数据包。每一个IP数据头中都包括一个字节的协议标识符。当TCP协议请求IP协议层传送一个IP数据包时,IP数据头中的协议标识符指明其中的数据包是一个TCP数据包。接收端的IP层则可以使用此协议标识符来决定将接收到的数据包传送到那一层,在这里是TCP协议层。

当应用程序使用TCP/IP通信时,它们不仅要指明目标计算机的IP地址,也要指明应用程序使用的端口地址。端口地址可以唯一地表示一个应用程序,标准的网络应用程序使用标准的端口地址,例如,web服务器使用端口80。你可以在/etc/services中查看已经登记的端口地址。

IP 协议层也可以使用不同的物理介质来传送IP数据包到其他的IP地址主机。这些介质可以自己添加协议头。例如以太网协议层、PPP协议层或者SLIP协议层。以太网可以同时连接很多个主机,每一个主机上都有一个以太网的地址。这个地址是唯一的,并且保存在以太网卡中。所以在以太网上传输IP数据包时,必须将IP数据包中的IP地址转换成主机的以太网卡中的物理地址。Linux系统使用地址解决协议( ARP)来把IP地址翻译成主机以太网卡中的物理地址。希望把IP地址翻译成硬件地址的主机使用广播地址向网络中的所有节点发送一个包括IP地址的ARP请求数据包。拥有此IP地址的目的计算机接收到请求以后,返回一个包括其物理地址的ARP应答。ARP协议不仅仅限于以太网,它还可以用于其他的物理介质,例如FDDI等。那些不能使用ARP的网络设备可以标记出来,这样Linux系统就不会试图使用ARP。系统中也有一个反向的翻译协议,叫做RARP,用来将主机的物理地址翻译成IP地址。网关可以使用此协议来代表远程网络中的IP地址回应ARP请求。

BSD 套接口

BSD 套接口是最早的网络通信的实现,它由一个只处理BSD 套接口的管理软件支持。其下面是INET套接口层,它管理TCP协议和UDP协议的通信末端。UDP(User Datagram Protocol)是无连接的协议,而TCP则是一个可靠的端到端协议。当网络中传送一个UDP数据包时,Linux系统不知道也不关心这些UDP数据包是否安全地到达目的节点。TCP数据包是编号的,同时TCP传输的两端都要确认数据包的正确性。IP协议层是用来实现网间协议的,其中的代码要为上一层数据准备IP数据头,并且要决定如何把接收到的IP数据包传送到TCP协议层或者UDP协议层。在IP协议层的下方是支持整个Linux 网络系统的网络设备,例如PPP和以太网。网络设备并不完全等同于物理设备,因为一些网络设备,例如回馈设备是完全由软件实现的。和其他那些使用mknod命令创建的Linux系统的标准设备不同,网络设备只有在软件检测到和初始化这些设备时才在系统中出现。当你构建系统内核时,即使系统中有相应的以太网设备驱动程序,你也只能看到/dev/eth0。ARP协议在IP协议层和支持ARP翻译地址的协议之间。

================================ 
网络应用程序 
用户层 
-------------------------------- 
BSD 核心层 
套接口层 
| 
LNET 
套接口层 
| 
/   \ 
TCP UDP 
| 
IP 
| 
PPP | SLIP | Ethernet ---> ARP 

================================

BSD是UNIX系统中通用的网络接口,它不仅支持各种不同的网络类型,而且也是一种内部进程之间的通信机制。两个通信进程都用一个套接口来描述通信链路的两端。套接口可以认为是一种特殊的管道,但和管道不同的是,套接口对于可以容纳的数据的大小没有限制。Linux支持多种类型的套接口,也叫做套接口寻址族,这是因为每种类型的套接口都有自己的寻址方法。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章