【JavaEE -- 网络初识】

网络初识

  • 1. 局域网和广域网
    • 1.1 局域网(LAN)
    • 1.2 广域网WAN
  • 2. 网络通信基础
    • 2.1 IP地址
    • 2.2 端口号
  • 3. 协议 -- 重点
    • 3.1 网络通信协议拆分成多层
    • 3.2 TCP/IP 五层网络协议
  • 4. 封装和分用
    • 4.1 封装过程
    • 4.2 分用过程
    • 4.3 网络传输的数据单位
  • 5. 网络编程中的客户端和服务器
    • 5.1 客户端和服务器之间交互模式

1. 局域网和广域网

1.1 局域网(LAN)

  • 局域网,Local Area Network,Local即标识了局域网是本地,局部组建的一种私有网络。
  • 局域网内主机之间能方便的进行网络通信,又称内网;局域网和局域网之间在没有连接的情况下是无法通信的
  • 常见的组建局域网的方式是通过路由器或者交换机

1.2 广域网WAN

  • 广域网,Wide Area Network,简称WAN。
  • 通过路由器,将多个局域网连接起来,在物理上组成很大范围的网络,就形成了广域网。广域网内部局域网都属于其子网。

== 常见笔试题==:交换机和路由器的区别
路由器是工作在网路层,交换机是工作在数据链路层

2. 网络通信基础

2.1 IP地址

  • IP地址,描述了一个设备在网络上的位置。
  • 计算机中通过数字来描述地址,本质上是32位,4个字节的整数。为了方便表示,把IP地址表示成点分十进制,使用三个符号 . (点)来把这4个字节分成4个部分,每个部分1个字节取值范围是0-255。

2.2 端口号

  • 描述一个主机上的哪个应用程序。有了IP地址可以确定主机,但是一个主机上可能有很多个程序在使用网络
  • 主机收到网络数据就需要区分出是交给哪个程序使用数据
  • 每个程序在进行网络通信过程中,都需要一个端口号(可能是用户手动指定也可能是系统自动分配的)。
  • 同一个主机上,程序之间使用的端口号不能冲突

进行一次网络通信的过程中,涉及到的IP和端口其实各有两个,有目的IP和目的端口,源IP和源 端口

3. 协议 – 重点

协议,是一种通信过程中的约定,发送方和接收方需要提前商量好数据的格式,才能确保两者之间能正确进行沟通。

3.1 网络通信协议拆分成多层

  • 把功能定位相似的协议放到同一层之中。
  • 上层协议会调用下层协议的功能
  • 下层协议给上层提供服务
  • 只有相邻的层次之间可以进行沟通,不能跨层次调用

协议分层是为了让复杂的一个协议变成更简单的多个协议:

  1. 上层协议直接使用下层协议即可,不需要了解下层协议的细节(相当于下层协议把细节封装好了)。比如只要会说汉语就能打电话,不需要了解电话的工作原理。
    2.某一层的协议进行替换之后,对于其他层没有影响

3.2 TCP/IP 五层网络协议

OSI 七层网络协议简化为 TCP/IP 五层协议。
在这里插入图片描述

  • 应用层:传输的数据在应用程序中如何使用
  • 传输层:负责关注 网络数据包 的起点和终点
  • 网络层:负责关注 通信中的路径规则,(起点终点之间走那条路)
  • 数据链路层: 负责关注 相邻节点之间的通信细节
  • 物理层: 网络通信的基础设施

主机,它的操作系统内核实现从传输层到物理层的内容,即TCP/IP的下四层。
路由器,它实现了从网络层到物理层,下三层。
交换机,实现了从数据链路层到物理层,下两层。
集线器,只实现了物理层。

路由器工作在网络层,交换机工作在数据链路层,这里的路由器和交换机指的是经典的路由器交换机。事实上,很多交换机也具有一些路由器的功能,也能工作在网络层。很多路由器,也具有一些交换机的功能,也能工作在数据链路层

4. 封装和分用

封装和分用是网络传输数据过程中最核心的流程。

