如何在 Ubuntu 14.04 上使用 Rsyslog、Logstash 和 Elasticsearch 实现日志集中管理

Elastic 的一篇文章

介绍

理解组织生成的数百万条日志行可能是一个艰巨的挑战。一方面,这些日志行提供了对应用程序性能、服务器性能指标和安全性的视图。另一方面,日志管理和分析可能非常耗时,这可能会阻碍对这些日益必要的服务的采用。

开源软件,如 rsyslog、Elasticsearch 和 Logstash 提供了传输、转换和存储日志数据的工具。

在本教程中,您将学习如何创建一个集中的 rsyslog 服务器,以存储来自多个系统的日志文件,然后使用 Logstash 将它们发送到 Elasticsearch 服务器。然后,您可以决定如何最好地分析数据。

目标

本教程教会您如何集中存储由 syslog 生成或接收的日志,特别是被称为 rsyslog 的变体。Syslog 和基于 syslog 的工具如 rsyslog 从内核和许多运行以保持类 UNIX 服务器运行的程序中收集重要信息。由于 syslog 是一个标准,而不仅仅是一个程序,许多软件项目都支持向 syslog 发送数据。通过集中存储这些数据,您可以更轻松地审计安全性,监视应用程序行为,并跟踪其他重要的服务器信息。

从一个集中或聚合的 rsyslog 服务器,您可以将数据转发到 Logstash,它可以在将数据发送到 Elasticsearch 之前进一步解析和丰富您的日志数据。

本教程的最终目标是:

  1. 设置一个单一的客户端(或转发)rsyslog 服务器
  2. 设置一个单一的服务器(或收集)rsyslog 服务器,以接收来自 rsyslog 客户端的日志
  3. 设置一个 Logstash 实例,以接收来自 rsyslog 收集服务器的消息
  4. 设置一个 Elasticsearch 服务器,以接收来自 Logstash 的数据

先决条件

相同的 DigitalOcean 数据中心中,创建以下启用了私有网络的 Droplets:

  • 名为 rsyslog-client 的 Ubuntu 14.04 Droplet
  • 名为 rsyslog-server 的 Ubuntu 14.04 Droplet(1 GB 或更大),用于存储集中日志和安装 Logstash
  • 安装了 Elasticsearch 的 Ubuntu 14.04 Droplet,安装方法请参考《在 Ubuntu 14.04 上安装和配置 Elasticsearch》

您还需要为每个服务器创建一个具有 sudo 权限的非 root 用户。《使用 Ubuntu 14.04 进行初始服务器设置》解释了如何设置这一点。

参考《如何设置和使用 DigitalOcean 私有网络》以获取有关在创建 Droplets 时启用私有网络的帮助。

如果您在没有启用私有网络的情况下创建了 Droplets,请参考《如何在现有 Droplets 上启用 DigitalOcean 私有网络》。

步骤 1 —— 确定私有 IP 地址

在本节中,您将确定每个 Droplet 分配了哪些私有 IP 地址。这些信息将在整个教程中需要。

在每个 Droplet 上,使用 ifconfig 命令找到其 IP 地址:

sudo ifconfig -a

使用 -a 选项显示所有接口。主要以太网接口通常称为 eth0。但在这种情况下,我们需要来自 eth1 的 IP,即 私有 IP 地址。这些私有 IP 地址在互联网上不可路由,并且用于在私有 LAN 中进行通信 — 在这种情况下,是在同一数据中心中启用了次要接口的服务器之间。

输出将类似于:


eth0      Link encap:Ethernet  HWaddr 04:01:06:a7:6f:01  inet addr:123.456.78.90  Bcast:123.456.78.255  Mask:255.255.255.0inet6 addr: fe80::601:6ff:fea7:6f01/64 Scope:LinkUP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1RX packets:168 errors:0 dropped:0 overruns:0 frame:0TX packets:137 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000 RX bytes:18903 (18.9 KB)  TX bytes:15024 (15.0 KB)eth1      Link encap:Ethernet  HWaddr 04:01:06:a7:6f:02  inet addr:10.128.2.25  Bcast:10.128.255.255  Mask:255.255.0.0inet6 addr: fe80::601:6ff:fea7:6f02/64 Scope:LinkUP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1RX packets:6 errors:0 dropped:0 overruns:0 frame:0TX packets:5 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000 RX bytes:468 (468.0 B)  TX bytes:398 (398.0 B)lo        Link encap:Local Loopback  inet addr:127.0.0.1  Mask:255.0.0.0inet6 addr: ::1/128 Scope:HostUP LOOPBACK RUNNING  MTU:16436  Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0 RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

