您的位置:首页 > 理论基础 > 计算机网络

17网络编程

2015-10-18 23:05 435 查看
OSI模型 

应用层< 应用层协议
>应用层

表示层< 表示层协议
>表示层

会话层< 会话层协议
>会话层

传输层< 传输层协议
>传输层
网络层< 网络层协议
>网络层

数据链路层< 数据链路层协议
>数据链路层
物理层< 物理层协议
>物理层



按照分层的思想设计 

参考模型 

TCP/IP协议

ISO制定的OSI参考模型的过于庞大、复杂招致了许多批评。

技术人员自己开发的TCP/IP协议栈获得了更为广泛的应用。



TCP/IP模型

OSI模型目前主要只用于教学理解,在实际使用中,网络硬件设备基本都是参考TCP/IP模型。可以把TCP/IP模型理解为OSI模型的简化版本。

应用层:负责应用程序间的交互。HTTP协议(万维网服务)、FTP协议(文件传输服务)、Telnet协议(网络远程访问协议)等。

传输层:负责传送数据。主要是TCP协议(传输控制协议)、UDP协议(用户数据报协议)

网络互联层:负责数据封包传送。IP协议(网际协议)是TCP/IP协议的核心,也是网络层最重要的协议。

网络接口层:负责对实际网络媒体的管理,定义如何使用实现网络来传送数据。

网络编程的实质就是两个(或多个)设备(如计算机)之间的数据传输。

IP地址:ipconfig(IPV4)

域名:www.lovo.com.cn(DNS服务器)

端口:在硬件上规定,端口的号码必须位于0-65534之间,每个端口对于一个网络程序。一个网络程序可以占用多个端口。

端口用于程序间的通信

常用端口

协议 端口

Telnet协议tel 23

简单邮件传输协议smtp 25

文件传输协议ftp 21

超文本传输协议http 80



自定义端口尽量从1000开始

网络通讯基于“请求-响应”模型

网络编程中,第一次主动发起通讯的程序称为客户端程序(Client);而在第一次通讯中等待连接的程序被称为服务器端程序(Server)。一旦通讯建立,则客户端和服务器完全一样,没有本质区别。

基于客户端程序和服务区程序的网络编程结构被称作称作客户端/服务器结构吗,也叫做Client/Server结构。简称C/S结构。

使用浏览器作为客户端程序的结构被称作浏览器/服务器结构,也叫做Browser/Server结构,也简称为B/S结构。

总之,C/S结构和B/S结构式现在网络编程中常见的两种结构,而B/S结构其实也是一种特殊的C/S结构。

网络协议:(网络通讯的两种方式)

1、TCP(传输控制协议)

2、UDP(用户数据报协议)

****TCP和UDP的区别
连接 传输可靠性
传输速度

TCP 面向连接
可靠 慢

UDP 面向非连接
不可靠 快

客户端网络步骤:(三个步骤)

1、建立网络连接
建立网络连接时需要指定连接到的服务器IP地址和端口号,建立完成以后会形成一条虚拟的连接,后续的操作就可以通过该连接实现数据交换。

2、交换数据(可以反复进行)
连接建立以后,就可以通过这个连接交换数据。交换数据是严格按照“请求-响应”模型进行的,由客户端发送一个请求数据到服务器,服务器反馈一个响应数据给客户端。如果客户端不发送请求则服务器端就不响应。根据开发需要,可以多次交换数据,但是还是必须遵守“请求-响应模型”。

3、关闭网络连接
在数据交换完成后,关闭网络连接,释放程序占用的端口号、内存等系统资源,结束网络编程。

服务器网络编程步骤:(四个步骤)

1、监听端口
服务器端属于被动等待连接,所以服务器启动以后不需要发起连接,而只需要监听本地计算机的某个固定端口号。这个端口号就是服务器端开放给客户端的端口号,服务器端程序运行的本地计算机的IP地址就是服务器端程序的IP地址。

2、获得连接
当客户端连接到服务器端时,服务器端就可以获得一个连接,这个连接包含客户端的信息(如客户端的IP地址等)服务器端和客户端也就通过该连接进行数据交换。一般在服务器编程中,当获得连接时,需要开启专门的线程处理该连接,每个连接都由独立的线程实现。

3、交互数据(反复进行)
服务器通过获得的连接进行数据交换。服务器端的数据交换步骤首先是接收客户端发送过来的数据,然后进行逻辑处理,再把处理以后的结果数据发送给客户端。简单来说,就是先接受再发送,这和客户端的数据交换顺序相反。服务器端的数据交换也是可以多次进行。

4、关闭连接
当服务器程序关闭时,需要关闭服务器端,通过关闭服务器端使得服务器监听的端口以及占用的内存以及系统资源可以释放出来,结束网络编程。

总之,无论使用任何编程语言,任何方式进行基础的网络编程,都必须遵循固定的步骤进行操作,在熟悉了这些步骤以后,可以根据需要进行逻辑上的处理,但还是必须遵循固定的步骤进行。

Socket(套接字)

套接字Socket是由伯克利大学首创的,它允许程序把网络连接当成一个流处理,可以通过流的方式实现数据的交换。

套接字有两种套接字:一种套接字是在服务器端创建,叫服务器套接字(Server Socket)一种是在客户端创建,叫做客户端套接字(Socket)。

InetAddress类-网络基础类,该类的功能是代表一个IP地址,并且将IP地址和域名相关的操作方法封装在类中。

和网络编程有关的基本API位于java.net包中,该包中包含了基本的网络编程实现,该包时网络编程的基础。

如何服用Socket连接?

建立连接以后,将数据交换的逻辑写
4000
到一个循环中就可以了。这样,只要循环不结束则连接就不会关闭

如何使服务器端支持多个客户端同时工作?

一个服务器一般都需要同时为多个客户端提供服务,如果需要同时支持多个客户端,则必须使用多线程。简单来说也就是当服务器端接收到一个客户端连接时,启动一个专门的线程处理和该客户端之间的数据交换。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: