网络编程学习(一)
进程与线程
进程是处于运行过程中的程序实例,是操作系统调度和分配资源的基本单位
一个进程实体由程序代码(规定进程所作的计算)、数据(计算的对象)和进程控制块(操作系统为了控制进程所建立的数据结构,操作系统用来管理进程的内核对象)3部分构成,系统给进程分配一个地址空间,用来装入进程的所有可执行模块或动态链接库模块的代码和数据。进程还包含动态分配的内存空间,如线程堆栈和堆分配空间。
进程是分配资源的单位,但不是执行和调动的单位,若要使进程完成某项工作,必须拥有一个在他环境中运行的线程,该线程负责执行包含在进程地址空间中的代码。单个进程可能包含若干个线程,所有线程都”同时“执行进程地址空间中的代码。每个线程都有他自己的一组CPU寄存器和他自己的堆栈。要使所有这些线程都能够运行,操作系统就要为每个线程安排一定的CPU时间。它通过一种循环的方式为线程提供时间片(称为量程),造成所有线程都是同时运行的假象。
网络应用程序
功能上网络应用程序分为两部分:
一部分是专门负责网络通信的模块;他们与网络协议栈相连接,借助网络协议栈提供的服务完成网络上的数据信息的交换。
另一部分是面向用户或者其他进行处理的模块,接受用户的命令,或者对借助网络传输过来的数据进行加工。
网间进程通信必须解决的问题
1、网间进程的标识问题,同一主机中,不同的进程可以用进程号唯一标识,但在网络环境中,个主机独立分配的进程号已经不能唯一的标识一个进程
2、与网络协议栈链接的问题。网间的通信实际是借助网络协议栈实现的。应用进程把数据交给下层的传输层协议实体,调用传输层提供的传输服务,传输层及其下层协议将数据层层向下递交,最后由物理将数据转化为信号,发送到网上,经过各种网络设备的寻径和存储转发,才能到达目标主机。
3、多重协议的识别问题。现行的网络体系结构有很多 (TCP/IP,IPX/SQX)
操作系统往往支持众多的网络协议。不同协议的工作方式不同,地址格式也不同。
4、不同的通信服务的问题。随着网络应用的不同,网间进程通信 所需要的通信服务就会有不同的要求。
端口的概念
端口是TCP/IP
协议簇中,应用层进程与传输层协议实体间的通信接口。在OSI七层协议的描述中,将他称为应用层进程与传输层协议实体间的服务访问点。应用层进程通过系统调用与某个端口进行绑定,然后就可以通过这个端口进行数据传输,因为应用进程在数据通信时,必须用到一个端口,他们之间有一一对应关系
OSI
七层网络协议:- 分层 功能
应用层 网络服务与最终用户的一个接口(可理解为人机交互界面)
表示层 数据的表示,安全,压缩
会话层 建立,管理,终止会话
传输层 定义传输数据的协议端口号,以及流控和差错校验
网络层 进行逻辑地址寻址,实现不同网络之间的路径选择
数据链路层 建立逻辑连接,进行硬件地址寻址,差错校验等功能
物理层 建立,维护,断开物理连接
端口分配机制
TCP/IP采用了全局分配(静态分配)和动态分配相结合的办法。对TCP或者UDP,将他们的全部65535个端口号分别为保留端口号和自由端口号两部分
保留端口号的范围是0到1023,又称为众所周知的端口或熟知端口,只占少数,采用全局分配或者集中控制的方式,由一个公认的中央机构根据需要进行统一分配,静态分配给Internet上众所周知的服务器进程。
其余的端口号,1024~65535,称为自由端口号,采用本地分配
端口0:不使用或者作为特殊用途
端口1到255:保留给特定的服务。TCP和UDP均规定,小于256的端口号才能分配给网上众所周知的服务
端口256到1023:保留给其他服务,如路由
端口1204到4999:可以作为任意用户的端口
端口5000到65535:可以用作用户的服务器端口
DHCP:服务器端的端口号是67
DHCP:客户机端的端口号是68
POP3:POP3仅仅是接收协议,POP3客户端使用SMTP向服务器发送邮件。POP3所用的端口号是110。
-
SMTP:端口号是25。SMTP真正关心的不是邮件如何被传送,而只关心邮件是否能顺利到达目的地。
-
SMTP具有健壮的邮件处理特性,这种特性允许邮件依据一定标准自动路由,SMTP具有当邮件地址不存在时立即通知用户的能力,并且具有在一定时间内将不可传输的邮件返回发送方的特点。
-
``
-
Telnet:端口号是23。Telnet是一种最老的Internet应用,起源于ARPNET。它的名字是“电信网络协议(Telecommunication Network Protocol)”的缩写。
-
``
-
FTP:FTP使用的端口有20和21。20端口用于数据传输,21端口用于控制信令的传输,控制信息和数据能够同时传输,这是FTP的特殊这处。FTP采用的是TCP连接。
-
TFTP:端口号69,使用的是UDP的连接。
-
DNS:53,名称服务 NetBIOS:137,138,139,其中137、138是UDP端口,当通过网上邻居传输文件时用这个端口。而139端口:通过这个端口进入的连接试图获得NetBIOS/SMB服务。这个协议被用于windows文件和打印机共享和SAMBA。还有WINS Regisrtation也用它。
-
NNTP 网络新闻传输协议:119
-
SNMP(简单网络管理协议):161端口
-
RPC(远程过程调用)服务:135端口
-
QQ:使用8000(服务端)和4000端口(客户端)
-
21 端口:21 端口主要用于FTP(File Transfer Protocol,文件传输协议)服务。
-
22 端口:SSH 为 Secure shell 的缩写,专为远程登录会话和其他网络服务提供安全性的协议。
-
``
-
23 端口:23 端口主要用于Telnet(远程登录)服务,是Internet上普遍采用的登录和仿真程序。
-
``
-
25 端口:25 端口为SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)服务器所开放,主要用于发送邮件,如今绝大多数邮件服务器都使用该协议。
-
``
-
53 端口:53 端口为DNS(Domain Name Server,域名服务器)服务器所开放,主要用于域名解析,DNS 服务在NT 系统中使用的最为广泛。
-
``
-
67、68 端口:67、68 端口分别是为Bootp 服务的Bootstrap Protocol Server(引导程序协议服务端)和Bootstrap Protocol Client(引导程序协议客户端)开放的端口。
-
``
-
69 端口:TFTP 是Cisco 公司开发的一个简单文件传输协议,类似于FTP。
-
``
-
79 端口:79 端口是为Finger 服务开放的,主要用于查询远程主机在线用户、操作系统类型以及是否缓冲区溢出等用户的详细信息。
-
``
-
80 端口:80 端口是为HTTP(HyperText Transport Protocol,超文本传输协议)开放的,这是上网冲浪使用最多的协议,主要用于在WWW(World Wide Web,万维网)服务上传输信息的协议。
-
99 端口:99 端口是用于一个名为“Metagram Relay”(亚对策延时)的服务
-
该服务比较少见,一般是用不到的。
-
109、110 端口:109 端口是为POP2(Post Office Protocol Version2,邮局协议2)服务开放的,110 端口是为POP3(邮件协议3)服务开放的,POP2、POP3 都是主要用于接收邮件的。
-
111 端口:111 端口是SUN 公司的RPC(Remote Procedure Call,远程过程调用)服务所开放的端口,主要用于分布式系统中不同计算机的内部进程通信,RPC 在多种网络服务中都是很重要的组件。
-
113 端口:113 端口主要用于Windows 的“Authentication Service”(验证服务)。
-
119 端口:119 端口是为“Network News Transfer Protocol”(网络新闻组传输协议,简称NNTP)开放的。
-
``
-
135 端口:135 端口主要用于使用RPC(Remote Procedure Call,远程过程调用)协议并提供DCOM(分布式组件对象模型)服务。
-
``
-
137 端口:137 端口主要用于“NetBIOS Name Service”(NetBIOS名称服务)。
-
139 端口:139 端口是为“NetBIOS Session Service”提供的,主要用于提供Windows 文件和打印机共享以及Unix 中的Samba 服务。
-
``
-
143 端口:143 端口主要是用于“Internet Message Access Protocol”v2(Internet 消息访问协议,简称IMAP)。
-
``
-
161 端口:161 端口是用于“Simple Network Management Protocol”(简单网络管理协议,简称SNMP)。
-
443 端口:443 端口即网页浏览端口,主要是用于HTTPS 服务,是提供加密和通过安全端口传输的另一种HTTP。
-
``
-
554 端口:554 端口默认情况下用于“Real Time Streaming Protocol”(实时流协议,简称RTSP)。
-
1024 端口:1024 端口一般不固定分配给某个服务,在英文中的解释是“Reserved”(保留)。
-
1080 端口:1080 端口是Socks 代理服务使用的端口,大家平时上网使用的WWW 服务使用的是HTTP 协议的代理服务。
-
``
-
1755 端口:1755 端口默认情况下用于“Microsoft Media Server”(微软媒体服务器,简称MMS)。
-
1158端口:Oracle EMCTL
-
1521端口:Oracle 数据库
-
2100端口:Oracle XDB FTP服务
-
8080端口:Oracle XDB( XML 数据库)
-
3389端口:远程桌面
-
7001端口:WebLogic
-
8080端口:Tomcat
-
9080端口:WebSphere应用程序
进程的网络地址的概念
网络通信中通信的两个进程分别是在不同的计算机上,在Internet中,两台主机可能位于不同的网络中,这些网络通过网络的互连设备连接。因此在Internet中定位一个进程,需要一下三级寻址
1、某一主机总是与某个网络相连,必须指定主机所在的特定网址,称为网络ID
2、网络上每一台主机应有其唯一的地址,称为主机ID
3、每一主机上的每一应用进程应有在该主机上的唯一标识符
应用层进程=(传输层协议,本地机IP地址,本地机传输层口,传输层的端口号)
网络中进程通信的标识
一个完整的网间进程需要由两个进程组成,两个进程就是通信的两个端点,并且只能使用同一种传输层协议。
一个完整的网间通信需要一个五元组在全局中唯一标识:
(传输层协议,本地机IP地址,本地机传输端口,远地机IP地址,远地机传输层端口)
面向消息的协议 :面向消息的协议以消息为单位在网上传输数据,消息与消息之间存在边界。
保护消息边界是指传输协议把数据当作一条独立的消息在网上传播,接收端只能接受独立的消息。也就是说存在保护消息边界,接收端一次只能接受发送端发送的一条消息。(UDP)
基于流的协议:基于流的协议不保护消息边界,把数据当作字节流连续的传输,不管实际消息边界是否存在。(
面向连接的服务和无连接的服务
面向连接服务是电话系统服务模式的抽象,即每一次完整的数据传输都要经过建立连接、使用连接和终止连接的过程。TCP提供面向连接的虚电路传输服务,使用面向连接的协议,在进行数据交换之前,通信的对等实体必须进行握手,相互传送连接信息,一方面确定了通信的路径,另一方面还可以相互协商,做好通信的准备。大部分面向连接的协议为了保证投递无误,还执行额外的计算来验证正确性,增加了开销
无连接服务是邮政系统服务的抽象。每个分组都携带完整的目的地址,各分组在系统中独立传送,无连接服务不能 保证分组到达的先后顺序,不进行分组出错的恢复与重传,不保证传输的可靠性。无连接协议在通信前,不需要建立连接,也不管接收端时候正在准备接受。(UDP就是无连接的服务)
基于Internet的C/S模式的应用程序的特点
1、客户机和服务器都是软件进程,C/S模式是网络上通过进程通信建立分布式应用的常用模型
2、非对称性:服务器通过网络提供服务,客户机通过网络使用服务
3、对等性:客户机和服务器必有一套共识的约定,必与某种应用层协议相连,并且协议必须在通信的两端实现。
4、服务器的被动性:服务器必须先行启动,只要有客户机请求,就立即处理并响应,回传信息,但不主动提供服务
5、客户机的主动性,客户机可以随时提出请求,通过网络得到服务
6、一对多:一个服务器可以同时对多个客户机服务
7、分布性和共享性:资源在服务器端组织与存储
客户机与服务器的通信过程
1、在通信可以进行之前,服务器应先行启动,并通知他的下层协议做好接受客户机准备请求的准备,然后被动的等待客户机的通信请求。我们称服务器处于监听状态
2、一般先由客户机向服务器发送请求,服务器向客户返回应答。客户机可以随时主动启动通信,向服务器发送连接请求,服务器接受这个请求,建立他们的通信关系。
3、客户机与服务器之间的通信关系一旦建立,客户机与服务器都可发送和接受信息。
客户机应用访问某一类服务时并不限于一个服务器。
应用的角色可以发生转变,提供某种服务的服务器能够成为另一个服务的客户机
一
P2P模式
P2P(“对等网”,“点对点”):能够利用广泛分布在Internet边缘的大量计算、存储、网络带宽、信息、人力等资源的技术
,在计算机之间直接进行资源和服务的共享,不需要服务器接入的网咯技术
1、分散性:该系统是全分布式系统,不存在瓶颈。
2、规模性:该系统能够容纳数百万乃至数千万台计算机
3、扩展性:用户可以随时加入网络
4、Servent性:每个节点都同时具有Server和Cilent的特点
5、自治性:节点来自不同的所有者,不存在全局的控制者
6:互助性
7、自组织性
关键技术:资源定位,安全性与信任问题,联网服务质量问题,标准化