这里需要注意的部分是 eth1 和其中的 inet addr。在这种情况下,私有网络地址是 10.128.2.25。这个地址只能从启用了私有网络的同一区域内的其他服务器访问。

请确保对所有 3 个 Droplets 都重复此步骤。将这些私有 IP 地址保存在安全的地方。它们将在整个教程中使用。

步骤 2 —— 设置 Elasticsearch 的绑定地址

作为先决条件,您在单独的 Droplet 上设置了 Elasticsearch。《在 Ubuntu 14.04 上安装和配置 Elasticsearch》教程向您展示了如何将绑定地址设置为 localhost,以便其他服务器无法访问该服务。然而,我们需要更改这一设置,以便 Logstash 可以通过其专用网络地址向其发送数据。

我们将 Elasticsearch 绑定到其专用 IP 地址。Elasticsearch 只会监听对该 IP 地址的请求。

在 Elasticsearch 服务器上,编辑配置文件:

sudo nano /etc/elasticsearch/elasticsearch.yml

找到包含 network.bind_host 的行。如果它被注释掉了,通过删除行首的 # 字符来取消注释。将值更改为 Elasticsearch 服务器的专用 IP 地址,使其看起来像这样:


network.bind_host: private_ip_address

最后,重新启动 Elasticsearch 以启用更改。

sudo service elasticsearch restart

步骤 3 —— 配置中心服务器以接收数据

在本节中,我们将配置 rsyslog-server Droplet 为能够从其他 syslog 服务器在 514 端口接收数据的 中心 服务器。

要配置 rsyslog-server 以从其他 syslog 服务器接收数据,请编辑 rsyslog-server Droplet 上的 /etc/rsyslog.conf

sudo nano /etc/rsyslog.conf

找到您的 rsyslog.conf 中已经注释掉的这些行:


# provides UDP syslog reception
#$ModLoad imudp
#$UDPServerRun 514# provides TCP syslog reception
#$ModLoad imtcp
#$InputTCPServerRun 514

每个部分的第一行($ModLoad imudp$ModLoad imtcp)分别加载 imudpimtcp 模块。imudp 代表 input module udpimtcp 代表 input module tcp。这些模块监听来自其他 syslog 服务器的传入数据。

每个部分的第二行($UDPSerververRun 514$TCPServerRun 514)指示 rsyslog 应启动分别监听端口 514(这是 syslog 的默认端口)的 UDP 和 TCP 服务器。

要启用这些模块和服务器,请取消注释这些行,使文件现在包含:


# provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514# provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514

保存并关闭 rsyslog 配置文件。

通过运行以下命令重新启动 rsyslog:

sudo service rsyslog restart

您的中心 rsyslog 服务器现在已配置为监听来自远程 syslog(包括 rsyslog)实例的消息。

步骤 4 —— 配置 rsyslog 以远程发送数据

在本节中,我们将配置 rsyslog-client 以将日志数据发送到我们在上一步中配置的 ryslog-server Droplet。

在 Ubuntu 上的默认 rsyslog 设置中,您会在 /etc/rsyslog.d 中找到两个文件:

  • 20-ufw.conf
  • 50-default.conf

rsyslog-client 上,编辑默认配置文件:

sudo nano /etc/rsyslog.d/50-default.conf

log by facility 部分之前的文件顶部添加以下行,将 private_ip_of_ryslog_server 替换为您 中心 服务器的私有 IP:


*.*							@private_ip_of_ryslog_server:514

保存并退出文件。

行的第一部分(.)表示我们要发送所有消息。虽然这超出了本教程的范围,但您可以配置 rsyslog 仅发送某些消息。行的其余部分解释了如何发送数据以及发送数据的位置。在我们的情况下,@ 符号表示 rsyslog 使用 UDP 发送消息。将其更改为 @@ 以使用 TCP。然后是安装有 rsyslog 和 Logstash 的 rsyslog-server 的私有 IP 地址。冒号后面的数字是要使用的端口号。

