首页>>科技 >>内容

一文搞明白TCP协议与UDP协议 上

发布时间:2023-10-27 11:42:09编辑:温柔的背包来源:

很多朋友对一文搞明白TCP协议与UDP协议,上不是很了解,每日小编刚好整理了这方面的知识,今天就来带大家一探究竟。

一文搞明白TCP协议与UDP协议 上

网络编程有三要素,即IP地址、端口号和通信协议。本文主要讲TCP和UDP这两种通信协议,以及编程的实现。

首先我们需要了解IP地址、端口号、通信协议的相关知识。

一、IP地址网络中的计算机使用IP地址来唯一地标识它们。 IP 地址有两种类型:IPv4 和IPv6。 IPv4 使用十进制或二进制表示。十进制是更常用的表示形式,例如192.168.1.131。 IPv6使用十六进制表示,一般不常用。

如何查看IP地址相关信息:

Windows系统下,打开cmd,输入命令ipconfig,回车查看。在Linux或Mac系统下,打开终端,使用ifconfig命令,回车查看。

二、 端口号端口号是计算机中应用程序的一个整数标签,用于区分不同的应用程序。

0 ~ 1024 是系统未使用或保留的端口号。 0 ~ 65535 是有效的端口号。也就是说,当我们要为某些程序定义端口号时,必须选择1024~65535范围内的整数。

比如我之前学习的MySQL的端口号是3306,SQL Server的端口号是1433,我查过Oracle的端口号是1521。

请务必牢记这些数据库对应的端口号。以后连接数据库时将使用该端口号。

三、 通讯协议简单来说,通讯协议就是网络通讯中的规则,分为TCP协议和UDP协议两种。

第一种:TCP协议英文名称:Transmission Control Protocol 中文名称:传输控制协议协议描述:TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。

示例:打电话时,双方都需要连接才能进行通话。

特点:效率低,数据传输相对安全

第二种:UDP协议英文名称:User Datagram Protocol 中文名称:数据报协议协议描述:UDP是一种面向无连接的传输层通信协议。

示例:发送短信不需要双方建立连接。但是,数据报的大小应限制为64k。

特点:效率高,数据传输不安全,容易丢包

四、 三元关系图及网络模型图1、 网络编程三元关系图

注:图中的端口号和IP地址仅供演示,并非真实情况。

2、OSI参考模型和TCP/IP参考模型

五、TCP编程TCP是基于字节流的传输层通信协议,因此TCP编程是基于IO流编程的。

对于客户端,我们需要使用Socket类来创建对象。对于服务器端,我们需要使用ServerSocket创建一个对象,并通过该对象调用accept()方法来监听是否有客户端访问。

客户端和服务器端图:

客户端和服务器端实现步骤:

前提:创建一个项目,并在项目中创建两个模块(模型),一个模块用于存放客户端相关代码,一个模块用于存放服务器端相关代码。

目录结构如下图

客户:

1、 创建Socket对象并指定服务器端应用程序的端口号和服务器端主机的IP地址。

2、 使用Socket对象调用getOutputStream()方法获取字节输出流对象。

3、 调用字节输出流的write(byte[] buf)或write(int b)将指定数据发送到服务器。

4、记得关闭直播。

服务终端:

1、 创建ServerSocket对象并指定应用程序的端口号。端口号必须与客户端指定的端口号一致。

2、 使用ServerSocket对象的accept()方法监听客户端发送的请求,返回值是Socket对象。

3、 调用Socket对象的getInputStream()方法获取字节输入流对象

4、 调用字节输入流对象的read(byte[] buf)或read()方法获取数据。

5、记得关闭直播。

例子:

客户端向服务器发送信息并在服务器上显示。

客户端类(客户端)

package cn.tkrnet.client;import java.io.IOException;import java.io.OutputStream;import java.net.Socket;public class Client { public static void main(String[] args) throws IOException { //创建Socket 对象,指定要发送到服务器的IP地址,以及服务器端应用程序接收到的端口号//localhost代表本地IP地址Socket client=new Socket('localhost',9000); //获取发送到服务器的输出流客户端发送数据OutputStream os=client.getOutputStream(); os.write('Java 是我的朋友!'.getBytes()); System.out.println('信息已发送'); //关闭流os.close( );客户端.close(); }}s

以上知识分享希望能够帮助到大家!