【JavaEE -- 网络初识】

本文介绍了网络通信的基础概念,包括局域网和广域网的构建,IP地址和端口号的作用,以及TCP/IP协议的层次结构。重点讲解了数据在网络中的封装和分用过程,以及网络编程中客户端与服务器的交互模型。
摘要由CSDN通过智能技术生成

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
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值