重新启动 rsyslog 以启用更改:

sudo service rsyslog restart

恭喜!您现在正在将您的 syslog 消息发送到一个中心服务器!

步骤 5 —— 将日志数据格式化为 JSON

Elasticsearch 要求其接收的所有文档都以 JSON 格式提供,而 rsyslog 提供了一种通过模板实现这一点的方法。

在本步骤中,我们将配置我们的中心 rsyslog 服务器以使用 JSON 模板在将数据发送到 Logstash 之前格式化日志数据,然后由 Logstash 将其发送到另一台服务器上的 Elasticsearch。

回到 rsyslog-server 服务器,在发送到 Logstash 之前创建一个新的配置文件以将消息格式化为 JSON 格式:

sudo nano /etc/rsyslog.d/01-json-template.conf

将以下内容精确复制到文件中:


template(name="json-template"type="list") {constant(value="{")constant(value="\"@timestamp\":\"")     property(name="timereported" dateFormat="rfc3339")constant(value="\",\"@version\":\"1")constant(value="\",\"message\":\"")     property(name="msg" format="json")constant(value="\",\"sysloghost\":\"")  property(name="hostname")constant(value="\",\"severity\":\"")    property(name="syslogseverity-text")constant(value="\",\"facility\":\"")    property(name="syslogfacility-text")constant(value="\",\"programname\":\"") property(name="programname")constant(value="\",\"procid\":\"")      property(name="procid")constant(value="\"}\n")
}

除了第一行和最后一行外,注意到此模板生成的行在开头有一个逗号。这是为了保持 JSON 结构 帮助保持文件的可读性。此模板将按照 Elasticsearch 和 Logstash 期望接收的方式格式化您的消息。它们将如下所示:


{"@timestamp" : "2015-11-18T18:45:00Z","@version" : "1","message" : "Your syslog message here","sysloghost" : "hostname.example.com","severity" : "info","facility" : "daemon","programname" : "my_program","procid" : "1234"
}

发送的数据尚未使用此格式。下一步显示了如何配置服务器以使用此模板文件。

第六步 —— 配置集中式服务器发送到 Logstash

现在我们已经有了定义正确 JSON 格式的模板文件,让我们配置集中式 rsyslog 服务器将数据发送到 Logstash,在本教程中 Logstash 与其在同一台 Droplet 上。

在启动时,rsyslog 将查看 /etc/rsyslog.d 中的文件并从中创建其配置。让我们添加自己的配置文件来扩展配置。

rsyslog-server 上,创建 /etc/rsyslog.d/60-output.conf

sudo nano /etc/rsyslog.d/60-output.conf

将以下行复制到此文件中:


# 此行将所有行发送到指定 IP 地址的 10514 端口,
# 使用 "json-template" 格式模板*.*							@private_ip_logstash:10514;json-template

开头的 *.* 表示处理所有日志消息的其余部分。@ 符号表示使用 UDP(使用 @@ 来使用 TCP)。@ 后面的 IP 地址或主机名是要转发消息的地方。在我们的情况下,由于 rsyslog 集中式服务器和 Logstash 服务器都安装在同一台 Droplet 上,我们使用 rsyslog-server 的私有 IP 地址。这必须与您在下一步中配置 Logstash 监听的私有 IP 地址相匹配。

接下来是端口号。本教程使用端口 10514。请注意,Logstash 服务器必须使用相同的协议在相同的端口上监听。最后一部分是我们的模板文件,显示了如何在传递数据之前格式化数据。

不要立即重新启动 rsyslog。首先,我们必须配置 Logstash 来接收消息。

第七步 —— 配置 Logstash 接收 JSON 消息

在此步骤中,您将安装 Logstash,配置它以从 rsyslog 接收 JSON 消息,并配置它将 JSON 消息发送到 Elasticsearch。

Logstash 需要 Java 7 或更高版本。使用 Elasticsearch 教程的 第一步 中的说明在 rsyslog-server Droplet 上安装 Java 7 或 8。

接下来,安装 Logstash 存储库的安全密钥:

wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

将存储库定义添加到您的 /etc/apt/sources.list 文件中:

echo "deb http://packages.elastic.co/logstash/2.3/debian stable main" | sudo tee -a /etc/apt/sources.list

更新软件包列表以包括 Logstash 存储库:

sudo apt-get update

最后,安装 Logstash:

sudo apt-get install logstash

现在 Logstash 已安装,让我们配置它以监听来自 rsyslog 的消息。

Logstash 的默认安装在 /etc/logstash/conf.d 中查找配置文件。编辑主配置文件:

sudo nano /etc/logstash/conf.d/logstash.conf

然后,在 /etc/logstash/conf.d/logstash.conf 中添加以下行:


# 此输入块将在端口 10514 上监听日志。
# 主机应该是 Logstash 服务器上的一个 IP。
# codec => "json" 表示我们期望接收的行是 JSON 格式的
# type => "rsyslog" 是一个可选标识符,用于帮助识别管道中的消息流。input {udp {host => "logstash_private_ip"port => 10514codec => "json"type => "rsyslog"}
}# 这是一个空的过滤器块。您可以稍后在这里添加其他过滤器以进一步处理
# 您的日志行filter { }# 此输出块将发送所有类型为 "rsyslog" 的事件到配置的 Elasticsearch
# 主机和端口,进入每日索引的模式,"rsyslog-YYYY.MM.DD"output {if [type] == "rsyslog" {elasticsearch {hosts => [ "elasticsearch_private_ip:9200" ]}}
}

syslog 协议从定义上是 UDP,因此此配置反映了该标准。

在输入块中,通过将 logstash_private_ip 替换为 rsyslog-server 的私有 IP 地址来设置 Logstash 主机地址,该服务器也安装有 Logstash。

输入块配置 Logstash 监听端口 10514,因此它不会与同一台机器上的 syslog 实例竞争。小于 1024 的端口需要以 root 用户身份运行 Logstash,这不是一个良好的安全实践。

确保将 elasticsearch_private_ip 替换为您的 Elasticsearch Droplet 的私有 IP 地址。输出块显示了一个简单的条件配置。它的目的是只允许匹配的事件通过。在这种情况下,只有具有 “type” 为 “rsyslog” 的事件。

测试您的 Logstash 配置更改:

sudo service logstash configtest

如果没有语法错误,它应该显示 Configuration OK。否则,请尝试阅读错误输出,查看您的 Logstash 配置有什么问题。

完成所有这些步骤后,您可以通过运行以下命令启动 Logstash 实例:

sudo service logstash start

还要重新启动同一台服务器上的 rsyslog,因为它现在有一个要转发的 Logstash 实例:

sudo service rsyslog restart

要验证 Logstash 是否在端口 10514 上监听:

netstat -na | grep 10514

您应该会看到类似以下内容:


udp6       0      0 10.128.33.68:10514     :::*  

您将看到 rsyslog-server 的私有 IP 地址和我们用于监听 rsyslog 数据的 10514 端口号。

第八步 — 验证 Elasticsearch 输入

在之前的步骤中,我们配置了 Elasticsearch 监听其私有 IP 地址。现在它应该正在接收来自 Logstash 的消息。在这一步中,我们将验证 Elasticsearch 是否正在接收日志数据。

rsyslog-clientrsyslog-server Droplets 应该将它们所有的日志数据发送到 Logstash,然后传递到 Elasticsearch。让我们生成一个安全消息来验证 Elasticsearch 是否确实收到了这些消息。

rsyslog-client 上,执行以下命令:

sudo tail /var/log/auth.log

您将在输出的末尾看到本地系统上的安全日志。它看起来类似于:


May  2 16:43:15 rsyslog-client sudo:    sammy : TTY=pts/0 ; PWD=/etc/rsyslog.d ; USER=root ; COMMAND=/usr/bin/tail /var/log/auth.log
May  2 16:43:15 rsyslog-client sudo: pam_unix(sudo:session): session opened for user root by sammy(uid=0)

通过简单的查询,您可以检查 Elasticsearch:

在 Elasticsearch 服务器上或任何被允许访问它的系统上运行以下命令。将 elasticsearch_ip 替换为 Elasticsearch 服务器的私有 IP 地址。这个 IP 地址也必须是您在本教程中早些时候配置 Elasticsearch 监听的 IP 地址。

