• 1. Java网络编程网络基础 Internet的形成和发展 网络通信协议 网络通信结构TCP/IP Socket Java Socket编程
  • 2. 网络基础知识网络: 把的外部设备用通信线路互连成一个规模宏大、功能强大的网络系统,从而使众多的计算机可以方便地互相传递信息,共享硬件、软件、数据信息等资源分布在不同地理区域的计算机与专门。 计算机的联网可以实现: 使用远程资源 共享信息、程序和数据 分布处理
  • 3. 计算机网络分类按照网络规模和范围可以简单划分为: 局域网(LAN,Local Area Network) 都市网(MAN,Metropolis Area Network) 广域网(WAN,Wide Area Network) 按照网络拓扑结构可以分为: 星型网络、总线网络、环线网络、树型网络、星型环线网络等 按照传输介质划分: 双绞线、同轴电缆、光导纤维、视线介质等
  • 4. 网络的几种工作模式专用服务器结构(Server-Based) 又称为“工作站/文件服务器”结构,由若干台微机工作站与一台或多台文件服务器通过通信线路连接起来组成工作站存取服务器文件,共享存储设备。 例如:POS机 客户机/服务器模式(client/server) 其中一台或几台较大的计算机集中进行共享数据库的管理和存取,称为服务器,而将其它的应用处理工作分散到网络中其它微机上去做,构成分布式的处理系统。 对等式网络:(Peer-to-Peer) 在对等式网络结构中,没有专用服务器 每一个工作站既可以起客户机作用也可以起服务器作用。
  • 5. Internet基础Internet的形成和发展: 第一阶段(1969~1983):1969年,美国ARPANET诞生,用于将几个军事及研究用的主机联系起来。1983年,TCP/IP应用到ARPANET中,使得internet得以迅速发展。以ARPANET 为中心,组成新的互联网(internet),称为Internet。 第二阶段(1983~1994):用于教育和科研领域的NSFNET(National Science Foundation Net)形成 第三阶段(1994~Now):Internet的商业化运作。
  • 6. 网络通信协议/接口网络通信协议 计算机网络中实现通信必须有一些约定即通信协议,对速率、传输代码、代码结构、传输控制步骤、出错控制等制定标准。 网络通信结构 为了使两个结点之间能进行对话,必须在它们之间建立通信工具(即接口),使彼此之间 能进行信息交换。接口包括两部分: 硬件装置:实现结点之间的信息传送 软件装置:规定双方进行通信的约定协议
  • 7. OSI的分层思想OSI:开放系统互连(Open System Interconnection),采用分层的结构化技术。 分层的理由: 将网络简化 模块化的设计网络 OSI参考模型(OSI/RM,Open System Interconnection/Reference Model)共分为7层,最高层为用户层,最底层为物理层。
  • 8. OSI的七层模型表 示应 用会 话网 络传 输数据链路物 理
  • 9. TCP协议TCP协议为一种可靠的端对端协议:重发一切没有收到的数据,进行数据内容准确性检查并保证分组的正确顺序。 TCP协议位于OSI参考模型的传输层表 示应 用会 话网 络传 输数据链路物 理TCP
  • 10. 网络通讯协议在网络中的每台就算机都是一个节点.对于这些节点之间的交流,必须遵循有关节点之间都应该遵守的规则,这些所谓的规则就是“协议” 就算机网络中要实现通讯必须有一些约定,就是通讯协议,对速率,传输代码,代码结构,传输控制步骤,出错控制等指定标准
  • 11. TCP协议TCP:传输控制协议.TCP协议是一种可靠的端对端协议.当一台就算机需要和另外一条就算机通讯的时候,TCP协议会让他们之间建立一个连接,然后发送和接受数据,最后终止连接 TCP协议利用重发技术,相引用程序提供可靠的通信连接.TCP会重发一切没有受到的数据,在接受数据时要进行确认并对数据进行排序,保证数据的完整性与正确性
  • 12. IP协议IP协议是网络上的计算机进行连接的基础 IP协议是不可靠的:无论传送正确与否都不进行检验、不回送确认、不保证分组的正确顺序 IP协议位于OSI参考模型的网络层表 示应 用会 话网 络传 输数据链路物 理IP
  • 13. TCP/IP协议TCP/IP:是Internet上不同系统之间互联的一组协议。它为分散和不同类型的硬件提供了一个通用的编程接口。TCP/IP 协议使Internet尽可能成为一个分散、无序的网络。 TCP/IP通常被看成一个4层模型:应用层、传输层、网络层以及数据链路层+物理层。
  • 14. OSI和TCP/IP的分层对应OSI 参考模型表 示应 用会 话网 络传 输数据链路物 理应 用网 络传 输物理+数据链路TCP/IP 参考模型
  • 15. 数据的封装和拆封位于TCP/IP各个层的数据通常用一个公共的机制来封装:定义描述元信息和数据报的部分真实信息的报头的协议,这些元信息可以是数据源、目的地和其他的附加属性。来自于高层的协议封装在较低层的数据报中,当信息在不同的层之间传递时,都会在每一层重新构建一次。
  • 16. IP地址的分配IP地址的定义 为了实现Internet上不同计算机之间的通信,每台计算机都必须有一个不与其它计算机重复的地址---IP地址 IP地址是数字型的,32位(32bit),由4个 8位的二进制数组成,每8位之间用圆点隔开 IP地址由网络标识(network id)和主机标识 (host id)组成,他们都包含在32位的二进制数据中 IP地址被分成了A、B、C、D、E五类,每个类别的网络标识和主机标识各有规则。
  • 17. A类地址1Bits:0NNNNNNNHostHostHost891617242532Range (1-126)Class A: 用于大型的网络.A类地址中的最前面的一段用来表示“网络 标识”,并且该段的第一位必须是0.其余的3段标识主机标识 A类地址的表示范围为:0.0.0.0~126.255.255.255
  • 18. B类地址110NNNNNNNetworkHostHost891617242532Range (128-191)Bits:Class B: 用于中型的网络.B类地址中的最前面的两段用来表示“网络 标识”,并且第一段8位二进制数的前两位必须是10. 后面的2 段标识主机标识 B类地址的表示范围为:128.0.0.0~191.255.255
  • 19. C类地址1110NNNNNNetworkNetworkHost891617242532Range (192-223)Bits:Class C: 用于小型的网络.C类地址中的最前面的三段用来表示“网络 标识”,并且第一段8位二进制数的前三位必须是110. 后面的 一段标识主机标识 C类地址的表示范围为:192.0.0.0~223.255.255
  • 20. 子网掩码子网掩码也是一个32位二进制数的地址,它用于屏蔽一部分IP地址,由此来区分网络标识和主机标识.网络标识地址部分对应的位置设置为1,主机标识部分对应的位置设置为0 指定子网掩码安装如下的规则在实现 A类地址子网掩码:255.0.0.0 B类地址子网掩码:255.255.0.0 C类地址子网掩码:255.255.255.0
  • 21. 端口(port)计算机与外界交流的出入口 是一种抽象的软件结构,包括一些数据结构和I/O(基本输入/输出)缓冲区 端口号可以从0到65535,通常将它分为三类: 公认端口(Well Known Ports):从0到1023,它们紧密绑定(Binding)一些服务 注册端口(Registered Ports):从1024到49151。它们松散地绑定一些服务 动态和/或私有端口(Dynamic and/or Private Ports):从49152到65535。理论上,不应为服务分配这些端口 在使用端口时,遵循如下的规则 1. 低于255:用于公认端口 2. 255~1023 分配给公司用于商业的应用 3. 高于1023:没有限制 所以,如果建立自己的应用,都使用高于1023的端口
  • 22. 常见 TCP 端口和对应服务端口对应服务 7 Echo服务器21Ftp23telnet25SMTP79Finger80HTTP
  • 23. Java中的“ping”在命令行中,可以通过“ping [host]”的方法得到指定主机的IP地址 通过java.net中的InetAddress类,可以得到指定主机的IP地址
  • 24. (案例13-1)import java.net.*; public class InetAddressTest { public static void main(String[] args) { try { InetAddress ia = InetAddress.getLocalHost(); String host = ia.getHostAddress(); String hostname = ia.getHostName(); System.out.println(ia + " " + hostname); } catch (UnknownHostException e) { e.printStackTrace(); } } }
  • 25. Socket套接字(Socket ):计算机之间相互通讯的一种方式,表示一个系统的IP地址和端口号的结合。Socket大致位于OSI的会话层.作为会话层的一部分,Socket隐藏了数据流传输中的具体的过程.两个通讯的Socket会建立一个连接通道,然后在这个通道上通讯 TCP/IP连接的一个端点 用来处理两个流对象 创建TCP Socket需要的四个信息: 本地系统的IP 本地应用程序使用的TCP端口号 远程系统的IP 远程应用程序相应的TCP端口号
  • 26. Java Socket编程java.net.ServerSocket/java.net.Socket两个类用于建立一个双边的通信。ServerSocket等待来自客户端的连接,而Socket 连接到一个服务器端。
  • 27. ServerSocket类ServerSocket类用于侦听一个客户端的Socket连接,如果没有连接,它将一直等待。 ServerSocket构造器: ServerSocket(int port):用指定的端口port来创建一个侦听Socket ServerSocket(int port,int backlog):加上一个用来改变连接队列长度的参数backlog。 ServerSocket(int port,int backlog,InetAddress localAddr):在机器存在多个 IP地址的情况下,允许通过localAddr这个参数来指定侦听的IP地址。 ServerSocket方法: Socket accept() close()
  • 28. Socket类Socket类构造器 Socket() Socket(InetAddress address, int port) Socket(InetAddress address, int port, InetAddress localAddr, int localPort) Socket(String host, int port) protected Socket(SocketImpl impl) Socket(String host, int port, InetAddress localAddr, int localPort) Socket方法: getInputStream() getOutputStream() close()
  • 29. Socket通信模型Server端ServerSocket s (port #)s.accept()/等待连接SocketOutputStreamInputStreamsocket.close()Client端Socket (host, port #) (试图连接)OutputStreamInputStreamsocket.close()
  • 30. Socket通信例子(案例13-2) ServerSocket server = new ServerSocket(1234); Socket sk = server.accept(); BufferedReader br = new BufferedReader(new InputStreamReader(sk.getInputStream())); System.out.println(br.readLine()); br.close(); server.close();
  • 31. Socket通信例子(con.) Socket client; PrintStream ps; try { client = new Socket("localhost",1234); System.out.println("连接成功"); ps = new PrintStream(client.getOutputStream()); ps.println("Hello"); client.close(); } catch(IOException e) { System.out.println(e); }
  • 32. Java网络编程(下)利用多线程实现双向的Socket通信
  • 33. 利用多线程实现双向的Socket通信(案例13-3)利用多线程实现双向的Socket通信
  • 34. 小结计算机网络基础 TCP/IP协议 IP地址及网络掩码 使用java.net包中的类实现网络通信 Socket通信