JavaSE第一百零六讲:Java网络编程简介

    学习了之前的类集框架,I/O流,多线程等知识,现在我们来学一下Java中的网络编程

1. 课程目标

1) 理解Java 网络系统
2) 熟练使用java.net包中的相关类与接口进行网络编程
3) 掌握如何使用Java在一台或多台计算机之间进行基于TCP/IP协议的网络通讯
4) 为今后J2EE的学习做好准备

2. 网络编程基础知识

1) 网络编程的目的就是指直接或间接地通过网络协议与其他计算机进行通讯。网络编程中有两个主要的问题,一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输。在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机。而TCP层则提供面向应用的可靠的或非可靠的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的

2) 目前较为流行的网络编程模型是客户机/服务器(C/S)结构。即通信双方一方作为服务器等待客户提出请求并予以响应。客户则在需要服务时向服务器提出申请。服务器始终运行,监听网络端口,一旦有客户请求,就会启动一个服务线程来响应该客户,同时自己继续监听服务端口,使后来的客户也能及时得到服务.

JavaSE第一百零六讲:Java网络编程简介_第1张图片

                 图106-1:两台计算机通过网络进行通信

3. IP地址

1) IP网络中每台主机都必须有一个惟一的IP地址;
2) IP地址是一个逻辑地址;
3) 因特网上的IP地址具有全球唯一性;
4) 32位,4个字节,常用点分十进制的格式表示,例如:192.168.0.200

4. 协议

1) 为进行网络中的数据交换(通信)而建立的规则、标准或约定。(=语义+语法+规则)

2) 不同层具有各自不同的协议。

5. ISO/OSI七层参考模型

1) OSI(Open System Interconnection)开发系统互联参考模型将网络的不同功能划分为7层

JavaSE第一百零六讲:Java网络编程简介_第2张图片

2) 通信实体的对等层之间不允许直接通信。
3) 各层之间是严格单向依赖。
4) 上层使用下层提供的服务 — Service user;
5) 下层向上层提供服务 — Service provider

6. 对等层通信的实质

1) 对等层实体之间虚拟通信。[每层之间都是根据七层模型,往下走到物理层进行数据传输再到另外一台电脑的对等层]
2) 下层向上层提供服务,实际通信在最底层完成

7. OSI各层所使用的协议

1) 应用层:远程登录协议Telnet、文件传输协议FTP、 超文本传输协议HTTP、域名服务DNS、简单邮件传输协议SMTP、邮局协议POP3等。

2) 传输层:传输控制协议TCP、用户数据报协议UDP。【重要】

TCP:面向连接的可靠的传输协议。
UDP:是无连接的,不可靠的传输协议。

3) 网络层:网际协议IP、Internet互联网控制报文协议ICMP、Internet组管理协议IGMP

8. 两类传输协议:TCP,UDP

1) TCP是Transfer Control Protocol的简称,是一种面向连接的保证可靠传输的协议。通过TCP协议传输,得到的是一个顺序的无差错的数据流。发送方和接收方的成对的两个socket之间必须建立连接,以便在TCP协议的基础上进行通信,当一个socket(通常都是server socket)等待建立连接时,另一个socket可以要求进行连接,一旦这两个socket连接起来,它们就可以进行双向数据传输,双方都可以进行发送或接收操作.[这是一种典型的服务端与客户端进行交互的模型]

   TCP是一个基于连接的协议,它能够提供两台计算机之间的可靠的数据流 . HTTP、FTP、Telnet等应用都需要这种可靠的通信通道

   端口号是什么东西呢?一个机器有固定的IP地址,我们可以通过IP地址来找到对应的机器,但是机器上运行着多个程序,我们不知道要对机器上的哪一个程序进行通信?(比如说同时运行msn和QQ,我们不能把qq的信息发送到msn上去),所以就有端口号来唯一的确定一台机器上的某一个程序。端口是一个数字,在0~65535之间,其中0~1024的端口号一般被系统的应用程序占用了,所以建议使用靠后面的端口号数字,比如5000.

   确定好IP地址和对应的端口号之后我们就可以锁定用户的程序了,而不会对不相关的程序有任何关联了。如下图106-3所示:服务器总是有一个线程在监听者某一个端口号,一旦服务端与客户端连接好之后,服务器就会另起一个线程,来保证这条线路数据的传递正常。这种就是通过I/O进行数据的连接,而且也是字节流,因为我们必须通过网络来发送文件,音频,视频数据等,而这些数据都是二进制形式,而不是字符信息。当然如果可以确定是字符串的话,可以进行字符流的传输。

JavaSE第一百零六讲:Java网络编程简介_第3张图片

                图106-3:端口号的概念

2) UDP是User Datagram Protocol的简称,是一种无连接的协议,每个数据报都是一个独立的信息,包括完整的源地址或目的地址,它在网络上以任何可能的路径传往目的地,因此能否到达目的地,到达目的地的时间以及内容的正确性都是不能被保证的.

  UDP是从一台计算机向另一台计算机发送称为数据报的独立数据包的协议,该协议并不保证数据报是否能正确地到达目的地。它是一个非面向连接的协议

之下内容详解,请关注下一讲内容


你可能感兴趣的:(java,java,java,网络编程)