Java网络编程(一)网络基础

news2024/9/25 21:30:25

概述

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

网络分类

  • 局域网(LAN)
    • 局域网是一种在小区域内使用的,由多台计算机组成的网络,覆盖范围通常局限在10千米范围之内,属于一个公司或部门组建的小范围区域
  • 城域网(MAN)
    • 城域网是作用范围在广域网与局域网之间的网络,其网络覆盖范围通常可以延伸到整个城市,借助通信光纤将多个局域网联通公用城市网络形成大型网络,使得不仅局域网内的资源可以共享,局域网之间的资源也可以共享
  • 广域网(WAN)
    • 广城网是一种远程网,涉及长距离的通信,覆盖范围可以是多个国家甚至整个世界。由于广域网地理上的距离过于长,所以信息衰减非常严重,这种网络一般要租用专线,通过接口信息处理协议和线路连接起来,构成网状结构,解决寻径问题

网络通信协议

计算机网络中实现通信必须有一些约定,即通信协议。包括对速率、传输代码、代码结构、传输控制步骤、出错控制等制定的标准。常见的网络通信协议有:TCP/IP协议、IPX/SPX协议等。为了使两个节点之间能进行对话,必须在他们之间建立通信工具(即端口port),使彼此之间能进行信息交换。

TCP/IP协议:传输控制协议/因特网互联协议(Transmission Control Protocol/Internet Protocol),是Internet最基本、最广泛的协议。它定义了计算机如何连入因特网,以及数据如何在它们之间传输的标准。它的内部包含一系列的用于处理数据通信的协议,并采用了4层的分层模型,每一层都呼叫它的下一层所提供的协议来完成自己的需求。

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

TCP

传输控制协议(Transmission Control Protocol),TCP协议是面向连接的通信协议,即在传输数据之前发送端和接收端建立逻辑连接,然后进行传输数据,它提供了两台计算机之间可靠无差错的数据传输;在TCP连接中必须要明确客户端与服务器端,由客户端向服务端发出连接请求,每次连接的创建都需要经过“三次握手”,TCP的客户端和服务端断开连接时候需要四次挥手

三次握手

TCP三次握手
  • 第一次握手:客户端发送SYN(SEQ=x)报文给服务器端,进入SYN_SEND状态。(客户端向服务器端发出连接请求,等待服务器确认)
  • 第二次握手:服务器端收到SYN报文,回应一个SYN (SEQ=y)ACK(ACK=x+1)报文,进入SYN_RECV状态(服务器端向客户端回送一个响应,通知客户端收到了连接请求)
  • 第三次握手:客户端收到服务器端的SYN报文,回应一个ACK(ACK=y+1)报文,进入Established状态(客户端再次向服务器端发送确认信息,确认连接)

三次握手结束,TCP客户端和服务器端成功地建立连接,接下来可以开始传输数据~

四次挥手

  • 客户端打算关闭连接,此时会发送一个TCP首部FIN标志位被置为1的报文,即FIN报文,之后客户端进入FIN_WAIT_1状态
  • 服务端收到该报文后,就向客户端发送ACK应答报文,接着服务端进入CLOSED_WAIT状态
  • 客户端收到服务端的ACK应答报文后,之后进入FIN_WAIT_2状态
  • 等待服务端处理完数据后,也向客户端发送FIN报文,之后服务端进入LAST_ACK状态
  • 客户端收到服务端的FIN报文后,回一个ACK应答报文,之后进入TIME_WAIT状态
  • 服务器收到了ACK应答报文后,就进入了CLOSE状态,至此服务端已经完成连接的关闭
  • 客户端在经过2MSL一段时间后,自动进入CLOSE状态,至此客户端也完成连接的关闭

由上图可以知道,每个方向都要有一个FIN和一个ACK,因此通常被称为四次挥手。这一点注意:主动关闭连接的,才可进入TIME_WAIT状态

UDP

  • 用户数据报协议(User Datagram Protocol)(数据报(Datagram)是UDP网络传输的基本单位)
  • UDP是无连接通信协议,即在数据传输时数据的发送端和接收端不建立逻辑连接。即当一台计算机向另外一台计算机发送数据时,发送端不会确认接收端是否存在就会发出数据,同样接收端在收到数据时,也不会向发送端反馈是否收到数据。
  • 由于使用UDP协议消耗资源小,通信效率高,所以通常都会用于音频、视频和普通数据的传输例如视频会议都使用UDP协议,因为这种情况即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。
  • 但是在使用UDP协议传送数据时,由于UDP的面向无连接性,不能保证数据的完整性,因此在传输重要数据时,不建议使用UDP协议

IP协议

概念

IP协议(Internet Protocol)又称互联网协议,是支持网间互联的数据包协议。该协议工作在网络层,主要目的就是为了提高网络的可扩展性,与传输层TCP相比,IP协议提供一种无连接/不可靠、尽力而为的数据包传输服务,其与TCP协(传输控制协议)一起构成了TCP/IP协议族的核心

分类

  • IPv4:为每个连接在网络上的主机分配一个32bit地址。按照TCP/IP规定,IP地址用二进制来表示且每个IP地址长32bit,即4个字节;为了方便使用IP地址采用点分十进制,如“192.168.1.66”
  • IPv6: 由于互联网的蓬勃发展,IP地址的需求量越来越多,为了扩大地址空间,通过IPv6采用128位地址长度定义地址,这样就解决了网络地址资源数量不够的问题

  • 常用命令:
    ① ipconfig:查看本机 IP 地址(Linux下对应ifconfig)
    ② ping IP 地址:检查网络是否连通。

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

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

相关文章

如何使用Python获取SAP Temporary key 临时密钥

什么是Sap 临时密钥? SAP 临时密钥是用于激活 SAP 软件的一种许可证,只能在有限的时间内使用。这些密钥可用于评估目的或在系统迁移期间使用。它们是临时解决方案,通常在一定时间后过期。 如何获取Sap Temporary keys? 临时密钥: 如果创建…

Web网页浏览器远程访问jupyter notebook服务器【内网穿透】

文章目录 前言1. Python环境安装2. Jupyter 安装3. 启动Jupyter Notebook4. 远程访问4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5. 固定公网地址 前言 Jupyter Notebook,它是一个交互式的数据科学和计算环境,支持多种编程语言,如…

【仿写tomcat】五、响应静态资源(访问html页面)、路由支持以及多线程改进

访问html页面 如果我们想访问html页面其实就是将本地的html文件以流的方式响应给前端即可,下面我们对HttpResponseServlet这个类做一些改造 package com.tomcatServer.domain;import com.tomcatServer.utils.ScanUtil;import java.io.IOException; import java.io…

全国产EtherCAT运动控制边缘控制器(二):统一的上位机API接口

上节课程我们介绍了全国产EtherCAT运动控制边缘控制器ZMC432H的硬件接口与功能,本节课程我们主要讲解一下正运动API函数封装原理以及自定义API封装例程。 一、功能简介 全国产EtherCAT运动控制边缘控制器ZMC432H是正运动的一款软硬件全国产自主可控,运…

Genoss GPT简介:使用 Genoss 模型网关实现多个LLM模型的快速切换与集成

一、前言 生成式人工智能领域的发展继续加速,大型语言模型 (LLM) 的用途范围不断扩大。这些用途跨越不同的领域,包括个人助理、文档检索以及图像和文本生成。ChatGPT 等突破性应用程序为公司进入该领域并开始使用这项技术进行构建铺平了道路。 大公司正…

SOLIDWORKS有限元分析

SOLIDWORKS是一款广泛使用的三维计算机辅助设计软件,同时它还具有强大的有限元分析功能。有限元分析是一种工程分析方法,它将复杂的实体分解成许多小的有限元素,以便对其进行数学建模和分析。SOLIDWORKS的有限元分析功能可以帮助工程师预测和…

nbcio-boot3.1 解决积木报表基于SSTI的任意代码执行漏洞,积木报表版本从1.4.0升级到最新的1.6.1

1、积木报表基于SSTI的任意代码执行漏洞 使用JeecgBoot 受影响版本中由于积木报表 /jeecg-boot/jmreport/queryFieldBySql Api接口未进行身份校验,使用 Freemarker 处理用户用户传入的 sql 参数,未经授权的攻击者可发送包含恶意 sql 参数的 http 请求&am…

vue3动态组件

1 、 可以通过 shallowRef 把 可以把组件进行包裹 <template><div><el-button click"setclick(son1)">1111</el-button><el-button click"setclick(son2)">2222</el-button><el-button click"setclick(son…

数字变有趣,分析师的必备利器——奥威BI数据可视化工具

