`

网络应用

阅读更多

1 OSI参考模型 
1.1 ISO 国际标准化组织(International Organization for Standization) 
1.2 OSI 开放系统互连的体系结构 (Open System Interconnection) 
1.3 OSI网络分层:物理层〉数据链路层〉网络层〉传输层〉会话层〉表示层〉应用层,下层为上层服务。 
1.4 OSI各层协议: 
    物理层     : EIA/TLA RS... 
    数据链路层 : SDLC,STP... 
    网络层     : IP,IPX... 
    传输层     : TCP,UDP... 
    会话层     : ZIP... 
    表示层     : JPEG,MPEG... 
    应用层     : FTP,HTTP,SNMP... 

2 TCP/IP参考模型 
2.1  TCP/IPI网络分层(对应OSI网络分层): 
   主机-网络层(物理层,数据链路层) 
   网络互联层(网络层) 
   传输层(传输层) 
   应用层(会话层,表示层,应用层) 
2.2 TCP/IP协议:对网络分层的各层次作了简化,除主机-网络层外提供完善的协议,核心协议是:TCP,IP协议。 
2.3 各层主要功能 
2.3.1 主机-网络层 
       TCP/IP协议没有提供实现及协议,要求第三方实现的主机-网络层为上层提供一个访问接口,来传递IP数据包。 
       美国电气及电子工程师学会实现的协议集有:以太网(IEEE802.3),令牌环网(IEEE802.4) 
2.3.2 网络互联层 
       功能是发送IP数据包到目标主机(使用了IP协议,规定数据包的格式及数据包寻找路由的流程) 
2.3.3 传输层 
       功能是源主机和目标主机的进程可以会话。它用了二种协议:TCP,UDP 
       TCP:面向连接,可靠的协议。UDP:不可靠,无连接的协议(SNMP,DNS) 
2.3.4 应用层 
2.3.4.1 TCP应用层的协议 
         FTP  : 文件传输协议(网络上传输文件) 
         TELNET : 虚拟终端协议。 
HTTP   : 超文本传输协议 
HTTPS  : 安全超文本传输协议 
POP3   : 邮局协议(访问远程服务器上的邮件) 
IMAP4  : 消息访问协议(POP3的升级版) 
SMTP   : 简单邮件协议(发送电子邮件) 
2.3.4.2 UDP协议 
        SNMP :简单网络管理协议 
DNS  : 域名系统协议 
2.4 IP协议 
    IP网络中每台主机有唯一的IP地址,用于标识每个主机。IP地址的取值范围:0~255 
    IP地址由IP网址与IP主机地址组成。网络掩码确定IP地址中哪部分是网址,哪部分是主机地址。 
    IP网址 = 网络掩码 & IP地址(二进制) 
    NIC(统一负责全球的地址规划与管理) 
    CNNIC(中国地区IP分配与管理) http://www.cnnic.net.cn 
    192.168.0.0是网络地址,192.168.111.111广播地址 
    
2.4.1 发送数据包的过程 
      IP网络上的主机通过ARP(地址解析协议),向相同IP网址的主机(包括真正的物主机地址:物理地址和IP地址)发送数据包。 
      ARP通过本地网络的路由的物理地址向目标IP地址发送数据包。具体按以下搜索并处理数据包: 
      数据包生命周期已到就抛弃---〉路由表的主机---〉 路由表,匹配子网的路由器--->路由表,匹配网络的路由器---〉默认路由。 
2.4.2 域名 
      域名是从右到左表达意义,一般表示为:主机机器.单位名.网络名.顶层域名. 
      DNS(Domain Name System):提供域名与IP地址的转换,因它存放了域名与IP地址的映射信息。 
2.4.3 URL(Uniform Resource Locator:统一资源定位器) 
      组成部分:应用层协议://主机IP地址或域名/资源所在路径/文件名 
      URL中常见的协议:ftp,file(访问本地计算机所在文件)  
2.5   TCP协议及端口T 
      TCP协议确保进程间顺序通信及在IP协议在传送数据时的顺序重组包及数据完整。 
      端口范围为:0~65535,0~1023一般为固定服务。21为FTP,25为SMTP(邮件传输服务)80为HTTP(文本传输)135为RPC(远程过程调用) 
      客户进程请求服务器进行TCP连接时,操作系统为随机分配一个未占用端口,断开时端口被释放。 
      注意事项:TCP,UDP通过端口标识进程。TCP与UDP端口取值各自自由,允许这二个端口取值一样。 
2.6 RFC(Request For Comment) 
    RFC:互联网相关技术规范性文档。 
2.7 客户/服务器通信模式 
    有二个通信进程中,A为客户端进程,B为服务端进程, A向B发出请求,B响应请求。B可向多个客户端提供服务。 
    网络应用层规定了客户程序与服务程序通信的细节。如HTTP协议规定了请求与响应格式。 
    应用层通用服务端口 
    服务                    端口        协议 
    文件传输服务            21          FTP 
    远程登录                23          TELNET 
    传输邮件服务            25          SMTP 
    超文本传输服服          80          HTTP 
    访问远程服务的邮件服务  110         POP3 
    互联网消息存取服务      143         IMAP4 
    安全的超文本传输服务    443         HTTPS 
    安全的远程登录          992         TELNETS 
    安全的互联网消息存取服务993         IMAPS 
3 示例代码: 

客户端示例代码(EchoClient) 

Java代码  收藏代码
  1. import java.net.*;  
  2. import java.io.*;  
  3.   
  4.   
  5. public class EchoClient {  
  6.   
  7.     private String host = "localhost";  
  8.     private int port = 8000;  
  9.     private Socket socket;  
  10.   
  11.     public EchoClient() throws IOException {  
  12.         socket = new Socket(host, port);  
  13.     }  
  14.   
  15.     public static void main(String args[]) throws IOException {  
  16.         new EchoClient().talk();  
  17.     }  
  18.   
  19.     private PrintWriter getWriter(Socket socket) throws IOException {  
  20.         OutputStream socketOut = socket.getOutputStream();  
  21.         return new PrintWriter(socketOut, true);  
  22.     }  
  23.   
  24.     private BufferedReader getReader(Socket socket) throws IOException {  
  25.         InputStream socketIn = socket.getInputStream();  
  26.         return new BufferedReader(new InputStreamReader(socketIn));  
  27.     }  
  28.   
  29.     public void talk() throws IOException {  
  30.         try {  
  31.               
  32.             BufferedReader br = getReader(socket);  
  33.             PrintWriter pw = getWriter(socket);  
  34.             BufferedReader localReader = new BufferedReader(  
  35.                     new InputStreamReader(System.in));  
  36.             String msg = null;  
  37.             while ((msg = localReader.readLine()) != null) {  
  38.   
  39.                 pw.println(msg);  
  40.                 System.out.println(br.readLine());  
  41.   
  42.                 if (msg.equals("bye"))  
  43.                     break;  
  44.             }  
  45.         } catch (IOException e) {  
  46.             e.printStackTrace();  
  47.         } finally {  
  48.             try {  
  49.                 socket.close();  
  50.             } catch (IOException e) {  
  51.                 e.printStackTrace();  
  52.             }  
  53.         }  
  54.     }  
  55. }  


服务器端口示例代码 

Java代码  收藏代码
  1. import java.io.*;  
  2. import java.net.*;  
  3.   
  4.   
  5. public class EchoServer {  
  6.     private int port = 8000;  
  7.     private ServerSocket serverSocket;  
  8.   
  9.     public EchoServer() throws IOException {  
  10.         serverSocket = new ServerSocket(port);  
  11.         System.out.println("服务器启动");  
  12.     }  
  13.   
  14.     public String echo(String msg) {  
  15.         return "echo:" + msg;  
  16.     }  
  17.   
  18.     private PrintWriter getWriter(Socket socket) throws IOException {  
  19.         OutputStream socketOut = socket.getOutputStream();  
  20.         return new PrintWriter(socketOut, true);  
  21.     }  
  22.   
  23.     private BufferedReader getReader(Socket socket) throws IOException {  
  24.         InputStream socketIn = socket.getInputStream();  
  25.         return new BufferedReader(new InputStreamReader(socketIn));  
  26.     }  
  27.   
  28.     public void service() {  
  29.         while (true) {  
  30.             Socket socket = null;  
  31.             try {  
  32.                 socket = serverSocket.accept(); // 等待客户连接  
  33.                 System.out.println("New connection accepted "  
  34.                         + socket.getInetAddress() + ":" + socket.getPort());  
  35.                 BufferedReader br = getReader(socket);  
  36.                 PrintWriter pw = getWriter(socket);  
  37.   
  38.                 String msg = null;  
  39.                 while ((msg = br.readLine()) != null) {  
  40.                     System.out.println(msg);  
  41.                     pw.println(echo(msg));  
  42.                     if (msg.equals("bye")) // 如果客户发送的消息为“bye”,就结束通信  
  43.                         break;  
  44.                 }  
  45.             } catch (IOException e) {  
  46.                 e.printStackTrace();  
  47.             } finally {  
  48.                 try {  
  49.                     if (socket != null)  
  50.                         socket.close(); // 断开连接  
  51.                 } catch (IOException e) {  
  52.                     e.printStackTrace();  
  53.                 }  
  54.             }  
  55.         }  
  56.     }  
  57.   
  58.     public static void main(String args[]) throws IOException {  
  59.         new EchoServer().service();  
  60.     }  
  61. }  
  62.   
  63. 下面程序实现效果一样  
  64.   
  65. import java.io.*;  
  66.   
  67. public class EchoPlayer {  
  68.     public String echo(String msg) {  
  69.         return "echo:" + msg;  
  70.     }  
  71.   
  72.     public void talk() throws IOException {  
  73.         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  
  74.         String msg = null;  
  75.         while ((msg = br.readLine()) != null) {  
  76.             System.out.println(echo(msg));  
  77.             if (msg.equals("bye")) // 当用户输入“bye”,结束程序  
  78.                 break;  
  79.         }  
  80.     }  
  81.   
  82.     public static void main(String arg[]) throws IOException {  
  83.         new EchoPlayer().talk();  
  84.     }  
  85. }  
  86.   
  87. /**************************************************** 
  88.  * 作者:孙卫琴 * 来源:<<Java网络编程精解>> * 技术支持网址:www.javathinker.org * 
  89.  ***************************************************/  

分享到:
评论

相关推荐

    C#网络应用编程(第3版)源代码

    《C#网络应用编程(第3版)》是由马骏主编,人民邮电出版社出版的一本深入探讨C#网络编程的书籍。这本书旨在帮助开发者掌握使用C#语言进行网络应用程序开发的技术和方法。源代码是学习过程中不可或缺的一部分,它...

    c#网络应用编程.pdf

    《C#网络应用编程》是一本致力于教授C#语言进行网络编程的书籍,作者Richard Blum是一位拥有丰富网络和系统管理经验的专业人士,他的工作经验为本书提供了深厚的理论与实践经验支撑。书中不仅介绍C#的基础网络编程...

    马骏 C#网络应用编程实验指导与开发实例

    《马骏 C#网络应用编程实验指导与开发实例》是一本深入探讨C#语言在网络编程领域的实践教程。这本书旨在帮助读者掌握使用C#进行网络应用开发的核心技术和实战技巧。通过详细的实验指导和丰富的开发实例,读者可以...

    C#网络应用编程第3版 马骏 课后答案.rar

    《C#网络应用编程》是马骏先生撰写的一本深入探讨C#在构建网络应用程序方面的专著,第三版更是对前两版的完善和提升,旨在帮助开发者掌握使用C#进行网络编程的核心技术和实践方法。这本书涵盖了从基础的网络概念到...

    C#网络应用编程(第2版)PDF附源代码

    《C#网络应用编程(第2版)》是一本深入探讨C#在构建网络应用程序方面的专业书籍。本书针对各种网络编程技术,如TCP/IP、UDP、P2P以及多线程,提供了详尽的讲解和丰富的实践案例。无论你是致力于B/S架构(浏览器/...

    网络应用网络应用网络应用.ppt

    网络重在应用,要学习黑客技术,必须熟练掌握各种网络应用知识,熟悉各种各样的服务器平台和网络应用环境。 基本要求:Web、FTP、Mail、DNS服务器的搭建。

    C#网络应用开发例学与实践

    选用开发网络应用程序最流行的组合C#+SQL Server 结合2个实际项目详细介绍了开发数据库应用程序所需的基本知识和开发方法 给出了两个实际工程案例 一个是小型Web应用程序 个人通讯录 另一个是流行的三层结构的中型...

    计算机网络应用基础教程

    本书正是针对计算机网络应用的教材。本书的內容不侧重于计算机网络的理论,而是侧重于计算机网络的基本应用,內容包含如何制作双绞线(网线)、小型办公网络的搭建、小型网络服务器的搭建(包含文件服务器、打印服务器...

    计算机网络应用层

    计算机网络应用层计算机网络应用层计算机网络应用层计算机网络应用层计算机网络应用层

    C#网络应用编程A

    C#网络应用编程,pdf格式

    计算机网络应用基础

    计算机网络应用基础

    ASP.NET2.0+SQLServer网络应用系统开发案例精解

    ASP.NET2.0+SQLServer网络应用系统开发案例精解 这是我在实习的时候购买《ASP.NET2.0+SQLServer网络应用系统开发案例精解》这本书时附送的各应用系统的源代码!~系统采用VS2005+SQLSERVER2000+C#编写!~已经通过...

    C#网络应用编程(pdf)

    C#网络应用编程.pdfC#网络应用编程.pdf

    <<网络应用与安全>>

    清华大学课件,详细讲解有关网络应用与安全方面的知识

    Java语法及网络应用设计

    《Java语法及网络应用设计》CEB格式电子书,用“方正阿帕比阅读软件”——GBKReaderSetup打开。

    ASP.NET+SQLServer网络应用系统开发与实例.rar

    ASP.NET和SQL Server是开发高效、安全且可扩展的网络应用程序的常用技术组合。ASP.NET是微软提供的一个用于构建Web应用程序的框架,而SQL Server则是一个功能强大的关系型数据库管理系统。下面将详细介绍这两个技术...

    自考07026《网络应用程序设计》历年真题学习资料电子书笔记.exe

    自考07026《网络应用程序设计》历年真题学习资料电子书笔记.exe

    网络应用综合课程设计报告

    网络应用综合课程设计报告

    计算机网络应用技术题库.pdf

    计算机网络应用技术题库.pdf

Global site tag (gtag.js) - Google Analytics