网络编程基本原理

1、网络模型与协议

。。。。。。。。。。。。

2、地址

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

两种标识可以使用:

(1)物理地址

对于以太网来说,物理地址就是一个48位的位串,此地址在网卡的生产过程中就已经固定了,是不可更改的,并且是全球唯一的。

使用指令ifconfig可以查看到本机的物理地址

有些计算机可能会有多块网卡,每块网卡代表计算机的一个网络接口,我们称这种计算机为多宿主计算机。

(2)IP地址

TCP/IP协议能够使计算机之间进行与底层物理网络无关的通信,底层网络可以是以太网也可以是令牌环网或者是其他类型的网,两台

计算机可以位于不同的局域网内,但通过TCP/IP协议它能够进行通信。前面介绍的物理地址,虽然也能唯一的标识网络上的每台计算机,

但是物理地址依赖于底层网络(不同的底层网络采用不同的物理地址),因此必须使用一个与底层硬件技术无关的通用地址来标识网络

上的每台计算机,这就是IP地址。IP地址由32个比特位构成,它分为两部分:计算机所在的网络号和该网络给该计算机分配的主机号,

分别成为网络ID和主机ID

32位(4字节)的IP地址为了表示方便也是每个字节隔开,不过不是使用冒号而是使用点号,

例如IP地址 202.205.3.195 。一个字节可以表示的数的范围是0~255

因此在理论上IP地址的范围为:

0.0.0.0   ~ 255.255.255.255

但实际上有些地址是专用的,不能用来标识计算机。

IP地址按一定的格式分成5类:

A类 B类 C类 D类 E类

A类地址使用8位作为网络地址,其余24位为主机地址,网络地址的第一位固定为0

B类地址使用16位作为网络地址,其余16位为主机地址,网络地址的第一、第二固定为1 0

C类地址使用24位作为网络地址,其余8位为主机地址,网络地址的第一、第二、第三固定为1 1 0

TCP/IP上的每台主机还有一个32位的子网掩码,它用来区分IP地址的网络号和主机号。将IP地址与子网掩码进行

按位与运算就可以得到ip地址的网络号,网络号是一台主机所处的网络的编号。例如,ip地址为222.197.168.244

子网掩码为255.255.255.0  两者做与运算得到的结果为222.197.168.0,那么这台主机所处的网络编号为222.197.168.0

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

输入 ping  127.0.0.1  如果有回应说明本机上的TCP/IP协议工作正常。

3、端口

有了网络地址就可以唯一地标识网络上的每台计算机。通常 一台计算机上会同时运行多个程序,而他们可能要同时访问网络。

对于一个计算机上的多个应用程序,TCP和UDP协议采用16位的端口号来识别他们。一台主机上的不同进程可以绑定到不同的

端口上,这些进程都可以访问网路而互不干扰。

TCP/IP将端口号(16位的无符号整数,0~65535)分为两部分,

一部分是暴力端口即知名端口,范围0~1023,这些端口由权威机构规定其用途,如编号为21的TCP端口由FTP协议专用。

80号TCP端口由HTTP协议专用

其余的为自由端口,用户进程可自由申请和使用。

4、IP协议

5、用户数据报协议UDP

UDP协议位于传输层,在网络层之上而在应用层之下。UDP协议向应用程序提供一种面向无连接的服务,通常UDP协议被

用于不需要可靠数据传输的网络环境中。UDP不需要建立连接,应用程序采用UDP协议无需建立和维持连接。UDP协议不

保证数据报按顺序、正确地到达目的地,这项任务由应用程序来完成。

6、传输控制协议TCP

(1)TCP数据包的格式

TCP提供一种面向连接的、可靠的数据传输服务。

(2)使用TCP进行通信的过程

-----------建立连接

-----------关闭

7、客户机/服务器模型

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

有些应用程序,请求服务的同时也提供一定的服务,如果拆开来看,这种程序也是基于客户机/服务器模型。

客户机/服务器模型既可以使用TCP协议也可以使用UDP协议,或者两者混合使用,可根据具体需要而定。在客户机/服务器模型中,通常服务器端

的IP地址和端口号是固定的,客户端程序连接到服务器IP和端口。通常客户端的程序设计相对要简单一些。而服务器程序由于要考虑多个客户端

同时请求服务的问题,设计上相对复杂一些。

原文地址:https://www.cnblogs.com/zhangxuan/p/6760812.html