网络编程 01:计算机网络概述,网络的作用,网络通信的要素,以及网络通信协议与分层模型

一、概述

记录时间 [2024-12-13]

本文讲述网络编程相关知识,例如,什么是计算机网络,网络有什么作用,网络通信的要素是什么,以及网络通信协议与分层模型。

网页编程 / 网络编程区别:

  • 网页编程:Javaweb,B/S

  • 网络编程:TCP/IP,C/S

关于创作纪念日

表面风平浪静,内里波涛汹涌。这便是目前的状态吧。

宁可一思进,不可一思停。256 纪念日快乐。

里程碑专区

二、计算机网络

1. 什么是计算机网络

计算机网络是指,将地理位置不同的、具有独立功能的多台计算机及其外部设备,通过通信线路和通信设备连接起来,在网络操作系统、网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。

  • 连接:地理位置不同的、具有独立功能的多台计算机及其外部设备;
  • 管理和协调 :网络操作系统、网络管理软件及网络通信协议
  • 目的:实现资源共享和信息传递。

于是乎,网络的诞生,加上现代科技的迅速发展,缩小了地球上的时空距离,国际交往日益频繁便利,因而整个地球就如同是茫茫宇宙中的一个小村落。我们亲切地称之为------地球村

2. 网络的目的

在网络没有出现之前,我们会使用无线电台、收音机这些工具来获取信息。

而网络的目的(或者说作用),在于更便捷地传播交流信息,如数据交换,通信等。

3. 先决条件

那么,想要达到这个效果,需要具备什么条件呢?

定位

  • 如何准确定位网络上的一台主机或多台主机?
  • IP:Port,定位到这个计算机上的某个资源。

信息传递

  • 找到了这个主机,如何传输数据呢?
  • 如何接收其他主机发来的消息呢?

三、网络通信的要素

1. 网络中的包

网络中的包 package,可以类比现实中的包、包裹、以及信件等。

在契诃夫的《凡卡》中,凡卡给爷爷写了一封信。然而,由于没有正确填写收件地址,他所有的诉说和期待都石沉大海。

所以,我们想要寄出一封信,且这封信会被收件人收到,需要同时具备收件人的信息和地址,必要时还要提供自己的地址。

同样地,在网络中发包(发消息),也需要提供这些信息。

2. 如何实现网络通信

如何实现网络通信?首先得知道通信双方的地址,还要基于特定的规则。

通信双方的地址

  • IP + 端口号
  • 例如,192.168.16.124:5900
  • 通过 IP 和端口,可以定位到某台计算机上的某个具体的应用。

基于特定的规则

  • 网络通信的协议
  • 例如,TCPUDP,HTTP,FTP,SMTP 等。

在 Java 网络编程中,万物皆对象,在 Java 中有网络相关的包,如 java.net。通过这些包,可以实现网络通信。

四、网络通信协议

通信协议是为进行数字通信的电子设备之间设立的一组规则,这些规则定义了如何传输信息。

通信协议确保所有连接到网络上的设备能够互相理解并正确地交换数据。它们规定了数据格式、编码、信号电平、传输速度、同步方式、错误检测与纠正、流量控制等。

网络通信协议是用于在网络中不同节点之间传输数据的一套规则和标准。网络通信协议通常按照分层模型 来组织,每一层负责特定的功能。最常用的分层模型是 OSI 七层模型TCP/IP 四层模型。(OSI,Open Systems Interconnection,开放系统互连)

1. 分层模型

最常用的分层模型是 OSI 七层模型和 TCP/IP 四层模型。

以下是二者的对比,以及每层对应的网络协议。

2. 常见的协议

常见的网络通信协议中,TCP 和 UDP 是传输层 的协议,IP 是网络层的协议。

  • TCP:传输控制协议
  • UDP:用户数据报协议
  • IP:互联网协议

TCP/IP 协议簇是一组协议。

TCP 和 UDP 对比

TCP:就像打电话,需要两者建立连接后,才能进行通话。

  • 是一种稳定可靠的连接;
  • 遵循 三次握手,四次挥手
  • 有明确的客户端和服务端;
  • 要先建立连接,然后传输信息;信息传输完成后,才能释放连接,效率较低。

UDP:就像发短信,只要给对方发送短信即可,不需要管对方有没有收到。

  • 不需要建立连接,同时不稳定;
  • 客户端和服务端没有明确的界限,谁都可以是客户端或服务端;
  • 不管对方有没有准备好,都可以给它发信息;
  • 例子:DDoS 攻击。

DDoS 攻击是一种网络攻击形式,攻击者可能会控制一个由多台计算机组成的网络(僵尸网络,botnet)。这些计算机可能位于全球各地,并且通常是在用户不知情的情况下被恶意软件感染。

攻击者可以通过远程控制这些机器,同时向目标服务器发送请求,导致服务器过载,进而使其离线或严重减慢响应速度。

参考资料

狂神说 - 网络编程:https://www.bilibili.com/video/BV1LJ411z7vY

Java 8 帮助文档:https://docs.oracle.com/javase/8/docs/api/

相关推荐
Saltwater_leo18 分钟前
【无标题】
java·服务器·前端
爱吃喵的鲤鱼31 分钟前
Linux——线程条件变量(同步)
java·开发语言
东小黑35 分钟前
java方法以及与C语言对比学习
java·c语言·学习
黄雪超35 分钟前
Java面试专题——面向对象
java·面试·面向对象
007php0071 小时前
go语言zero框架通过chromedp实现网页在线截图的设计与功能实现
java·开发语言·后端·python·docker·云原生·golang
寒山李白1 小时前
MySQL入门(数据库、数据表、数据、字段的操作以及查询相关sql语法)
java·数据库·sql·mysql
蚂蚁质量1 小时前
什么是 Java 虚拟机(JVM)?
java·开发语言·jvm
日拱一卒无有尽, 功不唐捐终入海2 小时前
Mybatis乐观锁使用
java·开发语言·jvm·mybatis
青柚~2 小时前
【Idea启动项目报错NegativeArraySizeException】
java·ide·intellij-idea
浅念同学2 小时前
网络编程-网络原理HTTP初识
java·网络·网络协议·http