Linux网络编程--网络编程基本原理

来源:互联网 发布:淘宝嘉联华 编辑:程序博客网 时间:2024/05/21 07:52

1.网络模型与协议

为了减少协议设计的复杂性,大多数网络模型都是按层的方式来组织的。在分层网络模型中,每一层都为上一层提供一定的服务,而把如何实现本层服务的细节对上一层加以屏蔽。上层只需知道下层提供了什么功能以及对这些功能的接口,而不必关心下一层如何实现这些功能。
TCP/IP各层功能如下:
这里写图片描述 这里写图片描述

[1].网络接口层

网络接口层包括多种逻辑链路控制和媒体访问协议。它负责将网络层发送来的数据分成帧,并通过物理链路进行传送,或从网络上接收物理帧,抽取数据并转交给其上的网络层。

[2].Internet层(网络层

网络层负责在发送端和接受端之间建立一条虚拟路径。这一层的主要协议是IP协议(百度IP协议)。IP协议并不保证数据能完整正确的到达目的地,这个任务由它上面的传输层来完成。这一层的ARP协议(地址解析协议 百度ARP协议)和RARP协议(反向地址解析协议 百度RARP协议)用于IP地址和物理地址的相互转换。如果数据在传输过程中出现问题,该层的ICMP协议(百度ICMP协议)将生产错误报文。

[3].传输层

传输层通过位于该层的TCP(传输控制协议 百度TCP协议)协议或UDP(用户数据报协议百度UDP协议)协议在两台主机间传输数据。

[4].应用层

应用层面向用户提供一系列访问网络的协议,如用于传输文件的FTP协议、用于远程登录的Telenet协议、用于发送电子邮件的SMTP协议(简单邮件传输协议)、以及最常用的用于浏览网页的HTTP协议(超文本传输协议)。

2.地址

为了使网络上的计算机能进行互相通信,必须有一个惟一的标识来区分网络上每台计算机。

[1].物理地址

对于以太网来说,物理地址就是一个48 位的位串,此地址在网卡的生产过程中就已经固定了,是不可更改的,并且是全球惟一的。用16进制表示的网卡地址,每个字节用冒号隔开。有些计算机可能会有多块网卡,每块网卡代表计算机的一个网络接口,这种计算机称为多宿主计算机。

[2].IP地址

IP由32个比特位构成,它分为两部分:计算机所在的网络号和该网络给该机算计分配的主机号,分别被称为网络ID和主机ID。IP地址为了方便也是每字节隔开,不过不是用冒号而是点号。
理论上IP的范围为:0.0.0.0~255.255.255.255,但实际上有些地址是专用的,不能用来标识计算机。

127.0.0.1,它指代本机,用于测试本机上的TCP/IP协议是否正常工作。

TCP/IP上的每台主机还有一个32位的子网掩码,它用来区分IP地址的网络号和主机号。将IP地址与子网掩码进行按位“与”运算就可以得到IP地址的网络号,网络号是一台主机所处的网络的编号。

3.端口

1.通常一台计算机上同时运行多个程序,而它们可能同时要访问网络。对于一台计算机上的多个应用程序,TCP和UDP协议采用16位的端口号来识别它们。一台主机上的不同进程可以绑定到不同的端口上,这些进程都可以访问网络而互不干扰。

2.端口号是一个16位的无符号整数,因此端口号的范围是0~2^16,即0~65535。

3.TCP/IP将端口号分为两部分:一部分是保留端口即知名端口,范围为0~1023,这些端口由权威机构规定其用途;其余的为自由端口,用户进程可以自由申请和使用。

4.客户机/服务器模型

网络中的实际应用大多都可以归纳为客户机/服务器模型(Client/Seerver模型、C/S模型),其中客户机是指请求服务的一方,服务器是指提供某种服务的一方。

0 0
原创粉丝点击