• 【JavaEE】初识计算机网络(TCP/IP五层模型及封装和分用)


    一、 网络通信基础

    网络互连的目的是进行网络通信,也即是网络数据传输,更具体一点,是网络主机中的不同进程间,基于网络传输数据。
    那么,在组建的网络中,如何判断到底是从哪台主机,将数据传输到那台主机呢?这就需要使用IP地址来标识。

    1.1 IP地址

    IP地址用于定位主机的网络地址
    (就像我们发送快递一样,需要知道对方的收货地址,快递员才能将包裹送到目的地。)

    IP地址解决了网络通信时,定位网络主机的问题,但是还存在一个问题,传输到目的主机后,由哪个进程来接收这个数据呢?这就需要端口号来标识。

    1.2 端口号

    在网络通信中,IP地址用于标识主机网络地址,端口号可以标识主机中发送数据、接收数据的进程。简单说:端口号用于定位主机中的进程。

    注意:两个不同的进程,不能绑定同一个端口号,但一个进程可以绑定多个端口号。

    1.3 协议

    协议,网络协议的简称,网络协议是网络通信(即网络数据传输)经过的所有网络设备都必须共同遵从的一组约定、规则。

    协议(protocol)最终体现为在网络上传输的数据包的格式。

    1.4 五元组

    在TCP/IP协议中,用五元组来标识一个网络通信:
    1. 源IP:标识源主机
    2. 源端口号:标识源主机中该次通信发送数据的进程
    3. 目的IP:标识目的主机
    4. 目的端口号:标识目的主机中该次通信接收数据的进程
    5. 协议号:标识发送进程和接收进程双方约定的数据格式

    在这里插入图片描述

    1.5 协议分层

    协议分层类似于打电话时,定义不同的层次的协议:
    在这里插入图片描述

    1.6 TCP/IP五层模型(important)

    应用层:负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。
    传输层:不关注中间路径,只关心起点和终点(负责两台主机之间的数据传输)
    网络层:两个遥远节点之间的路径规划(负责地址管理和路由选择)
    数据链路层:关注两个相邻结点的传输(设备之间的数据帧的传送和识别)
    物理层:网络通信的基础设施。网线、光纤、网络接口等。(负责光/电信号的传递方式)

    在这里插入图片描述

    1.7 封装和分用

    发送方发送数据,要把数据从上到下,交给依次对应的层次的协议,进行封装
    接收方接收数据,要把数据从下到上,交给依次对应的层次的协议,进行解析

    下面以QQ发消息为例说明封装和分用的过程:
    我作为发送方,在编辑框输入一个消息:“吃饭了吗”。发给姐姐。
    则会有如下过程:

    (1)应用层(qq)拿到上述用户数据进行封装,封装成应用层数据包(本质就是字符串拼接)
    在这里插入图片描述
    (2)传输层拿到上述数据:
    应用层调用传输层的api来处理这个数据
    传输层有很多协议,其中最典型的就是TCP和UDP

    此处以UDP为例:
    UDP针对上述数据包在进行封装:

    在这里插入图片描述
    就是给上述应用层数据包加了“报头”变成数据报,一个典型的数据报结构就是:“报头”+”载荷“。这里应用层数据包作为UDP数据报的”载荷“

    (3)传输层到网络层:
    此时是一个UDP数据报,接下来把他交给网络层的协议
    网络层最常见的协议就是IP协议

    加上一个IP协议的报头,整个UDP数据报作为载荷
    在这里插入图片描述
    源IP和目的IP就描述了这次传输最初的起点和最终的终点

    4)网络层交给数据链路层
    最典型的协议:以太网(数据链路层和物理层)

    给上述的IP数据报加上以太网帧头和帧尾变成以太网数据帧
    在这里插入图片描述
    其中mac地址也叫物理地址,也是描述一个设备在网络上的位置,和IP很相似

    (5)数据链路层把上述以太网数据帧交给物理层

    物理层把上述二进制数据转换成光信号/电信号/电磁信号,进行传输

    以上的操作咱们的操作系统都已经封装好了

    而接受的过程和上述刚好相反:从下到上,依次分用:

    (1)物理层收到高低电平二进制数据
    会对这些信号解析,变成二进制序列

    (2)从物理层到数据链路层
    把上述二进制序列当成一个以太网数据帧,去掉帧头和帧尾交给网络层:

    在这里插入图片描述

    (3)网络层
    此时由网络层的IP协议进行解析数据报,去掉IP报头和其他工作

    在这里插入图片描述
    (4)传输层:
    由UDP进行解析,将载荷交给应用层

    在这里插入图片描述
    (5)由qq程序解析应用层数据报并取出下列字段放在程序的界面中
    在这里插入图片描述

    真实的网络传输可能还会经过多个节点:
    在这里插入图片描述

  • 相关阅读:
    系统优化脚本支持Ubuntu和CentOS
    2023APMCM亚太杯/小美赛数学建模竞赛优秀论文模板分享
    Spring
    从路由器真机提取固件包(二)
    JS操作DOM及CSS
    图神经网络(GNN)最新顶会论文汇总【附源码】
    lua基础之package
    C现代方法(第11章)笔记——指针
    01背包问题
    Vue3-ref函数、reactive函数的响应式
  • 原文地址:https://blog.csdn.net/m0_68101404/article/details/133938135