文档章节

Java网络编程——1.基本网络概念

天子剑毅
 天子剑毅
发布于 2017/04/18 17:21
字数 1310
阅读 20
收藏 0

1、什么是网络?

网络(network)是几乎可以实时相互发送和接收数据的计算机和其他设备(如打印机,可口可乐机)的集合。网络中的每台机器称为一个节点(node),大多数节点是计算机,具有完备功能的计算机节点也称为主机(host)。

每个网络节点都有地址(address),这是网络节点的唯一标识。

计算机网络是包(packet)交换网络,优点是,多个即将交换的包可以在一条线缆上传输,降低建立网络的成本且多个计算机可以互不干扰地共用同一条线缆。分包还有个好处就是可以检测包在传输中是否遭到破坏。

协议(protocol)定义了计算机如何通信的一组明确的规则(地址格式、数据如何分包等),如超文本传输协议(HTTP)定义了Web浏览器如何与服务器通信。

2、网络的分层

为了对应用程序开发人员和最终用户隐藏网络发送数据的复杂性,网络通信的不同方面被分解为多个层,每一层表示为物理硬件(即线缆和电流)与所传输信息之间的不同抽象层次。
七层/五层模型图

第一种是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、客户/服务器模型

大多数现代网络编程都基于客户/服务器模型,数据存储在服务器或服务器云上,界面逻辑由客户端软件处理,客户端运行在相对便宜的个人计算机上。客户端发起对话,服务器等待客户端与它对话。

客户端/服务器端连接

6、Internet标准

应用层网络编程和协议的大多标准都是由IETF(国际互联网工程任务组,The Internet Engineering Task Force)和W3C(国际互联网协会,World Wide Web Consortium)这两个组织制定。如超文本传输协议(HTTP1.1)对应RFC2616

© 著作权归作者所有

下一篇: Quartz原理
天子剑毅
粉丝 2
博文 34
码字总数 40324
作品 0
杭州
架构师
私信 提问
你必须掌握的 21 个 Java 核心技术!(干货)

点击上方“java进阶架构师”,选择右上角“置顶公众号” 20大进阶架构专题每日送达 51闲来无事,师长一向不(没)喜(有)欢(钱)凑热闹,倒不如趁着这时候复盘复盘。而写这篇文章的目的是想...

Java进阶架构师
05/03
0
0
Java程序员必读书单,家族又添新成员

点击关注异步图书,置顶公众号 每天与你分享IT好书 技术干货 职场知识 参与文末话题讨论,每日赠送异步图书。 ——异步小编 有些革命出其不意地吸引了全世界的眼球。Twitter、Linux操作系统和...

异步社区
2018/05/09
0
0
Qzone 微信 Java高级——dubbo源码分析之远程通信 netty

Java高级——dubbo源码分析之远程通信 netty dubbo 底层通信选择了 netty 这个 nio 框架做为默认的网络通信框架并且通过自定义协议进行通信。dubbo 支持以下网络通信框架: Netty(默认) Min...

Java架构师那些事
2018/08/29
0
0
java 7 入门书籍

一、Java从入门到精通 《Java从入门到精通(第3版)》从初学者角度出发,通过通俗易懂的语言、丰富多彩的实例,详细介绍了使用Java语言进行程序开发需要掌握的知识。 《Java从入门到精通(第3版...

modernizr
2014/05/15
6.9K
9
零基础学Java10系列三:Java高级编程​​​​​​​

更多关于Java高级编程内容链接:零基础学Java10系列三:Java高级编程——阿里云大学 多线程: 生产者和消费者指的是两个不同的线程类对象,两个进程公用一个公共的固定大小缓冲区。其中之一的...

阿里云大学云百科
04/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

多线程同时加载缓存实现

import com.google.common.cache.Cache;import com.google.common.cache.CacheBuilder;import java.util.concurrent.ExecutionException;import java.util.concurrent.ExecutorServi......

暗中观察
26分钟前
1
0
解决Windows和Ubuntu时间不一致的问题

解决Windows和Ubuntu时间不一致的问题 问题原因是使用的时间不一致导致的。win10直接从bios读出来的时间认为就是实际时间,ubuntu认为加上8个小时 后的才是。win10用的rtc ,ubuntu用的utc 在...

shzwork
29分钟前
2
0
mysql mysql三种插入数据语句和增删改方法

点开题目是不是有点懵X,因为你只知道insert...values这一种,重来没有听说过三种,现在来介绍一下。 插入数据三种方式: insert into 表名(字段名) values(插入值); 最常用的插入语句 inse...

edison_kwok
30分钟前
2
0
利用VisualVM 内存查看

准备工作,建几个测试类。等下就是要查看这几个类里面的属性 package visualvm;public class MultiObject { private String str; private int i; MultiObject(String str...

冷基
42分钟前
1
0
组装一台工作游戏两用机

一、配置清单如下: 分类 项目 价格(元) 主板 华硕(ASUS)TUF Z370-PLUS GAMING II 电竞特工 Z370二代 支持9代CPU 1049 CPU 英特尔(Intel) i7 8700K 酷睿六核 盒装CPU处理器 2640 风扇 九...

mbzhong
48分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部