4.1 封装过程

假设A通过QQ给B发送一个hello。

  1. 应用层(应用程序qq):
    QQ从消息输入框获取到用户输入的hello,就把这个字符串构造成一个应用层的数据包,然后设置一个应用层协议,应用层数据包就是按照这个应用层协议约定的格式来构造的。随后应用程序就会调用操作系统提供的api,把这个数据包交给传输层
    在这里插入图片描述
  2. 传输层:
    传输层就会把上述数据作为一个整体,再构造成一个传输层的数据包。传输层涉及的协议,主要是TCP和UDP,此处假定使用UDP来进行通信,就会构成一个UDP的数据包。随后调用下层协议提供的api,并且把刚才构造好的数据通过参数传过去,下层协议进行处理数据。即调用网络层,网络层继续进行封装。
    在这里插入图片描述
  3. 网络层:
    网络层涉及的最核心的协议是IP协议。网络层IP协议,把传输层的UDP数据包作为一个整体,再拼上一个IP协议的报头,构造成一个IP数据包构造完之后IP协议继续调用数据链路层的api,把数据交给数据链路层这里的协议进行处理
    在这里插入图片描述
  4. 数据链路层:
    数据链路层的核心协议:以太网,以IP数据包作为一个整体,在这个基础上添加帧头和帧尾。然后调用物理层的api。
    在这里插入图片描述
  5. 物理层 :
    也就是硬件设备,把以太网数据帧,二进制结构(一串0 1 这样的数据),转换成光信号(光纤)/电信号(网线)/电磁波(无线wifi),然后进行发送。

4.2 分用过程

暂时不考虑中间过程,假定数据包已经到达B的网卡了,B的处理过程就叫分用。

  1. B的物理层,
    收到了 光信号/电信号/电磁波,就会把这些物理信号 转换成 数字信号。得到一个以太网数据帧,进一步的把这个数据帧交给数据链路层。
  2. 数据链路层:
    按照以太网数据帧的格式来解析,取出其中的载荷,再交给上层协议。
    在这里插入图片描述
  3. 网络层 IP协议:
    按照IP协议的格式进行解析,取出其中的载荷交给上层协议。
    在这里插入图片描述
  4. 传输层UDP协议:
    按照UDP协议进行解析,并且取出载荷交给上层协议
    在这里插入图片描述
  5. 应用层 QQ程序:
    按照QQ应用程序内部的应用层协议格式来进行解析数据。
    qq程序拿到这些信息之后在窗口弹出展示,即显示到聊天窗口上。

4.3 网络传输的数据单位

  • 包(packet) IP数据包
  • 段(segment) TCP数据段
  • 报(datagram) UDP数据报
  • 帧(frame) 以太网数据帧

5. 网络编程中的客户端和服务器

  • 在网络中主动发起通信的这一方,称为 客户端,被动接受的这一方,称为 服务器。
  • 同一个程序在不同的场景中,可能是 客户端也可能是服务器。
  • 客户端给服务器发送的数据,称为请求(request)
  • 服务器在客户端返回的数据,称为响应(response)

5.1 客户端和服务器之间交互模式

  1. 一问一答:一个请求对应一个响应,如网站开发
  2. 一问多答:一个请求对应多个响应,如下载。
  3. 多问一答:多个请求对应一个响应,如上传。
  4. 多问多答:一个请求可能对应多个响应,一个响应也可能对应多个请求。如远程控制,进行鼠标键盘操作,都会作为一个的请求发送,看到的画面,作为响应。

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

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

相关文章

34.网络游戏逆向分析与漏洞攻防-游戏网络通信数据解析-登录数据包的监视与模拟

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 如果看不懂、不知道现在做的什么,那就跟着做完看效果 内容参考于:易道云信息技术研究院VIP课 上一个内容:33.游戏登录数据…

阿里云-零基础入门NLP【基于深度学习的文本分类3-BERT】

