JAVA从入门到精通-网络编程
程钢 2018-04-03 来源 : 阅读 458 评论 0

摘要:JAVA从入门到精通中我们需要学会网络编程。网络模型:OSI模型,TCP/IP模型;网络通讯要素:IP地址,端口号,传输协议,域名解析,Socket;网络传输协议的应用:UDP(数据报文协议),TCP(传输控制协议)。学会这些对我们的JAVA从入门到精通有很大的帮助。

网络模型

l OSI模型(Open System Interconnection,开放系统互连)

Ÿ 七层模型

1. 物理层

主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后再转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特。

2. 数据链路层

主要将从物理层接收的数据进行MAC地址(网卡的地址)的封装与解封装。常把这一层的数据叫做帧。在这一层工作的设备是交换机,数据通过交换机来传输。

3. 网络层

主要将从下层接收到的数据进行IP地址(例192.168.0.1)的封装与解封装。在这一层工作的设备是路由器,常把这一层的数据叫做数据包。

4. 传输层

定义了一些传输数据的协议和端口号(www端口80等),如:TCP(传输控制协议,传输效率低,可靠性强,用于传输可靠性要求高,数据量大的数据),UDP(用户数据报协议,与TCP特性恰恰相反,用于传输可靠性要求不高,数据量小的数据,如QQ聊天数据就是通过这种方法传输的)。主要是将从下层接收的数据进行分段和传输。到达目的地后再进行重组,常常把这一层数据叫做段。

5. 会话层

通过传输层(端口号:传输端口与接收端口)建立数据传输的通路。主要在你的系统之间发起会话或者接受会话请求(设备之间需要互相认识,可以是IP也可以是MAC或者是主机名)

6. 表示层

主要是进行对接收的数据进行解释、加密、解密、压缩、解压缩(也就是把计算机能够识别的东西转换成人能够识别的东西,如图片、音频文件等)

7. 应用层

主要是一些终端的应用,比如FTP(各种文件下载)、WEB(IE浏览器)、QQ之类的应用(可以把它理解成我们在电脑屏幕上可以看到的东西,就是终端应用)

l TCP/IP模型

 JAVA从入门到精通-网络编程

网络通讯要素

l IP地址(InetAddress类)

Ÿ 网络中设备的标识

Ÿ 可以用主机名来代替使用

Ÿ 本地回环地址:127.0.0.1

Ÿ 主机名:localhost

JAVA从入门到精通-网络编程

l 端口号

Ÿ 用于标识进程的逻辑地址,每个进行都有各自不同的标识

Ÿ 有效端口0~65535,其中0-1024系统使用或保留端口

l 传输协议

Ÿ 传输通讯规则

Ÿ 常见的协议:UDP、TCP

Ÿ UDP

ü 将数据、源地址和目的地址封装在数据报包中

ü 每个数据报的大小被限制在64K以内

ü 不需要建立连接

ü 是不可靠协议,速度快

Ÿ TCP

ü 建立连接,形成传输数据的通道

ü 在连接中进行大数据传输

ü 通过三次握手完成连接

三次握手:

1. 客户端向服务器发送包含初始序列值的数据段,开启通信会话

2. 服务器发送包含确认值的数据段,其值等于收到的序列值加1,并加上其自身的同步序列值

3. 发送带确认值的客户端响应,其值等于接受的序列值加1.这便完成了整个建立连接的过程

ü 必须建立连接

ü 是可靠协议,效率较低

l 域名解析

域名解析是把域名指向网站空间IP,让人们通过注册的域名可以方便地访问到网站一种服务。IP地址是网络上标识站点的数字地址,为了方便记忆,采用域名来代替IP地址标识站点地址。域名解析就是域名到IP地址的转换过程。域名的解析工作由DNS服务器完成。

互联网上DNS服务器有很多,用户可以指定某个域名解析器地址,或者也可以让系统自动去获取DNS服务器地址。

PS:在进行域名解析时,先会在本地的hosts文件中寻找解析信息,如果没有匹配信息,再去网络上的DNS服务器寻找匹配信息。

l Socket(套接字)

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

Ÿ 套接字是两台机器间通信的端点。

Ÿ 网络通信其实就是Socket间的通信(所以网络编程又称为Socket编程)

Ÿ Socket之间通过IO流来进行数据的传输

Ÿ Socket = ip address + TCP/UDP port

网络传输协议的应用

l UDP(数据报文协议)

Ÿ DatagramSocket类

此类表示用来发送和接收数据报包的套接字。

特点:既能发送又能接收

Ÿ DatagramPacket类

此类表示数据报包。数据报包用来实现无连接包投递服务。每条报文仅根据该包中包含的信息从一台机器路由到另一台机器。

Ÿ 创建UDP发送端

 JAVA从入门到精通-网络编程

Ÿ 创建UDP接收端

 JAVA从入门到精通-网络编程

l TCP(传输控制协议)

Ÿ Socket

此类实现客户端套接字。

Ÿ ServerSocket

此类实现服务器套接字。服务器套接字等待请求通过网络传入。它基于该请求执行某些操作,然后可能向请求者返回结果。

PS:在创建Socket对象时,底层会自动创建一个客户端与服务端之间的通道,这个通道就是Socket流(网络IO流),Socket流既包含输入流,又包含输出流。

Ÿ 创建TCP客户端

 JAVA从入门到精通-网络编程

Ÿ 创建TCP服务端

 JAVA从入门到精通-网络编程

Ÿ Socket的2个需要注意的方法:

ü shutdownInput() // 将此套接字的输入流置于“流的末尾”

ü shutdownOutput() // 禁用此套接字的输出流(可用于通知服务端停止接收数据)

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言JAVA频道!

本文由 @职坐标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 1
看完这篇文章有何感觉?已经有2人表态,50%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论
本文作者 联系TA

擅长大型企业商业网站开发和管理

  • 10
    文章
  • 1265
    人气
  • 100%
    受欢迎度

已有7人表明态度,100%喜欢该老师!

进入TA的空间
名师指导直通车
  • 资料索取
    资料索取
  • 答疑解惑
    答疑解惑
  • 技术交流
    技术交流
  • 职业测评
    职业测评
  • 面试技巧
    面试技巧
  • 高薪秘笈
    高薪秘笈
TA的其他文章 更多>>
JAVA语言-编码表
经验技巧 100% 的用户喜欢
JAVA语言-IO流(扩展)序列流、对象流、随机流、管道流
经验技巧 0% 的用户喜欢
JAVA语言-IO流(下)字节流、字符流、转换流、Properties类
经验技巧 0% 的用户喜欢
JAVA从入门到精通-JDK7 新特性:自动关闭资源
经验技巧 0% 的用户喜欢
JAVA从入门到精通-不定长度的参数
经验技巧 0% 的用户喜欢
其他海同名师 更多>>
刘新华
刘新华 联系TA
实力型。激情饱满,对专业充满热情
吴翠红
吴翠红 联系TA
独创“教、学、练、测”循环教学模式
吕益平
吕益平 联系TA
熟悉企业软件开发的产品设计及开发
黄泽民
黄泽民 联系TA
擅长javase核心技术
孔庆琦
孔庆琦 联系TA
对MVC模式和三层架构有深入的研究
经验技巧30天热搜词 更多>>

您输入的评论内容中包含违禁敏感词

我知道了

免费获取海同IT培训资料
验证码手机号,获得海同独家IT培训资料
获取验证码
提交

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    ICP许可  沪B2-20190160

站长统计