JAVA学习第五十九课 — 网络编程概述

网络模型

OSI(Open System Interconnection)开放系统互连:參考模型

TCP/IP

网络通讯要素

IP地址

port号

传输协议

网络參考模型

七层OSI模型的基本概念要了解

网际层协议:包含:IP协议、ICMP协议、ARP协议、RARP协议。
传输层协议:TCP协议、UDP协议。
应用层协议:FTP、Telnet、SMTP、HTTP、RIP、NFS、DNS。

要真正实现网络通讯,首先要找到IP地址,IP地址是网络通讯的一大要素

IP地址:InetAddress

网络中设备标识

不易记忆,可用本机名

本地回环地址:127.0.0.1,这个地址,仅仅为訪问本机

IP地址是对外暴露的标识,能够通过获取IP地址。訪问

为了进行应用程序的标识区分,就提供了一些数字来标识应用程序。比方QQ 用4000来标识,我的电脑QQ发消息,发送到IP 地址是: 192.168.0.1 的编号为4000的应用程序上。而这些数字就是(逻辑)port。

机箱上的port:是物理port

port号

用于标识进程的逻辑地址,不同进程的标识

有效port,0~65535,当中0~1024系统使用或保留port。

也就是说尽量保证( 1024 < port编号 <= 65535

而防火墙,就是利用port实现的,比方QQ的port号是4000,防火墙设置。port4000的数据,禁止发送,就使得QQ无法连接到网络

IP对象

IP地址比較复杂。在Java中也就被封装成了对象,java.net包中提供了网络传输涉及的对象

类 InetAddress:此类表示互联网协议 (IP) 地址。

InetAdress类下有Inet4Address。Inet6Address两大类。使IP地址。不易冲突

存在于网际层,该层能识别IP地址,能封装IP地址

InetAdress对象。无构造函数,说明肯定有方法返回对象,并且是静态方法

简单演示

	public static void Demo()throws UnknownHostException {

		//获取本地主机IP地址对象,要抛出未知主机异常
		InetAddress ip = InetAddress.getLocalHost();

		//获取其它主机ip地址对象
		//ip = InetAddress.getByName("kevy-PC");//也能够写IP地址
		ip = InetAddress.getByName("www.baidu.com");//获取百度的IP地址

		System.out.println(ip.getHostAddress());//获取主机IP地址
		System.out.println(ip.getHostName());//获取主机名,假设没有获取到,说明解析时。局域网找不到

		//还可能存在IP地址不唯一的可能,比方新浪、网易,server集群的情况
		//得到的IP对象是数组
		//InetAddress[] ipp = InetAddress.getAllByName("");
	}

域名解析

正常在訪问主机时,比方訪问网易的主机。网易的主机。无非就是一台计算机存储一些数据。主机有一个IP地址,

如果127.0.0.1,存储着网易的网络资源

尽管在訪问站点的时候,是域名。但实际上是IP地址。http://127.0.0.1,早期就是IP地址,可是IP地址有可能相应相应多个主机

所以就有了www(万维网).域名.com(属于商业化组织).cn(所属国家类别)

IP地址和域名有着相应关系。在互联网有一些主机,存储的就是这些相应关系,这就是域名解析,而这些主机就是DNS(域名解析server)。仅仅有DNS才记录网易的IP地址,DNS把IP地址返回你的计算机,再走网易

想提高解析速度。就能够实现本地解析。在本地创建一张域名解析列表,主机本身就自带了,仅仅需我们去配置就可以,

C:\Windows\System32\drivers\etc

域名解析时,先走的不是互联网,而是本机,本机失败再到互联网,解析

所以。由此,就能够在浏览一些站点时。能够屏蔽一些站点的垃圾广告,将广告站点的域名记录,配置在本地

127.0.0.1 XXXXX。这样就会先在本地用自己的IP解析,站点也就打不开,不走互联网。

360屏蔽网址也是这个原理

Socket(插座)

学习传输协议,就要先了解Socket

要进行网络传输就必须有两个端点,这两个端点想要通信,就必须连接,端点就能够理解为Socket

Socket是为网络服务提供的一种机制

通信的两端想要通讯必须有Socket

网络通信事实上就是Socket间的通信

数据在两个Socket间通过IO传输

所以网络编程也能够叫Socket编程

时间: 2024-10-25 01:52:55

JAVA学习第五十九课 — 网络编程概述的相关文章

java学习--基础知识进阶第十二天--网络编程概述、UDP协议、TCP协议

今日内容介绍 u  网络编程概述 u  UDP u  TCP 第1章 网络编程概述 1.1 网络协议 通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则,这就好比在道路中行驶的汽车一定要遵守交通规则一样.在计算机网络中,这些连接和通信的规则被称为网络通信协议,它对数据的传输格式.传输速率.传输步骤等做了统一规定,通信双方必须同时遵守才能完成数据交换. 网络通信协议有很多种,目前应用最广泛的是TCP/IP协议(Transmission Contro

JAVA学习第三十九课(常用对象API)- 集合框架(七)— Map集合及其子类对象

一.Map集合常见子类 HashTable:内部结构是哈希表,同步,此实现提供所有可选的映射操作,不允许使用 null 值和 null 键 (HashTable下有子类Properties,使用频率非常高,用来存储键值对型的配置文件信息和IO技术相结合) HashMap:内部结构是哈希表,不同步,此实现提供所有可选的映射操作,并允许使用 null 值和 null 键. TreeMap:内部结构是二叉树,不同步,可以对Map集合中的键进行排序. 二.HashMap演示 import java.ut

JAVA学习第五十六课 — IO流(十)对象的序列化和反序列化 &amp; RandomAccessFile

操作对象 ObjectInputStream.ObjectOutputStream 被操作的对象需要实现Serializable(标记接口) ObjectOutputStream 将 Java 对象的基本数据类型和图形写入 OutputStream.可以使用 ObjectInputStream 读取(重构)对象.通过在流中使用文件可以实现对象的持久存储.如果流是网络套接字流,则可以在另一台主机上或另一个进程中重构对象. 对象的默认序列化机制写入的内容是:对象的类,类签名,以及非瞬态和非静态字段的

JAVA学习第五十二课 — IO流(六)File对象

File类 用来给文件或者文件夹封装成对象 方便对文件与文件夹的属性信息进行操作 File对象可以作为参数传递给流的构造函数 一.构造函数和分隔符 public static void FileDemo() {//构造函数演示 //可以将一个已存在或不存在的文件或目录封装成File对象 File file = new File("d:\\a.txt"); File file2 = new File("d:","a.txt"); File file

JAVA学习第四十九课 — IO流(三):缓冲区2 &amp; 装饰设计模式

一.模拟BufferedReader 自定义MyBuffereaReader 对于缓冲区而言,里面其实就是封装一个数组,对外提供方法对数组的操作,这些方法最终操作的都是数组的角标 原理:从源中取出数据存入缓冲区,再从缓冲区不断的取出数据,取完后,继续从源中继续取数据,进缓冲区,直至源中的数据取完,用-1做为结束标记 import java.io.*; class MyBufferedReader { private FileReader fr; //定义数组作为缓冲区 private char[

JAVA学习笔记(五十九)- Socket编程

客户端 import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.UnknownHostException; /* * 客户端 */ public class Client { public static void main(String[] args) throws IOExcep

JAVA学习第五十四课 — IO流(八)打印流 &amp; 序列流

一.综合练习-文件清单列表 获取指定目录下,指定扩展名的文件(含子目录),并将这些文件的绝对路径写到一个文本文件中.也就是建立一个指定扩展名的文件列表 1.深度遍历 2.过滤器->容器 3.写入文件 import java.util.List; import java.io.*; import java.util.ArrayList; public class Main { public static void main(String[] args) throws IOException { F

JAVA学习第三十六课(常用对象API)- 集合框架(四)— Set集合:HashSet集合演示

随着Java学习的深入,感觉大一时搞了一年的ACM,简直是明智之举,Java里很多数据结构.算法类的东西,理解起来就轻松多了 Set集合下有两大子类开发常用 HashSet集合 .TreeSet集合 Set集合的元素是不重复且无序 一.HashSet集合 API文档解释:此类实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持.它不保证 set 的迭代顺序:特别是它不保证该顺序恒久不变.此类允许使用null 元素. 此类为基本操作提供了稳定性能,注意,此实现不是同步的. 由上可

JAVA学习第五十五课 — IO流(九)文件切割合成器

文件切割器 private static final int SIZE = 1024 *1024; public static void splitFile(File file) throws IOException{ //用读取流关联文件(不确定文件格式) FileInputStream fis = new FileInputStream(file);//源是一个 byte[] by = new byte[SIZE];//定义1M的缓冲区 FileOutputStream fos = null