IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> Java 网络编程 -> 正文阅读

[网络协议]Java 网络编程

一、网络架构模型

1、OSI参考模型??

OSI定义了网络连接的七层框架(物理层、数据链路层、网络层、传输层、会话层、表示层、应用层)

2、TCP/IP五层模型

TCP/IP 五层协议(物理层、数据链路层、网络层、传输层、应用层)

(1)应用层:主要负责应用程序的协议,例如HTTP协议、FTP协议等。
(2)传输层:主要使网络程序进行通信,在进行网络通信时,可以采用TCP协议,也可以采用UDP协议。
(3)网络层:网络层是整个TCP/IP协议的核心,它主要用于将传输的数据进行分组,将分组数据发送到目标计算机或者网络。
(4)数据链路层:链路层是用于定义物理传输通道,通常是对某些网络连接设备的驱动协议,例如针对光纤、网线提供的驱动。

二、协议分类

java.net包中提供了两种常见的网络协议的支持:TCP和UDP。

1、TCP

(1)TCP:是一种面向连接的保证可靠传输的协议,通过TCP协议传输,得到一个顺序无差错的数据流,发送方和接收方成对的两个socket之间必须连接连接,当一个socket 等待连接时,另一个 socket可以要求进行连接,一旦两个socket连接起来,它们就可以进行双向的数据传输,双方都可以进行发送和接收。

(2)TCP的三次握手

? ? ? ?第一次:客户端发送SYN包到 服务器,并进入SYN_SEND状态,等待服务器确认。
? ? ???第二次:服务器接收到SYN包,必须确认客户端的SYN,同时自己也发送一个SYN包,此时服务器 进入SYN_RECV状态。
? ? ???第三次:客户端收到服务器的SYN包,向服务器发送确认,此包发送完毕,回应一个ACK报文,客户端和服务器端进入ESTABLISHED状态。

(3)特点

① TCP传输数据没有大小的限制,一旦连接建立起来,双方的Socket就可以按照统一的格式传输大的数据。
② TCP是可靠的协议它确保接收方完全正确的获取发送方所发送的全部数据。

③?TCP在网络通信上有极强的生命力的。如远程连接(TeLnet) 和 文件的传输(FTP) 都需要不定长度数据被可靠的传输,但是可靠的传输,需要付出代价,对数据的内容中正确性的检验必然需要占用计算的处理时间和网络宽带,所以TCP传输的效率不如UDP高。

2、UDP

(1)UDP (User Datagram Protocol) 是一种 无连接协议,每个数据报都是一个独立的信息,包括完整的源地址或目的地址,在网络以任何可能的路径传往目的地址,因此能否到达的地,到达目的地址的时间以及内容的正确性都是不能被保证。

(2)特点

① 由于使用UDP协议消耗资源小,通信效率高,所以通常都会用于音频、视频和普通数据的传输例如视频会议都使用UDP协议,因为这种情况即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。

② 在使用UDP协议传送数据时,由于UDP的面向无连接性,不能保证数据的完整性,因此在传输重要数据时,不建议使用UDP协议。

③ 特点:数据被限制在64kb以内,超出这个范围就不能发送了。

④?UDP 操作简单,而且仅需要少量的监护,所以通常用于局域网高可靠性的分散系统中,比如 视频会议。

三、TCP网络编程

1、概述
TCP通信能实现两台计算机之间的数据交互,通信的两端,要严格区分为客户端(Client)与服务端(Server)。

(1)两端通信时步骤:
① 服务端程序,需要事先启动,等待客户端的连接。

② 客户端主动连接服务器端,连接成功才能通信。服务端不可以主动连接客户端。

(2)在Java中,提供了两个类用于实现TCP通信程序:

① 客户端:java.net.Socket 类表示。创建Socket对象,向服务端发出连接请求,服务端响应请求,两者建立连接开始通信。

② 服务端:java.net.ServerSocket 类表示。创建ServerSocket对象,相当于开启一个服务,并等待客户端的连接。

2、Socket类

常用方法

(1)getInputStream():返回输入流

(2)getOutputStream():返回输出流

(3)close():关闭

(4)shutdownOutput():禁用输出流

3、ServerSocket类

等待通过网络的请求

常用方法

(1)accept():监听并接受连接,返回一个新的Socket对象,用于和客户端实现通信,该方法会一直阻塞直到建立连接。

4、接收数据

(1)建立ServerSocket连接,并指定端口号

(2)等待客户端通信

(3)打开输入流

(4)读取客户端发送信息

(5)关闭资源

5、发送数据

(1)建立Socket对象,指定地址和端口号

(2)打开输出流

(3)构建要写入的内容

(4)调用writer()方法写入

(5)关闭资源

四、UDP网络编程

1、DatagramSocket类

构造方法

DatagramSocket():无参构造方法

DatagramSocket(int port):指定端口号

DatagramSocket(int port,InetAddress ia):指定端口号和IP地址

2、DatagramPacket类

(1)构造方法

DatagramPacket(byte[] b, int length):数据包中的数据和长度

DatagramPacket(byte[] b, int length, InetAddress ad, int port):数据包中的数据、长度、IP地址和端口号

(2)常用方法

getData():返回数据包中的数据

getAddress():返回该数据包发送或接收数据包的IP地址

3、发送数据

(1)创建发送端socket对象——DatagramSocket,设置端口号

(2)创建数据并打包到DatagramPacket对象

(3)通过调用send()方法发送

(4)释放资源

4、接收数据

(1)创建接收端socket对象——DatagramSocket

(2)创建需要发送的数据包对象

(3)调用receive()方法接收数据

(4)构建一个字符串,解析数据包对象,获取信息

(5)释放资源

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-08-02 11:07:19  更:2021-08-02 11:10:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 17:31:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码