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编程
JAVA学习第五十九课 — 网络编程概述的更多相关文章
- Java学习笔记【十二、网络编程】
原计划的学习结束时间是3月4日,目前看来已经延迟了,距离低标还差一些,多方面原因,也不找借口,利用周末赶赶进度,争取本周末把低标完成吧! 参考: http://www.runoob.com/java/ ...
- JAVA学习第五十二课 — IO流(六)File对象
File类 用来给文件或者目录封装成对象 方便对文件与目录的属性信息进行操作 File对象能够作为參数传递给流的构造函数 一.构造函数和分隔符 public static void FileDemo( ...
- JAVA学习第五十四课 — IO流(八)打印流 & 序列流
一.综合练习-文件清单列表 获取指定文件夹下,指定扩展名的文件(含子文件夹),并将这些文件的绝对路径写到一个文本文件里.也就是建立一个指定扩展名的文件列表 1.深度遍历 2.过滤器->容器 3. ...
- JAVA学习第三十六课(经常使用对象API)— Set集合:HashSet集合演示
随着Java学习的深入,感觉大一时搞了一年的ACM,简直是明智之举,Java里非常多数据结构.算法类的东西,理解起来就轻松多了 Set集合下有两大子类开发经常使用 HashSet集合 .TreeSet ...
- Java学习笔记(十九)——Java 日志记录 AND log4j
[前面的话] 学习的进度应该稍微在快一点. Java日志到了必须学习怎么使用的时候了,因为在项目中要进行使用.基础性文章,选择性阅读. [结构] java日志对调试,记录运行,问题定位都起到了很重要的 ...
- Java学习笔记二十九:一个Java面向对象的小练习
一个Java面向对象的小练习 一:项目需求与解决思路: 学习了这么长时间的面向对象,我们只是对面向对象有了一个简单的认识,我们现在来做一个小练习,这个例子可以使大家更好的掌握面向对象的特性: 1.人类 ...
- JAVA学习第六十四课 — 反射机制
Java反射机制是在执行状态中,对于随意一个类,都可以知道这个类的全部属性和方法,对于随意一个对象,都可以调用它的随意一个方法和属性,这样的动态获取的信息以及动态调用对象的方法的功能称为java ...
- JAVA学习第四十六课 — 其它对象API(二)Date类 & Calendar类(重点掌握)
Date类(重点) 开发时,会时常遇见时间显示的情况,所以必须熟练Date的应用 <span style="font-family:KaiTi_GB2312;font-size:18p ...
- salesforce 零基础学习(五十九)apex:param使用以及相关的疑惑
做web项目难免要从一个页面传参数,解析参数中的值进行相关处理以后跳转到其他页面,VF中也不例外.使用传参的标签为apex:param. apex:param标签不可以单独使用,需要作为子标签嵌套在相 ...
随机推荐
- Trie图
AC自动机是KMP的多串形式,当文本串失配时,AC自动机的fail指针告诉我们应该跳到哪里去继续匹配(跳到当前匹配串的最长后缀去),所以AC自动机的状态是有限的 但是AC自动机具有不确定性, 比如要求 ...
- bellman_ford算法
给定一个源点,求最短路径,那么存在以源点为根的最短路径树因为最短路径具有最优子结构的性质,所以我们可以先求出树的第一层,然后再求出树的第二层,以此类推bellman_ford算法就是按照这种思想求最短 ...
- Codeforces 107B Basketball Team 简单概率
题目链接:点击打开链接 题意: 给定n m h 表示有m个部门,有个人如今在部门h 以下m个数字表示每一个部门的人数.(包含他自己) 在这些人中随机挑选n个人,问挑出的人中存在和这个人同部门的概率是多 ...
- .net MVC AutoFac基地的环境建设
在Nuget在运行安装引用 Install-Package Autofac -Version 3.1.0 Install-Package Autofac.Mvc4 public static void ...
- 自己写shell命令pwd
思维:(1)得到"."的i节点号,叫n(使用stat) (2)chdir ..(使用chdir) (3)找到inode号为n的节点,得到其文件名称. 反复上述操作直到当前文件夹&q ...
- BST树,B树、B-树、B+树、B*树
BST树,B树.B-树.B+树.B*树 二叉搜索树(BST): 1.所有非叶子结点至多拥有两个儿子(Left和Right): 2.所有结点存储一个关键字: 3.非叶子结点的左指针指向小于其关键字的子树 ...
- Java面试题集(136-150)
摘要:目,尽管仅仅有15道题目.可是包括的信息量还是非常大的,非常多题目背后的解题思路和算法是非常值得玩味的. 136.给出以下的二叉树先序.中序.后序遍历的序列? 答:先序序列:ABDEGHCF.中 ...
- 解决mongodb设备mongod命令不是内部或外部的命令
1:安装 去mongodb的官网http://www.mongodb.org/downloads下载32bit的包 解压后会出现下面文件 在安装的盘C:下建立mongodb目录,拷贝bin目录到该目录 ...
- zerglurker的c语言教程006——第一功能
行,以往的经验教训后,.成员main性能.变数.命名等基本概念应该有一个初步的了解 下面,我们就可以开始我们自己的第一个定义的函数. 仿照头等舱.操作的第二个教训.添加一个新的项目的解决方案Lessi ...
- android判断是否含有某权限
boolean has_permission = (PackageManager.PERMISSION_GRANTED == pkm.checkPermission("android.per ...