【JavaEE -- 网络初识】

网络初识

  • [1. 局域网和广域网](#1. 局域网和广域网)
    • [1.1 局域网(LAN)](#1.1 局域网(LAN))
    • [1.2 广域网WAN](#1.2 广域网WAN)
  • [2. 网络通信基础](#2. 网络通信基础)
    • [2.1 IP地址](#2.1 IP地址)
    • [2.2 端口号](#2.2 端口号)
  • [3. 协议 -- 重点](#3. 协议 -- 重点)
    • [3.1 网络通信协议拆分成多层](#3.1 网络通信协议拆分成多层)
    • [3.2 TCP/IP 五层网络协议](#3.2 TCP/IP 五层网络协议)
  • [4. 封装和分用](#4. 封装和分用)
    • [4.1 封装过程](#4.1 封装过程)
    • [4.2 分用过程](#4.2 分用过程)
    • [4.3 网络传输的数据单位](#4.3 网络传输的数据单位)
  • [5. 网络编程中的客户端和服务器](#5. 网络编程中的客户端和服务器)
    • [5.1 客户端和服务器之间交互模式](#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. 多问多答:一个请求可能对应多个响应,一个响应也可能对应多个请求。如远程控制,进行鼠标键盘操作,都会作为一个的请求发送,看到的画面,作为响应。
相关推荐
网络安全-杰克21 分钟前
网络安全概论
网络·web安全·php
怀澈12225 分钟前
高性能服务器模型之Reactor(单线程版本)
linux·服务器·网络·c++
耗同学一米八1 小时前
2024 年河北省职业院校技能大赛网络建设与运维赛项样题二
运维·网络·mariadb
skywalk81631 小时前
树莓派2 安装raspberry os 并修改成固定ip
linux·服务器·网络·debian·树莓派·raspberry
C++忠实粉丝1 小时前
计算机网络socket编程(3)_UDP网络编程实现简单聊天室
linux·网络·c++·网络协议·计算机网络·udp
黑客Ela2 小时前
网络安全中常用浏览器插件、拓展
网络·安全·web安全·网络安全·php
qdprobot2 小时前
ESP32桌面天气摆件加文心一言AI大模型对话Mixly图形化编程STEAM创客教育
网络·人工智能·百度·文心一言·arduino
hakesashou3 小时前
Python中常用的函数介绍
java·网络·python
C++忠实粉丝4 小时前
计算机网络socket编程(4)_TCP socket API 详解
网络·数据结构·c++·网络协议·tcp/ip·计算机网络·算法
九州ip动态4 小时前
做网络推广及游戏注册为什么要换IP
网络·tcp/ip·游戏