数据分析不仅要在短时间内把数据情况摸清、把数据关联梳理清楚&#xff0c;还需要以一直直观易懂的方式将数据信息准确传递给使用者&#xff0c;便于使用者利用这些数据信息去决策管理&#xff0c;这就是数据可视化。说到这&#xff0c;就不得不请出让数据变得有趣、易懂&#…

解决Java中的“Unchecked cast: java.lang.Object to java.util.List”问题

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

使用Scrapy构建自己的数据集

一、说明 当我第一次开始在工业界工作时&#xff0c;我很快意识到的一件事是&#xff0c;有时你必须收集、组织和清理自己的数据。在本教程中&#xff0c;我们将从一个名为FundRazr的众筹网站收集数据。像许多网站一样&#xff0c;该网站有自己的结构、形式&#xff0c;并有大量…

vs code 环境变量的配置

问题 环境变量中重复出现下面这两项 ..:/home/xxx/.local/bin/:/home/xxx/.local/bin/:...这造成了一些环境污染&#xff0c;因为/home/xxx/.local/bin 这个环境变量放在前面&#xff0c;文件夹里面的可执行的文件会比conda环境更加优先地执行。 解决 先说结论&#xff0c;…

数字孪生重塑生产格局:智慧工厂的前景与挑战

随着科技的飞速发展&#xff0c;数字孪生技术在智慧工厂的建设中正展现出令人瞩目的作用。数字孪生&#xff0c;一种将实际物理对象与数字虚拟模型相结合的前沿技术&#xff0c;不仅改变了生产方式&#xff0c;更为智慧工厂的未来描绘了一幅令人振奋的画卷。 在智慧工厂的建设…

Java实现敏感词过滤功能

敏感词过滤功能实现 1.GitHub上下载敏感词文件 2.将敏感词文件放在resources目录下 在业务中可以将文本中的敏感词写入数据库便于管理。 3.提供实现类demo 代码编写思路如下&#xff1a;1.将敏感词加载到list中&#xff0c;2.添加到StringSearch中&#xff0c;3.校验&#x…

SSL证书如何使用?SSL保障通信安全

由于SSL技术已建立到所有主要的浏览器和WEB服务器程序中&#xff0c;因此&#xff0c;仅需安装数字证书或服务器证书就可以激活功能了。SSL证书主要是服务于HTTPS&#xff0c;部署证书后&#xff0c;网站链接就由HTTP开头变为HTTPS。 SSL安全证书主要用于发送安全电子邮件、访…

最新发布!2023版贵州省标准地图

日前&#xff0c;贵州省自然资源厅最新发布了10幅2023版《贵州省标准地图》&#xff0c;涉及政区、水系、交通、全要素等专题。此次发布的新版《贵州省标准地图》&#xff0c;紧紧围绕聚焦实事、铆定实用、主推实效、力主实惠而组织编制。 贵州省自然资源厅将编制出版2023版《…

TCP拥塞控制详解 | 2. 背景

网络传输问题本质上是对网络资源的共享和复用问题&#xff0c;因此拥塞控制是网络工程领域的核心问题之一&#xff0c;并且随着互联网和数据中心流量的爆炸式增长&#xff0c;相关算法和机制出现了很多创新&#xff0c;本系列是免费电子书《TCP Congestion Control: A Systems …

视频云存储/安防监控/视频汇聚EasyCVR平台新增经纬度选取功能

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同&#xff0c;支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。音视频流媒体视频平台EasyCVR拓展性强&#xff0c;视频能力丰富&#xff0c;具体可实现视频监控直播、视频轮播、视频录像、…

1x1 卷积:解释器

一、说明 在这篇博客中&#xff0c;我们将尝试深入探讨 1x1 卷积操作的概念&#xff0c;该概念出现在 Lin等人 &#xff08;2013&#xff09; 的论文“网络中的网络”和 Szegedy 等人 &#xff08;2014&#xff09; 的论文“Go Deep with Convolutions” 中&#xff0c;该论文提…

MYSQL基本命令和操作

&#x1f58a;作者 : D. Star. &#x1f4d8;专栏 : JAVA &#x1f606;今日提问 : 你好&#xff0c;我的朋友&#xff0c;在你的人生途中&#xff0c;会面临很多选择&#xff0c;不管选什么样的结果&#xff0c;我们都多少会有些后悔。如果是你&#xff0c;你会选择爱你的&…