java 25 - 2 网络编程之 网络通信三要素
网络通信三要素
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)
1 class Demo { 2 private Demo(){} 3 4 public static Demo getXxx() { 5 return new Demo(); 6 } 7 }
要掌握的功能
获取任意主机的IP(得知道那台主机的名字):getByName
主机名:getHostName
主机Ip地址:getHostAddress
代码:
1 public static void main(String[] args) throws UnknownHostException { 2 //InetAddress类 3 4 //获取任意主机的IP(得知道那台主机的名字):getByName 5 InetAddress id = InetAddress.getByName("DESKTOP-9HCB2BG"); 6 System.out.println(id); 7 8 //主机名:getHostName 9 String name = id.getHostName(); 10 System.out.println(name); 11 12 //主机Ip地址:getHostAddress 13 String myid = id.getHostAddress(); 14 System.out.println(myid); 15 }
端口号
物理端口:网卡口
逻辑端口:我们指的就是逻辑端口
A:每个网络程序都会至少有一个逻辑端口
B:用于标识进程的逻辑地址,不同进程的标识
C:有效端口:0~65535,其中0~1024系统使用或保留端口。
PS:通过任务管理器的详细信息可以查看端口号
协议UDP和TCP
UDP (俗称:不可靠协议)
将数据源和目的封装成数据报包中,不需要建立连接;每个数据报包的大小在限制在64k;因无连接,是不可靠协议;不需要建立连接,速度快
TCP (俗称:三次握手协议)
建立连接,形成传输数据的通道;在连接中进行大数据量传输;通过三次握手完成连接,是可靠协议;必须建立连接,效率会稍低
总结:
UDP的特点:
面向无连接。
不可靠。
速度快。
将数据封包传输,数据包最大64k。
举例:
聊天留言,在线视频,视频会议,发短信,邮局包裹。
TCP的特点:
面向连接。
安全可靠
效率稍低。
通过三次握手确保连接的建立。
举例:
下载,打电话,QQ聊天(你在线吗,在线,就回应下,就开始聊天了)
转载于:https://www.cnblogs.com/LZL-student/p/5961447.html
java 25 - 2 网络编程之 网络通信三要素相关推荐
- 【java网络编程】TCP三次握手、四次挥手,常见Socket通信BIO
网络编程,网络通信 内容管理 TCP三次握手,四次挥手 TCP 建立连接 --- 三次握手 TCP断开 ---- 四次挥手 java网络IO BIO 同步阻塞 Socket通信模型 BIO网络通信De ...
- Java学习笔记-网络编程
Java提供了网络编程,并且在实际中有着大量运用 网络编程 网络编程概述 网络模型 OSI参考模型 TCP/IP参考模型 网络通讯要素 IP地址 端口号 传输协议 网络参考模型 网络通讯要素 IP地址 ...
- Java学习之网络编程实例
转自:http://www.cnblogs.com/springcsc/archive/2009/12/03/1616413.html 多谢分享 网络编程 网络编程对于很多的初学者来说,都是很向往的一 ...
- Java 基础之网络编程
网络编程 主要内容 软件架构CS/BS 网络通信三要素 TCP通信 Socket套接字 ServerSocket 第一章 网络编程入门 1.1软件结构 C/S结构 :全称为Client/Server结 ...
- JAVA基础11 网络编程
JAVA基础 11.网络编程 1.什么是网络?网络模型?网络四要素? 1.网络 在计算机领域中网络是信息传输,接收,共享的虚拟平台,通过它把各个点,面,体的联系到一起,从而实现这些资源的共享. 资源的 ...
- Android之网络编程之网络通信几种方式实例分享
这篇文章主要介绍了android 网络编程之网络通信几种方式,有需要的朋友可以参考一下 现在总结了六种方式: (1)针对TCP/IP的Socket.ServerSocket (2)针对UDP的Data ...
- Java进阶之网络编程
网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编程的大门而放弃了对于该部分技术的学习. 在 学习网络编程以前,很多初学者可能觉得网络编 ...
- 【java笔记】网络编程概述
[java笔记]TCP通信程序_m0_52043808的博客-CSDN博客 [java笔记]网络编程:文件上传案例_m0_52043808的博客-CSDN博客 网络编程: 在一定协议下,实现两台计算机 ...
- Java之HTTP网络编程(下篇:网页浏览器程序设计)
目录 一.本篇简介 二.URL类 三.基于URL类的网页下载 1.发送按钮 2.接收数据的多线程 四.URL网页下载客户端 五.编写web浏览器 1.WebEngine类 2.WebView类 3.W ...
- java程序设计之网络编程基础教程_Java程序设计之网络编程基础教程
基本信息 书名:Java程序设计之网络编程基础教程(21世纪高等学校计算机基础实用规划教材) :43.50元 作者:李芝兴 主编 出版社:清华大学出版社 出版日期:2012-12-1 ISBN:978 ...
最新文章
- 打印服务不能启动 print spooler服务停止
- html页面怎样禁止复制粘贴,javascript中如何禁止复制粘贴?
- img元素高度多出来的几像素
- ios-上拉电阻负载许多其他接口
- quartus2管教锁定出不来_Quartus II 中常见Warning 原因及解决方法(转载)
- python dicom 器官分割_图像识别 | 使用Python对医学Dicom文件的预处理(含代码)
- Spring 整合 Quartz 分布式调度
- 我的Dojo中有一个Mojo(如何编写Maven插件)
- 微信小程序禁止页面上下滑动;uni-app微信小程序禁止页面上下滑动;uni-app小程序上下滑动;
- 需要额外端口信息_使用Python进行TCP端口扫描
- python中printf的用法_python输出语句print的用法是什么?
- 安卓仿苹果键盘输入法_仿ios输入法安卓版
- 老兵新传 Visual Basic核心编程及通用模块开发pdf
- Big O, Big Omega, Big Theta的含义
- 用四阶RungeKutta方程解二阶常微分方程,并计算船舶在规则波中的横摇角(附Matlab代码)
- android studio怎么改软件扫码界面_一文入门Android逆向
- 无法打开虚拟机“Ubuntu”,ubuntu.vmx获得所有权失败
- Windows Server2008上安装VS2008出错及解决办法
- UE4 如何设置屏幕尺寸和画质
- NOI数学:二次同余方程的解法
热门文章
- 挖矿从入门到入狱,百度运维获利 10 万被判 3 年。网友:人生已毁
- 好开心,明天就上班了
- Google 放话:要教会我家宝宝开发Android App!
- 部署hexo后github pages页面未更新或无法打开问题
- UVa232.Crossword Answers
- 用eclipse建立简单WebService客户端,使用WSDL,用于短信接口发送
- iOS duplicate symbols for architecture x86_64 问题全面解析
- HDU 5608 function(莫比乌斯反演 + 杜教筛)题解
- 杭电多校HDU 6599 I Love Palindrome String (回文树)题解
- 链表例题2:链表的倒数第k个节点是多少