curl -XGET 'http://elasticsearch_ip:9200/_all/_search?q=*&pretty'

在输出中,您将看到类似以下内容:


{"_index" : "logstash-2016.05.04","_type" : "rsyslog","_id" : "AVR8fpR-e6FP4Elp89Ww","_score" : 1.0,"_source":{"@timestamp":"2016-05-04T15:59:10.000Z","@version":"1","message":"    sammy : TTY=pts/0 ; PWD=/home/sammy ; USER=root ; COMMAND=/usr/bin/tail /var/log/auth.log","sysloghost":"rsyslog-client","severity":"notice","facility":"authpriv","programname":"sudo","procid":"-","type":"rsyslog","host":"10.128.33.68"}},

请注意,生成 rsyslog 消息的 Droplet 的名称在日志中(rsyslog-client)。

通过这个简单的验证步骤,您的集中式 rsyslog 设置已经完成并且完全可操作!

结论

您的日志现在存储在 Elasticsearch 中。接下来呢?考虑阅读一下 Kibana 能做什么,以可视化您在 Elasticsearch 中的数据,包括线条图、柱状图、饼图、地图等。《如何在 Ubuntu 14.04 上使用 Logstash 和 Kibana 实现日志集中化》解释了如何使用 Kibana web 界面来搜索和可视化日志。

也许您的数据通过进一步解析和标记化会更有价值。如果是这样,那么学习更多关于 Logstash 的知识将有助于您实现这一结果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/804298.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【软考】哈希表

目录 一、概念1.1 定义 二、哈希函数的构造方法2.1 说明2.2 特性 三、处理冲突的方法3.1 说明3.2 开放定址法3.2.1 说明3.2.2 线性探测 3.3 链地址法3.4 再哈希法3.5 建立公共溢出区 四、哈希表的查找4.1 查找过程4.2 查找特点4.3 装填因子 一、概念 1.1 定义 1.一般存储结构由…

Es中bool 查询中的四个(must must_not should filter)

1.must :相当于and 2.must_not :相当于not 3.should:相当于or 4. filter:过滤 gte 大于 gt大于 lte小于等于 lt小于 使用示例: {“bool”:{“must”:{“match”:{“title”:”how to make millons “}},“must_not”:{“match”:{“tag”:”spam“}},“should”:[{…

C++11 用户自定义字面量

在 C 中,operator"" 是用户定义字面量(User-Defined Literals)的一部分,它允许程序员扩展现有的字面量类型或者创建新的字面量类型。用户定义字面量是在 C11 标准中引入的特性,主要用于提供更易读、更具表达…

S7-1500F和S7-1200F安全PLC实现安全相关控制器与智能设备PN通信的程序示例

S7-1500F和S7-1200F安全PLC实现安全相关控制器与智能设备PN通信的程序示例 在TIA 安全系统中具有PROFINET接口的S7-1500F和S7-1200F CPU 之间可以进行安全相关的控制器与智能设备通信。 通信通过两个安全应用程序指令进行,即SENDDP指令用于发送数据,而RCVDP指令用于接收数据…

Redis+lua脚本限制ip多次输入错误密码

Redislua脚本限制ip多次输入错误密码 不能锁username,因为如果有人恶意保留破解密码的话。会导致用户本人无法登录。 这里我采用 以ip的方式进行锁定。利用redis 设置key:ip。value:当前ip尝试登录的次数 实现逻辑 逻辑简单,假设…

30个商业赚钱的思考(上)

从一名一线技术从业者,到如今技术创业者,不同角色,有了对技术更加深刻的认识和理解。所谓创业、所谓商业,本质就是打通产品、流量和变现的过程。​ 本小节精选30篇商业赚钱思考内容,覆盖商业、认知、营销、管理、创业…

centos7部署zabbix6.4.9

文章目录 [toc]一、环境准备1)部署lnmp2)修改配置文件3)安装数据库 二、部署zabbix1)下载zabbix2)安装zabbix服务端3)修改配置4)开机启动5)安装客户端 三、登录配置1)访问…

在Windows电脑上上传iOS应用至App Store

