JAVA网络编程期末复习资料 第一章
第一章
OSI七层模型、TCP/IP四层模型
多重协议的识别问题
一个操作系统可能支持多种协议,如TCP/IP、IPX/SPX等等
同一进程可能也会支持多种协议,如安全扫描工具可同时进行ICMP扫描、TCP扫描、UDP扫描等等
必须提供多重协议的识别方式,以便系统将不同的数据传递给不同的进程处理
网间进程交互模式
不同通信服务要求
- 网络应用程序多种多样,对服务的要求各不相同
- 有的要求书传递过程可靠、无差错、无乱序、无丢失,有的只要求快速、对丢包不敏感
- TCP/IP协议中的传输层考虑了不同的服务问题,提供了TCP、UDP两种
网间进程通信方式
理解进程与线程概念
进程
- 概念
进程是处于运行过程中的程序实例,是操作系统调度和分配资源的基本单位 - 组成
一个进程实体由程序代码、数据和进程控制快三部分组成
线程
-
概念
线程是运行中程序的调度单位,是进程中某个单一顺序的控制流 -
区别
- 进程是分配资源的单位,线程是执行和调度的单位
- 线程要处理些什么、怎么处理,都是定义好了的
- 每一个进程至少有一个线程,供CPU调度从而执行进程的代码。没有线程,进程就失去了存在的意义
- 一个进程可能会有多个线程,这些线程表面是“同时”执行进程的代码
多线程
当创建一个进程时,系统会自动创建它的第一个线程,称为主线程。然后该线程可以创建其他的线程,而这些线程又能创建更多的线程
传输层在网络通信中的作用
传输层在网络层的基础上提供网络间进程通信的能力
- 网络层提供主机之间的逻辑通信机制
- 传输层提供应用进程之间逻辑通信机制
端口的概念
端口是TCP/IP协议中,应用层进程和传输层协议实体之间的通信接口。当一个引用层进程要通信时,必须申请一个传输层的端口。确定端口之后,端口与应用层进程是一一对应的
类似于文件描述符,每一个端口都拥有一个叫做端口号(Port Number)的整形标识符
其余的端口号:1024~65535,称为自由端口号,采用本地分配,又称为动态分配的方法
网络应用进程标识
在Internet网络中,用一个三元组可以在全局中唯一地标识一个应用层进程:
- 应用层进程地址=(主机IP地址,传输层协议,传输层的端口号)
- 这样一个三元组,叫做一个半相关,它标识了因特网中,进程间通信的一个端点,也把它称为进程的网络地址
网间进程通信标识
一个完整的网间通信需要一个五元组在全局中唯一地来标识:
- (传输层协议,本地IP地址,本地传输层端口,远端IP地址,远端传输层端口)
- 这个五元组称为一个全相关。即两个协议相同的半相关才能组合成一个合适的全相关,或完全指定一对网间通信的进程
客户/服务器交互模式
服务器工作模式
C/S模式中服务器处于被动服务的地位。服务器的工作过程是:
- 打开一通信通道,在某一公开的地址和端口上接收客户请求
- 等待客户的请求到达该端口
- 服务器接收到服务请求,处理该请求并发送应答信号。为了能并发地接收多个客户的服务请求,一般会激活一个新进程或新线程来处理这个客户请求。该次服务完成后,关闭此新进程与客户的通信链路,并终止
- 返回第二步,等待并处理新的请求
- 在特定的情况下,关闭服务器
客户机工作模式
客户方采取的是主动请求方式,其工作过程是:
- 打开一通信通道,连接到服务器所在主机的特定监听端口
- 向服务器发送请求报文,等待并接受应答;继续提出请求,与服务器的会话按照应用协议进行
- 请求结束后,关闭通信通道并终止
容易混淆的术语
服务器程序与服务器类计算机
- 服务器这个术语来指那些运行这的服务程序
- 服务器类计算机这一术语来称呼那些运行服务器软件的强大的计算机
客户与用户
- 客户和服务器指的都是应用进程,即计算机软件;客户机指的是客户端软件
- 用户指的是使用计算机的人
客户机与服务器的通信过程
客户机与服务器的通信过程一般是这样的:
- 通信之前,服务器应先行启动,并通知他的下层协议栈做好接受客户机请求的准备,然后被动地等待客户机的通信请求,此时服务器处于监听状态
- 一般是先由客户机西乡服务器发送请求,服务器向客户机返回应答
- 客户机与服务器的通信关系一旦建立,客户机和放服务器都可发送和接收信息。信息在客户机与服务器之间可以沿任一方向或两个方向传递
网络协议与C/S模式的关系
客户机和服务器作为两个软件实体,他们之间的通信是虚拟的,是概念上的,实际的通信要借助下层的网络协议栈来进行
服务器如何同时为多个客户服务
并发性,并发允许多个客户机获得同一种服务,而不必等待服务器完成对上一个请求的处理。这样才能很好地同时为多个客户机提供服务
客户机/服务器交互
在C/S模式中,存在着三种一个与多个的关系
- 一个服务器同时为多个客户机服务
- 一个用户的计算机上同时运行多个连接不同服务器的客户端软件
- 一个服务器类的计算机同时运行多个服务器软件
阻塞与非阻塞通信方式
通常的,对一个文件描述符指定的文件或设备,有两种工作方式:阻塞与非阻塞
- 阻塞方式(同步通信)是指,当试图对该文件描述符进行读写时,如果当时没有东西可读,或者暂时不可写,程序就进入等待状态,知道有东西可读或者可写为止
- 非阻塞状态(发送异步通信,接收同步),如果没有东西可读,或者不可写,读写函数马上返回,而不会等待
JAVA编程注意事项
- 在任何情况下,JAVA的网络类只工作在TCP/IP网络中,而且始终运行在应用层或传输层上
- IP协议是JAVA唯一理解的网络层协议
- JAVA不支持ICMP,也不允许发送IP数据报
- 在编程时,每次启动要进行新的IP地址查询
- 网络地址转换,对于JAVA程序员来说是透明的
- JAVA可以很容易创建为你应用而优化的协议
- JAVA在核心网络API中没有显式的对等通信