文章目录 学习过程赛题理解学习目标赛题数据数据标签评测指标解题思路BERT代码 学习过程 20年当时自身功底是比较零基础(会写些基础的Python[三个科学计算包]数据分析),一开始看这块其实挺懵的,不会就去问百度或其他人,当时遇见困难挺害怕的…

pytorch如何向tensor结尾添加元素或维度--torch.cat()、torch.unsqueeze()的用法

目录 示例1 矢量后增加元素 示例2 tensor维度增加1 示例3 另一种替代unsqueeze的方法 示例1 矢量后增加元素 使用torch.cat()函数 ptorch.Tensor([1,5,0]) ptorch.cat((p, torch.Tensor([4])), 0) 结果: 这里,cat的第一个输入变量用()包绕&#xf…

mysql 存储引擎 基本介绍

目录 一 存储引擎概念介绍 (一)存储引擎概念 (二)MySQL常用的存储引擎 (三)存储引擎运作方式 二 MyISAM 存储引擎介绍 (一) MyISAM 存储引擎特点 1,不支持…

道路与航线

一道类似缩点的好题&#xff0c;先按道路缩点 然后将缩点以后的图按照航线做DAG 在DAG上先跑topsort 在每一个团内部跑dijkstra&#xff0c;同时更新top点 很有意思的一道题目 #include<bits/stdc.h> using namespace std; using ll long long; const int N 3e510; co…

chatgpt和 github copilot chat哪个更强

chatgpt大家应该都不陌生 ChatGPT 是由 OpenAI 开发的一种基于 GPT&#xff08;生成式预训练模型&#xff09;的聊天机器人。它可以生成语言上下文相关的响应&#xff0c;从而进行自然语言对话。ChatGPT 利用大规模的语言数据进行预训练&#xff0c;并通过微调或在线学习来适应…

centos7 linux下yum安装redis

安装redis 1.检查是否有redis yum 源 yum install redis2.下载fedora的epel仓库 yum install epel-release3.安装redis数据库 yum install redis4.安装完毕后&#xff0c;使用下面的命令启动redis服务 # 启动redis service redis start# 停止redis service redis stop# 查…

深入理解栈和队列(二):队列

个人主页&#xff1a;17_Kevin-CSDN博客 专栏&#xff1a;《数据结构》 一、队列的概念和结构 队列是只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的特殊线性表&#xff0c;队列具有先进先出 FIFO(First In First Out) 入队列&#xff1a;进行插入操作的…

OpenHarmony IDL工具规格及使用说明书(仅对系统应用开放)

IDL接口描述语言简介 当客户端和服务器进行IPC通信时&#xff0c;需要定义双方都认可的接口&#xff0c;以保障双方可以成功通信&#xff0c;OpenHarmony IDL&#xff08;OpenHarmony Interface Definition Language&#xff09;则是一种定义此类接口的工具。OpenHarmony IDL先…

目标检测中的mAP计算原理和源码实现

简介 在目标检测任务中&#xff0c;mAP&#xff08;mean Average Precision&#xff0c;平均精度均值&#xff09;是一个非常重要的评价指标&#xff0c;用于衡量模型在多个类别上的平均性能。它综合考虑了模型在不同召回率下的精确率&#xff0c;能够全面反映模型在检测任务中…

Apache HTTP服务器(Linux离线编译安装)

Apache HTTP服务器&#xff08;Linux离线编译安装&#xff09; Apache是普通服务器&#xff0c;本身只支持html即普通网页。可以通过插件支持PHP,还可以与Tomcat连通(单向Apache连接Tomcat,就是说通过Apache可以访问Tomcat资源。反之不然)。 Apache和Tomcat都可以做为独立的w…

nodejs+vue高校师资管理系统python-flask-django-php

快速发展的社会中&#xff0c;人们的生活水平都在提高&#xff0c;生活节奏也在逐渐加快。为了节省时间和提高工作效率&#xff0c;越来越多的人选择利用互联网进行线上打理各种事务&#xff0c;然后线上管理系统也就相继涌现。与此同时&#xff0c;人们开始接受方便的生活方式…