引言 📱 使用UniApp开发iOS应用十分便捷,一套代码即可兼容多个平台。然而,UniApp开发iOS应用需要进行证书打包和将IPA文件上传至App Store,这两个步骤通常需要在Mac电脑上完成。那么,如果我们使用的是Windows开发环境…

three.js跟着教程实现VR效果(四)

参照教程:https://juejin.cn/post/6973865268426571784(作者:大帅老猿) 1.WebGD3D引擎 用three.js (1)使用立方体6面图 camera放到 立方体的中间 like “回” 让贴图向内翻转 (2)使…

机器学习 —— 使用机器学习进行情感分析 详细介绍版

机器学习 —— 使用机器学习进行情感分析 详细介绍版 机器学习 —— 使用机器学习进行情感分析 演示版 目录 一、 绪论二、 数据处理1. 构建CSV文档2. 构建模型前的思考2.1. 问题2.2. 解决方法 3. 读取数据4. 用正则表达式来进行对特定符号的剔除5. 使用口袋模型进行文本处理和…

大厂面试:找出数组中第k大的数的最佳算法

一.前置条件 假如数组为a,大小为n,要找到数组a中第k大的数。 二.解决方案 1.使用任意一种排序算法(例如快速排序)将数组a进行从大到小的排序,则第n-k个数即为答案。 2.构造一个长度为k的数组,将前k个数复制过来并降序…

vscode 配置文件settings.json和c_cpp_properties.json的作用

前言 在 Visual Studio Code (VSCode) 中,settings.json 和 c_cpp_properties.json 都是配置文件,它们分别用于不同的目的。 settings.json settings.json 文件是 VSCode 的用户或工作区设置文件。它允许你自定义 VSCode 的各种行为和外观。 用户设置…

HarmonyOS开发实例:【状态管理】

状态管理 ArkUI开发框架提供了多维度的状态管理机制,和UI相关联的数据,不仅可以在组件内使用,还可以在不同组件层级间传递,比如父子组件之间,爷孙组件之间等,也可以是全局范围内的传递,还可以是…

限流的实现方式

1、tomcat 设置最大链接数 2、Nginx 漏桶算法 3、网关,令牌桶算法

【HTML】简单制作一个3D动态粒子效果的时空隧道

目录 前言 开始 HTML部分 CSS部分 效果图 总结 前言 无需多言,本文将详细介绍一段HTML,具体内容如下: 开始 首先新建文件夹,创建两个文本文档,其中HTML的文件名改为[index.html],CSS的文件名改为[Bab…

单例模式(饿汉模型,懒汉模型)

在着里我们先了解什么是单例模式。 就是某个类在进程中只能有单个实例,这里的单例模式需要一定的编程技巧,做出限制,一旦程序写的有问题,创建了多个实例,编程就会报错。 如果我们学会了单例模式,这种模式…

ubuntu下miniconda安装方式

conda官网: https://docs.anaconda.com/free/miniconda/ 安装方式: 全部执行完毕后,重新登录终端,就可以进入默认的 base 环境。 接下来可以继续使用命令创建和切换所需要的python环境 # 创建python 3.8的环境 mytest conda c…

mineadmin 设置时区

由于不同环境下,会造成时区不一致问题 在/bin/hyperf.php 文件里,设置 date_default_timezone_set(Asia/Shanghai);

qiankun 主子应用使用同一地址同一端口配置

参考官网配置链接:https://qiankun.umijs.org/zh/cookbook#%E5%9C%BA%E6%99%AF-1%E4%B8%BB%E5%BA%94%E7%94%A8%E5%92%8C%E5%BE%AE%E5%BA%94%E7%94%A8%E9%83%A8%E7%BD%B2%E5%88%B0%E5%90%8C%E4%B8%80%E4%B8%AA%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%90%8C%E4%B8%80%E4%B8%A…

【Java网络编程】IP网络协议与TCP、UDP网络传输层协议

1.1、IP协议 当应用层的数据被封装后,想要将数据在网络上传输,数据究竟要被发往何处,又该如何精准的在网络上定位目标机器,此时起到关键作用的就是“IP协议”。IP协议的作用在于把各种数据包准确无误的传递给目标方,其…