Java基础知识章节梳理(二十三)

文字数:约2400字  阅读时间:60分钟

此文章为学习总结类型,文字很多且皆为基础知识

 

一、网络通信协议

1.介绍

1.1概述

1. 网络通信协议是一种网通通用语言,为连接不同操作系统和不同硬件体系结构的互联网络引提供通信支持

2. 网络通信协议是事先规定好的一种网络数据传输的协议,凡是参与网络数据传输的设备都应该遵循这个协议的规定

3. 类似于现实生活中的交通规则

1.2常见的网络通信协议

1. TCP/IP协议,分为四层次结构:

 链路层:链路层是用于定义物理传输通道,通常是对某些网络连接设备的驱动协议,例如针对光纤、网线提供的驱动。

网络层:网络层是整个TCP/IP协议的核心,它主要用于将传输的数据进行分组,将分组数据发送到目标计算机或者网络。

运输层:主要使网络程序进行通信,在进行网络通信时,可以采用TCP协议,也可以采用UDP协议。

应用层:主要负责应用程序的协议,例如HTTP协议、FTP协议等。

2. UDP协议等(不常用)

2. IP地址和端口号

2.1 IP地址

2.1.1 介绍

要想使网络中的计算机能够进行通信,必须为每台计算机指定一个标识号,通过这个标识号来指定接受数据的计算机或者发送数据的计算机。

在TCP/IP协议中,这个标识号就是IP地址

2.1.2 早期版本:IPv4

1. 由4个字节大小的二进制数来表示,如:00001010000000000000000000000001

2. 二进制不方便记忆通常会将IP地址写成(0.0.0.0到255.255.255.255)

2.1.3 升级版本IPv6

由6个字节大小的二进制数来表示

2.2 端口号

2.2.1 介绍

计算机中正在运行的程序的一个唯一标识(根据IP可以找到某个电脑,根据端口号可以找到该电脑上的某个进程)

2.2.2 格式

用两个字节表示,取值范围为0-65535,其中,0-1024之间已经被占用,建议程序员自定义端口号的时候,使用1025-65535之间的端口号

3. InetAddress类

3.1 介绍

1. 是java编写的一个类,用于表示互联网协议(IP)地址

2. 我们只要拥有了一个InetAddress对象,就意味着拥有了一个IP地址对象

3.2 方法

3.2.1 静态方法

getLocalHost() :返回本地主机(静态方法,可以直接通过类名调用,返回的是一个被封装的本地主机IP对象)

getByName(String host) :在给定主机名的情况下确定主机的 IP 地址。(静态方法,返回的是指定主机名的IP对象)

3.2.2 成员方法

getHostName() :获取此 IP 地址的主机名

getHostAddress() :返回 IP 地址字符串(以文本表现形式)

二、UDP与TCP协议

1. 套接字

(1)源IP地址和目的IP地址以及源端口号和目的端口号的组合称为套接字。

(2)可以简单理解为是一个电脑ip和端口号的组合

2. UDP协议

2.1 介绍

User Datagram Protocol的简称,称为用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议

2.2 特点

1.面向无连接:(发送端数据与接收端数据无需实现沟通)

2.数据不安全;(信息容易丢失)

3.效率高;(占用资源少)

2.3 UDP常用类

2.3.1 DatagramPacket

1. 介绍

用于封装UDP通信中发送或者接收的数据。

2. 构造方法

DatagramPacket(byte[] buf, int length) :(通常用于接收端)

构造 DatagramPacket,用来接收长度为 length 的数据包。

DatagramPacket(byte[] buf, int length, InetAddress address, int port) :(通常用于发送端)

构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。

3. 常用成员方法

getData() :返回数据缓冲区。

getLength() :返回将要发送或接收到的数据的长度

getPort() :返回某台远程主机的端口号,此数据报将要发往该主机或者是从该主机接收到的

(在接收端调用该方法的时候,获取的是发送端的端口号)

getAddress() :返回某台机器的 IP 地址,此数据报将要发往该机器或者是从该机器接收到的。

(在接收端调用该方法的时候,获取的是发送端的IP地址)

2.3.2 DatagramSocket

