Java高级篇之网络通讯
一、了解现代流行的网络软件的基本架构
1、C/S,client/Server,客户服务器架构的软件
有专门的客户端软件,需要安装在客户电脑上,用户界面可以做得非常复杂,比如股票行情和交易软件。数据的传输量相对比较少,反映会比较快。用户必须要得到安装软件,安装后才能使用,QQ也属于此类。
2、B/S,browser/Server,浏览器服务器架构的软件。
没有客户户端软件,采用浏览器中的网页作为用户界面,受限于设计工具还有浏览器执行引擎,界面不可能太复杂。传输速度相对比较慢,每一次的访问都会完整的下载整份网页的代码也包括数据,占据的带宽比较大,流量的消耗也比较大。它不用安装客户端,用户只需要电脑有浏览器知道系统的访问地址就可以使用了。现在,网络的流量很便宜,因此这种架构的系统大行其道,占据了网络应用程序市场的80%以上份额。
二、什么是网络通讯?
不同的主机之间通过网络媒介并基于特定的通讯协议实现双方的数据传输及交换。
三、通讯协议
通讯的双方需要共同遵守的传输数据的规范,一般 包括数据的格式,数据传输的顺序,需要交换的基础数据内容等。
1、tcp/ip 协议
Tcp是传输控制协议,ip是网际协议,tcp工作在传输层,ip工作在网络层。
Ip 协议有来寻址(找到另外一台主机)
Tcp 协议用来传输数据, 它实现了数据的可靠性传输,可以保证数据完整及时的到达目标节点。
Tcp协议在传输之前要实现两个端点之间可靠的连接,通过三次握手来完成连接的建立。如果传输结束了还需要进行四次挥手才能断开连接。它传输数据是通过数据包来传递的,数据包中包含目的地址,来源地址,数据长度,检验码,顺序码等。
它的适用场合包括文件传输,网上支付。
2、udp协议
用户数据报协议,它不需要建立连接,传输的包中包括了目的地址及源地址,它不管数据是否到达,这种协议传输速度非常快,但是不安全也不可靠,它的使用场合主要是象视频会议,视频聊天,QQ。
四、ip地址
Ip地址是网络上主机的唯一的地址标识,在通讯前需要找到对方,ip地址是找到对方的基本条件,象门牌号码。
现在主流的ip地址采用ipv4的编址方式,用四个字节一起来表示一份地址
现在互联网上的通讯基础要件一个是tcp协议,另一个就是ip地址。
如果一台电脑能够进行通讯 ,它一定有一个ip地址。
如何查看ip,使用ipconfig命令
Ip的四个字节每位可表示为0-255,因此最多可以表示42亿台主机。公网ip是紧俏资源。
全世界的ip分为三类,分别为A(第一字节表示网络地址),B(二个字节表示网络地址),C(用三个字节表示网络地址,)
有一个特殊的ip 127.0.0.1,表示本机内部的通讯ip,它在网络上不起作用。
有一个专用主机名 localhost,表示本机,可以与 127.0.0.1 划等号.
五、端口
在网络通讯中端口用来表示运行在主机中的进程。一台主机可以有多个具有通信功能的进程同时运行,为了防止混淆便于准确地找到某个进程,因此在通讯 过程中,用端口号来表示某个进程。
端口号用两个字节表示,0 — 65535,0-1023的范围已经被一些公用的程序使用,比如iis,ftp,email等。以后写程序时,定义的端口号要大于1023。
如果两个进程的端口号相同,会产生端口冲突,后启动的进程不能工作。
结论:如果要访问某台主机上的某个应用,必须采用ip+端口号的形式。
查询本机进程对应的端口,netstat -ano
六、Java所实现的网络通讯
1、通讯api在java.net包中.
2、基于tcp协议的通讯实现原理.
是基于C/S模型来实现的通讯,必须要有服务器端,同时还要有客户端,服务器和客户端之间必须先建立连接再进行数据的传输。数据传输功能的实现主要依赖于套接字。
七、利用Socket实现通讯
Java高级篇之网络通讯相关推荐
- Java高级篇-0-为什么要掌握Java高级篇知识
好长时间了,就想要花时间系统去学习下Java的高级篇知识,这部分是我个人目前比较欠缺的,而且是急缺的知识.我认为的Java高级篇内容是这样划分的:对Java这个编程语言有基本了解,基本掌握了基础语法, ...
- Java高级篇——深入浅出Java类加载机制
转载自 Java高级篇--深入浅出Java类加载机制 类加载器 简单讲,类加载器ClassLoader的功能就是负责将class文件加载到jvm内存. 类加载器分类 从虚拟机层面讲分为两大类型的类加载 ...
- elasticsearch - java - 高级篇 - 封装类 - 2
世界上并没有完美的程序,但是我们并不因此而沮丧,因为写程序就是一个不断追求完美的过程. -侯氏工坊 文章目录 说明 参考 核心封装类 新增类 说明 高级篇是自我封装的一个进化过程 封装类并不是固定不变 ...
- 2022金三银四面试总结-Java高级篇
Java面试总结 1.你用过哪些集合类? 大公司最喜欢问的Java集合类面试题 40个Java集合面试问题和答案 java.util.Collections 是一个包装类.它包含有各种有关集合操作的静 ...
- 云原生时代必须具备的核心技能之Docker高级篇(Docker网络详解)
前面给大家项目的介绍了Docker的基础内容 Docker基础篇 接下来给大家系统的介绍下Docker高级篇的内容:网络核心.Docker实战.DockerCompose.Harbor以及Swar ...
- 【鲁班学院】面试总结:Java高级篇(上):集合的类型以及重新认识HashMap
1.你用过哪些集合类? 大公司最喜欢问的Java集合类面试题 40个Java集合面试问题和答案 java.util.Collections 是一个包装类.它包含有各种有关集合操作的静态多态方法. ja ...
- Java基础篇:网络编程
文章目录 概述 通信要素之一:IP和端口号 通信要素之二:网络协议 TCP网络编程 UDP网络编程 URL编程 总结 概述 Java是 Internet 上的语言,它从语言级上提供了对网络应用程序的支 ...
- Java高级篇(二)——网络通信
网络编程是每个开发人员工具箱中的核心部分,我们在学习了诸多Java的知识后,也将步入几个大的方向,Java网络编程就是其中之一. 如今强调网络的程序不比涉及网络的更多.除了经典的应用程序,如电子邮件. ...
- 面试题之JAVA高级篇
JVM 只需一张图 MQ相关问题 如何保证消息的可靠性传输/如何处理消息丢失问题? 考虑维度 分析 生产者 原因:网络中断 解决1:可以使用rabbitmq提供的事务功能 就是生产者发送数据之前开 ...
最新文章
- Android SearchView和ListView的结合使用
- go语言学习(5)协程
- shell脚本逻辑判断,文件目录属性判断,if,case用法
- 【python进阶】_多线程多进程
- canvas 圆角矩形填充_Canvas:随机长方形生成和色块填充
- C语言socket accept()函数(提取出所监听套接字的等待连接队列中第一个连接请求,创建一个新的套接字,并返回指向该套接字的文件描述符)
- matlab图像显示时间,请问怎么把样点数变成时间显示在图像了里
- unity 阳光插件_网络广告,阳光创信保驾护航
- python 垃圾回收详解
- .net Core 介绍
- 1.1浅谈Spring(一个叫春的框架)
- mysql数据库相关基础知识02
- 大数据智能运维平台方案-1
- 2019全球IT行业薪酬报告:平均年薪超70万!最高薪职位竟是...
- 离散型Hopfield神经网络(DHNN)
- Freesurfer学习笔记——Introduction to Freesurfer Output(输出简介)
- 希尔排序、快速排序、归并排序的实现分析以及时间复杂度
- 项目实训第四周第二次记录
- 屏幕录制编辑软件:Screenium 3 for Mac
- 二维码编码库qrencode