Java网络编程 基本网络概念
来源:互联网 发布:me452cha支持什么网络 编辑:程序博客网 时间:2024/04/30 20:45
网络
网络是几乎可以实时相互发送和接收数据的计算机和其他设备的集合。
- 网络中的每台机器称为一个节点。
- 每个网络节点都有地址。
- 不同的网络会以不同的方式分配地址。
- 所有现代计算机网络都是包交换(分组交换)网络。
- 定义计算机来回传递时需要提供的如何通信的协议:包括地址格式、数据如何分包。
网络的分层
为了对应用程序开发人员和最终用户隐藏网络的复杂性,网络通信的不同方面被分解为多个层。
有几种不同的分层模型,分别适应特定网络的需要。主机网络层的复杂性对你是隐藏的,这是分层的关键。
本书采用适用于Internet的标准TCP/IP模型:
- 应用层
- 传输层(TCP,UDP)
- 网际层(IP)
- 主机网络层(物理路径)
主机网络层
作为Java程序员,不需要太担心这一层。
一般需要考虑主机网络层的主要原因是速度和带宽对程序的影响。
网际层
网络层(网际层)协议定义了数据位和字节如何组织为更大的分组,称为包,还定义了寻址机制。此外,还提供了支持不同类型的主机网络层的相互对话,每个计算机能与不同类的网络上的其他计算机对话。
网际协议(IP)是世界上使用最广泛的网络层协议。实际上,这是两个协议:IPv4和IPv6,数据按包在网际层进行传输,这些包称为数据报(datagram)。IP设计为允许任意两点之间有多个路由,可以绕过被破坏的路由器实现数据包的路由。
IPv4和IPv6这是两个完全不同网络协议,如果没有特殊的网关和/或隧道协议,即使在相同的网络上它们也无法做到互操作,不过Java几乎对你隐藏了所有这些区别。
原始数据报有一些缺点:不能保证可靠传送和不一定以发送时的顺序到达。
传输层
传输层(transport layer)可以解决原始数据报的缺点,负责确认各包以发送的顺序接收,并保证没有数据丢失或破坏。
这一层上主要有两个协议:
- 传输控制协议(Transmission Control Protocol,TCP),这是一个开销很高的协议,支持对丢失或破坏的数据进行重传,并按照发送的顺序进行传送。
- 用户数据报协议(User Datagram Protocol,UDP),它允许接受方检测被破坏的包,但不保证这些包以正确的顺序传送(或者包有可能根本未传送)。
应用层
向用户传送数据的层称为应用层(application layer)。
- 应用层确定了数据传输后的操作。
- 你的程序有关网络的部分大多都是在应用层花费时间。
- 你的程序可以在必要时定义自己的应用层协议。
IP、TCP和UDP
- 可以在IP之上运行很多其他协议。
- Java不支持ICMP(Internet Control Message Protocol,网际控制消息协议,使用原始的IP数据报在主机之间传递错误消息)。
- Java支持的协议只有TCP和UDP。
IP地址和域名
域名系统(Domain Name System, DNS),用来将人类易于记忆的主机名转换为Internet地址。当Java程序访问网络时,需要同时处理数字地址和相应的主机名。这些方法由java.net.InetAddress类提供。
端口
- 每个端口可以分配给一个特定的服务。
- 1到1023的端口号保留给已知的服务。在UNIX系统(LInux和Max OS X)只有以root用户运行的程序才可以接收这些端口的数据。而在Windows上,所有程序都可以使用这些端口。
Internet
Internet是世界上最大的基于IP的网络。
Internet地址分块
- 每个块有固定的前缀。
- 最低地址用于标识网络本身,最高地址是这个网络的一个广播地址。
网络地址转换
出于IP地址越来越稀缺,而对原始IP地址的需求越来越大,如今大多数网络都使用了网络地址转换(Network Address Translation, NAT)。基于NAT的网络中,大多数节点只有不可路由的本地地址。
代理服务器
对于Java程序员而言更是一个缺点,因为它限制了协议的有效性。使用Java可以很容易地创建为你的应用而优化的新协议,这通常也很有用。但是没有代理服务器能理解这些独一无二的协议。
对等连接(Peer-to-peer)
Java在其核心网络API中没有显示的对等通信。不过,应用程序可以很容易地通过几种方式提供对等通信。
- 最常见的是同时作为服务器和客户端。
- 另外,对等端可以通过中间服务器程序互相通信,这个程序将数据从一端转发到其他对等端。
这样就很好地解决了两个对等端如何发现对方的问题。
- 基本网络概念(Java网络编程)
- Java网络编程 基本网络概念
- Java网络编程学习笔记(一)基本网络概念
- java网络编程——第一章 基本网络概念
- java网络编程概念
- Java网络01基本网络概念
- Java网络编程1---基本网络的概念(通俗概念)
- java网络编程基础概念
- Java网络编程基础概念
- java网络编程协议与基础1—基本网络概念
- Java网络02基本Web概念
- 基本网络概念
- 基本的网络概念
- 基本网络概念
- 基本网络概念
- Java Socket 网络编程心跳设计概念
- Java Socket 网络编程心跳设计概念
- Java学习之网络编程--概念
- 为Android添加一个开机完成后执行的脚本
- 谈谈h5 WebStorage的那点事儿
- 杭电 1023 Train Problem II
- maven学习(上)- 基本入门用法
- Android线程异步机制Handler与AsyncTask详解
- Java网络编程 基本网络概念
- 英文歌
- 黑马程序员——关于字符串和数组的习题总结(补充)
- ASP.NET C#各种数据库连接字符串大全——SQLServer、Oracle、Access
- Move Zeroes
- [SCU 4531] Cruel War II (暴力)
- 355. Design Twitter
- 【不积跬步_无以至千里】hdu 5641 国王的手机 and 判断四边形
- nyoj 1277 && 河南省第九届ACM竞赛F题