网络通信三要素

IP地址:

  InetAddress 网络中设备的标识,不易记忆,可用主机名(计算机的标识号)

端口号:

  用于标识进程的逻辑地址,不同进程的标识(正在运行的软件的标识号)

传输协议:

  通讯的规则 常见协议:TCP,UDP

例子:  

平时我们要进行通讯,需要哪些要素呢?

比如说:我要跟你说话.

  第一个条件:

    我要先找到你 (IP)

  第二个条件:

    你得有接收数据的地方 耳朵 (端口)

  第三个条件:

    我跟你说话,你能接收到,咱按什么方式接收啊,我说英文你懂吗,说韩文你懂吗,不懂是吧,所以我还是说中文把.(协议)

IP地址

  要想让网络中的计算机能够互相通信,必须为每台计算机指定一个标识号,通过这个标识号来指定要接受数据的计算机和识别发送的计算机。在TCP/IP协议中,这个标识号就是IP地址。

  那么,我们如果获取和操作IP地址呢? 为了方便我们对IP地址的获取和操作,java提供了一个类InetAddress 供我们使用。

A:所谓IP地址就是给每个连接在Internet上的主机分配的一个32bit地址。

  按照TCP/IP规定,IP地址用二进制来表示,每个IP地址长32bit,比特换算成字节,就是4个字节。例如一个采用二进制形式的IP地址

是“00001010000000000000000000000001”,这么长的地址,人们处理起来也太费劲了。

为了方便人们的使用,IP地址经常被写成十进制的形式,中间使用符号“.”分开不同的字节。

于是,上面的IP地址可以表示为“10.0.0.1”。IP地址的这种表示法叫做“点分十进制表示法”,这显然比1和0容易记忆得多。

B:IP地址的组成

IP地址 = 网络号码+主机地址

  A类IP地址:

    第一段号码为网络号码,剩下的三段号码为本地计算机的号码

  B类IP地址:

    前二段号码为网络号码,剩下的二段号码为本地计算机的号码

  C类IP地址:

    前三段号码为网络号码,剩下的一段号码为本地计算机的号码

  特殊地址:

    127.0.0.1 回环地址,可用于测试本机的网络是否有问题. ping 127.0.0.1

  DOS命令 ipconfig:查看本机IP地址

    xxx.xxx.xxx.0 网络地址
    xxx.xxx.xxx.255 广播地址

  A类 1.0.0.1---127.255.255.254 (1)10.X.X.X是私有地址(私有地址就是在互联网上不使用,而被用在局域网络中的地址) (2)127.X.X.X是保留地址,用做循环测试用的。

  B类 128.0.0.1---191.255.255.254 172.16.0.0---172.31.255.255是私有地址。169.254.X.X是保留地址。

  C类 192.0.0.1---223.255.255.254 192.168.X.X是私有地址

  D类 224.0.0.1---239.255.255.254

  E类 240.0.0.1---247.255.255.254

类InetAddress:

  这个类没有构造方法,那么如何使类提供的功能呢?

  如果一个类没有构造方法:
    A:成员全部是静态的(Math,Arrays,Collections)
    B:单例设计模式(Runtime)
    C:类中有静态方法返回该类的对象(InetAddress)
    

   class Demo {
  private Demo(){} public static Demo getXxx() {
return new Demo();
}
}

要掌握的功能

  获取任意主机的IP(得知道那台主机的名字):getByName

  主机名:getHostName

  主机Ip地址:getHostAddress

代码:

     public static void main(String[] args) throws UnknownHostException {
//InetAddress类 //获取任意主机的IP(得知道那台主机的名字):getByName
InetAddress id = InetAddress.getByName("DESKTOP-9HCB2BG");
System.out.println(id); //主机名:getHostName
String name = id.getHostName();
System.out.println(name); //主机Ip地址:getHostAddress
String myid = id.getHostAddress();
System.out.println(myid);
}

端口号

  物理端口:网卡口

  逻辑端口:我们指的就是逻辑端口

    A:每个网络程序都会至少有一个逻辑端口

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

    C:有效端口:0~65535,其中0~1024系统使用或保留端口。

PS:通过任务管理器的详细信息可以查看端口号

协议UDP和TCP

  UDP (俗称:不可靠协议)

    将数据源和目的封装成数据报包中,不需要建立连接;每个数据报包的大小在限制在64k;因无连接,是不可靠协议;不需要建立连接,速度快
  TCP (俗称:三次握手协议)

    建立连接,形成传输数据的通道;在连接中进行大数据量传输;通过三次握手完成连接,是可靠协议;必须建立连接,效率会稍低

总结:
  UDP的特点:

    面向无连接。

    不可靠。

    速度快。

    将数据封包传输,数据包最大64k。

  举例:

    聊天留言,在线视频,视频会议,发短信,邮局包裹。

  TCP的特点:

    面向连接。

    安全可靠

    效率稍低。

    通过三次握手确保连接的建立。

  举例:

    下载,打电话,QQ聊天(你在线吗,在线,就回应下,就开始聊天了)