1. 介绍

使用这个类的实例对象就可以发送和接收DatagramPacket数据包,类似于现实生活中的快递营业厅;

2. 构造方法

DatagramSocket() :(该构造方法用于创建发送端的DatagramSocket对象)创建一个用于发送数据报包对象的对象

DatagramSocket(int port) (该构造方法既可用于创建接收端的对象,又可以创建发送端的对象)

创建一个在指定端口号位置上进行接收数据报包对象的对象

3. 常用成员方法

receive(DatagramPacket p) :从此套接字接收数据报包。

send(DatagramPacket p) : 从此套接字发送数据报包。

3. TCP协议

3.1 介绍

1. Transmission Control Protocol的简称,称为传输控制协议。

2. 是一种面向连接的、可靠的、基于字节流的传输层通信协议;

3.2 特点

1.面向连接(发送数据端与接收数据端需事先沟通,只有沟通成功的时候,才可以发送数据)

2.信息安全(信息不容易丢失)

3.效率低(占用资源多)

3.3 TCP常用类

3.3.1 ServerSocket

1. 介绍

ServerSocket是java编写的用于表示TCP协议中服务器端对象的类;

2. 构造方法

ServerSocket(int port) :创建绑定到特定端口的服务器套接字

3. 常用成员方法

(1) accept() 侦听并接受到此客户端的连接,返回的是客户端对象

有线程阻塞的效果,(如果没有客户端来访问,服务器将一直处于阻塞状态)

(2) 服务器上使用的IO流需要从客户端对象获取

3.3.2 Socket

1. 介绍

Socket是java编写的用于表示TCP协议中客户端对象的类;

2. 构造方法

Socket(String host, int port) :创建一个流套接字并将其连接到指定主机上的指定端口号

Socket(InetAddress address, int port) :创建一个流套接字并将其连接到指定 IP 地址的指定端口号

3. 常用成员方法

getInputStream():返回此套接字的输入流。

getOutputStream():返回此套接字的输出流。

getPort() :返回此套接字连接到的远程端口。(获取对方的端口号)

getInetAddress() :返回套接字连接的地址。(获取对方的IP地址)

3.4 TCP协议中严格区分客户端与服务器

客户端与服务器连接的时候,需要有3次握手的动作,具体代码就是Socket的构造方法,只要构造方法创建对象成功,就是三次握手成功

1.客户端向服务器发出连接的请求

2.服务器接收客户端的请求

3.客户端告知服务器连接成功!!

4. TCP与UDP的选用

1.如果对数据的安全性和完整性要求比较高的时候,需要使用TCP:比如文件下载

2.流量大,对安全性要求不高的时候,可以使用UDP 例如广播,视频会议

三、总结

1. IP地址

用来唯一表示我们自己的电脑的,是一个网络标示

2. 端口号

用来区别当前电脑中的应用程序的

3. UDP

传送速度快,但是容易丢数据,如视频聊天,语音聊天

4. TCP

传送稳定,不会丢失数据,如文件的上传、下载

5. UDP程序交互的流程

5.1 发送端

1,创建DatagramSocket对象

2,创建DatagramPacket对象,并封装数据

3,发送数据

4,释放流资源

5.2 接收端

1,创建DatagramSocket对象

2,创建DatagramPacket对象

3,接收数据存储到DatagramPacket对象中

4,获取DatagramPacket对象的内容

5,释放流资源

6. TCP程序交互的流程

6.1 客户端

1,创建客户端的Socket对象

2,获取Socket的输出流对象

3,写数据给服务器

4,获取Socket的输入流对象

5,使用输入流,读反馈信息

6,关闭流资源

6.2 服务器端

1,创建服务器端ServerSocket对象,指定服务器端端口号

2,开启服务器,等待着客户端Socket对象的连接,如有客户端连接,返回客户端的Socket对象

3,通过客户端的Socket对象,获取客户端的输入流,为了实现获取客户端发来的数据

4,通过客户端的输入流,获取流中的数据

5,通过客户端的Socket对象,获取客户端的输出流,为了实现给客户端反馈信息

6,通过客户端的输出流,写数据到流中

7,关闭流资源

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值