Java网络编程——1.基本网络概念
2017-04-18 00:00
639 查看
1、什么是网络?
网络(network)是几乎可以实时相互发送和接收数据的计算机和其他设备(如打印机,可口可乐机)的集合。网络中的每台机器称为一个节点(node),大多数节点是计算机,具有完备功能的计算机节点也称为主机(host)。每个网络节点都有地址(address),这是网络节点的唯一标识。
计算机网络是包(packet)交换网络,优点是,多个即将交换的包可以在一条线缆上传输,降低建立网络的成本且多个计算机可以互不干扰地共用同一条线缆。分包还有个好处就是可以检测包在传输中是否遭到破坏。
协议(protocol)定义了计算机如何通信的一组明确的规则(地址格式、数据如何分包等),如超文本传输协议(HTTP)定义了Web浏览器如何与服务器通信。
2、网络的分层
为了对应用程序开发人员和最终用户隐藏网络发送数据的复杂性,网络通信的不同方面被分解为多个层,每一层表示为物理硬件(即线缆和电流)与所传输信息之间的不同抽象层次。![](https://static.oschina.net/uploads/img/201704/18160701_tAOx.jpg)
第一种是Iso的OSI模型(7层):这个用在定义计算机网络层次,多用于理论,方便理论研究,可是实践中没有广泛应用。
第二种是TCP/IP协议簇(5层):这个一般用于现今的世界,根据实际情况将ISO的OSI模型改造为5层,这种模型具有现实可行性。
3、IP、TCP和UDP
IP(网际协议)是冷战时期由军方资助开发的,所以包含了大量军方关系的特性。首先,它必须健壮,允许任意两点之间有多个路由,可以绕过被破坏的路由器实现数据包的路由。其次,IP必须开放,与平台无关,计算机必须都能相互通话。由于两点间存在多个路由,且两点间的最短路径可能由于网络业务流量等因素而改变,构成了某个特定数据流的包可能不会采用相同的路由。为了改进这个机制,将TCP置于IP之上,使连接的两端都能确认接收到IP包,以及保证按其发送的顺序接收。
但是TCP会有很大开销,如果数据的顺序不重要且单个包的的丢失不会安全破坏数据流,也可以用UDP发送数据包,例如视/音频。还可以在UDP数据流中建立纠错码,来解决数据丢失的问题。
IP之上还能运行很多其他协议如ICMP,ping程序就是用的这个协议。但java支持的协议只有TCP和UDP,以及建立在TCP和UDP之上的应用层协议。
4、Internet
互联网(Internet)是世界上最大的基于IP的网络。它是七个大洲多个不同国家的计算机使用IP相互对话的一个无组织的集合。其他IP网络称为internet,如没有连接Internet的高安全性内部网。Internet上每台计算机都至少有一个标识此计算机的IP地址。IP地址一般写为点分四段的格式,如199.1.32.90,每个数的范围从0~255。
为避免Internet的地址冲突,区域Internet注册结构会为Internet服务提供商分配IPv4地址块。出于IP地址越来越稀缺,大多数网络都使用了网络地址转换(NAT),内网地址很多但实际只有一个外网地址。但IPv6会使NAT变得毫无意义。
出于安全需求,防火墙(路由器或者单独的机器)可以过滤网络地址和端口。如果防火墙会阻止一个网络上的主机与外界直接建立连接,那么代理服务器就起到了中间人的作用,机器可以请求代理服务器来访问被阻止的网络。防火墙一般工作于传输层和网际层,而代理服务器通常工作于应用层。
代理服务器也可用作本地缓存,提高响应时间,但代理服务器只支持HTTP、FTP和SMTP
5、客户/服务器模型
大多数现代网络编程都基于客户/服务器模型,数据存储在服务器或服务器云上,界面逻辑由客户端软件处理,客户端运行在相对便宜的个人计算机上。客户端发起对话,服务器等待客户端与它对话。![](https://static.oschina.net/uploads/img/201704/18171341_OtWT.png)
6、Internet标准
应用层网络编程和协议的大多标准都是由IETF(国际互联网工程任务组,The Internet Engineering Task Force)和W3C(国际互联网协会,World Wide Web Consortium)这两个组织制定。如超文本传输协议(HTTP1.1)对应RFC2616相关文章推荐
- java网络编程——第一章 基本网络概念
- java网络编程-基本的网络概念
- 黑马程序员--10.网络编程--02.【网络传输三要素在Java中的体现】【TCP和UDP概念】【Socket基本概念】
- java网络编程协议与基础1—基本网络概念
- Java网络编程的基本网络概念
- Java 网络编程----基本概念
- Java网络编程 基本网络概念
- 12.1-全栈Java笔记:网络编程的基本概念
- Java网络编程的基本网络概念
- 【Java8网络编程】第1章.基本概念
- Java基本概念-网络编程和反射技术
- Java网络编程学习笔记(1)——基本网络概念
- java网络编程:网络基本概念
- C#网络编程(基本概念和操作)
- C#网络编程(基本概念和操作) - Part.1
- java网络编程基础概念
- C#网络编程(基本概念和操作) - Part.1
- Windows网络编程基本概念
- C#网络编程(基本概念和操作) - Part.1
- 网络编程的基本概念,TCP/IP协议简介