java 25 - 2 网络编程之 网络通信三要素的更多相关文章

  1. java 25 - 1 网络编程的概述

    网络编程概述 计算机网络 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统. ...

  2. java 25 - 5 网络编程之多线程实现聊天室

    平时聊天都是在同一个窗口的,所以,这个窗口同时实现发送数据和接收数据,这时就需要多线程实现. 建立一个类: 把聊天的发送端和接收端放在同一个类,启动一个窗口 public class CharRoom ...

  3. 黑马程序员:Java基础总结----网络编程

    黑马程序员:Java基础总结 网络编程   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 网络编程 网络通讯要素 . IP地址 . 网络中设备的标识 . 不易记忆,可用 ...

  4. 第62节:探索Java中的网络编程技术

    前言 感谢! 承蒙关照~ 探索Java中的网络编程技术 网络编程就是io技术和网络技术的结合,网络模型的定义,只要共用网络模型就可以两者连接.网络模型参考. 一座塔有七层,我们需要闯关. 第一层物理层 ...

  5. Java学习:网络编程总结

    Java网络编程总结 一.概述 计算机网络是通过传输介质.通信设施和网络通信协议,把分散在不同地点的计算机设备互连起来,实现资源共享和数据传输的系统.网络编程就就是编写程序使联网的两个(或多个)设备( ...

  6. Java学习笔记-网络编程

    Java提供了网络编程,并且在实际中有着大量运用 网络编程 网络编程概述 网络模型 OSI参考模型 TCP/IP参考模型 网络通讯要素 IP地址 端口号 传输协议 网络参考模型 网络通讯要素 IP地址 ...

  7. Java学习之网络编程实例

    转自:http://www.cnblogs.com/springcsc/archive/2009/12/03/1616413.html 多谢分享 网络编程 网络编程对于很多的初学者来说,都是很向往的一 ...

  8. Java进阶之网络编程

    网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编程的大门而放弃了对于该部分技术的学习. 在 学习网络编程以前,很多初学者可能觉得网络编 ...

  9. 第78节:Java中的网络编程(上)

    第78节:Java中的网络编程(上) 前言 网络编程涉及ip,端口,协议,tcp和udp的了解,和对socket通信的网络细节. 网络编程 OSI开放系统互连 网络编程指IO加网络 TCP/IP模型: ...

随机推荐

  1. iOS/Android网络消息推送的实现两种方法

    移动时代,用户为王,而每个APP拥有的活跃用户量(Active Users),决定了其价值. 消息推送成为了不可或缺的活跃唤起工具. 目前消息推送有如下两种途径: 1.iOS传统方式: 通过Apple ...

  2. CentOS5.5挂载本地ISO镜像

    操作步骤: 一.挂载iso文件到挂载点 [root@server ~ ]# mount  -o loop /mnt/iso/CentOS5.iso /mnt/cdrom 二.查看挂载状态 [root@ ...

  3. picasso总结

    public class UMDocApplication extends Application { private Picasso picasso = null; /**获取Picasso对象** ...

  4. Kotlin语法(基础)

    一.基础语法: 1. 定义包名: 包名应该在源文件的最开头,包名不必和文件夹路径一致:源文件可以放在任意位置. package my.demo 2. 定义函数: fun sum(a: Int , b: ...

  5. android加固系列—6.仿爱加密等第三方加固平台之动态加载dex防止apk被反编译

    [版权所有,转载请注明出处.出处:http://www.cnblogs.com/joey-hua/p/5402599.html ] 此方案的目的是隐藏源码防止直接性的反编译查看源码,原理是加密编译好的 ...

  6. Android 项目框架

  7. 【iOS】Mac下SVN的服务器搭建

    在协同开发中,版本控制是必备的.完全不敢想象团队都在用U盘.QQ管理代码的景象.但是svn不像git,拥有众多免费的代码库,如果在同 一局域网下,搭建svn服务端来同步代码是很有必要的.本文将详细讲解 ...

  8. GET和POST请求

    GET与POST请求 简介 GET请求解释及语法格式 POST请求简介及语法 GET请求代码 POST请求代码 GET请求解释及语法格式: 网络请求默认是get 网络请求有很多种:GET查 POST改 ...

  9. C中的流程控制

    一. 流程控制 l 顺序结构:默认的流程结构.按照书写顺序执行每一条语句. l 选择结构:对给定的条件进行判断,再根据判断结果来决定执行哪一段代码. l 循环结构:在给定条件成立的情况下,反复执行某一 ...

  10. 1.3 基础知识——GP2.1 方针(Policy)

    摘要: 方针这个GP每个PA都有,其实CMMI实践有没有实在价值,就在于方针!如果我们做出来的CMMI实践仅仅就是写文档.多步骤.没事找事,那其实就是违背了公司的商业目标,公司的商业目标简单说就是:用 ...