javaee-网络原理(理论)

①ip地址:标记一台网络设备所在位置

端口号:一台主机上有多个程序同时用网,端口就是区分不同程序的

网络协议:通信双方用于规定接收/发送 的数据格式的约定

多个设备遵守同一协议才能通信

②网络通信五元组:

源ip

源端口

目的ip

目的端口

协议类型

  • IP:找到设备
  • 端口:找到程序
  • 协议:约定格式

③协议分层:把网络通信的大任务,拆成好几层小任务,每层只干自己的事,互不干扰。

如果我们设计一个协议,要完成网络通信中各种问题,那肯定会很复杂,很多。为了方便一点,就把整一大个协议分成多个小协议

每层只做一层的事,不用管别的层怎么实现 ,这就是分层思想

同时还能起到封装和解耦合的作用:上层协议不用管下层的协议,某一层更换协议,对其他层没影响

  • 封装(Encapsulation)

    • 下层对上层屏蔽细节
    • 上层不用管下层怎么实现
    • 上层只需要调用下层提供的功能就行
  • 解耦合(Decoupling)

    • 层与层之间独立
    • 某一层更换协议 / 技术
    • 对上下层完全没影响

具体是怎么分层的?

(1)OSI七层模型

OSI = Open Systems Interconnection 开放式系统互联

OSI 七层(从上到下)

  1. 应用层:给用户用的(HTTP、FTP、DNS)
  2. 表示层:数据加密、压缩、格式转换
  3. 会话层:建立 / 管理 / 断开会话
  4. 传输层:端到端传输(TCP、UDP)
  5. 网络层:寻址、路由(IP)
  6. 数据链路层:局域网传输(以太网)
  7. 物理层:电气信号、网线、光纤

但是由于7层太复杂,所以这个分层没有实现

现实里用的都是TCP/IP五层(或四层)模型

(2)TCP/IP 五层模型(上课、写代码用这个)

从上到下:

  1. 应用层: 负责数据最终怎么给应用程序使用,提供应用之间的通信交互
  2. 传输层:两个设备之间的通信,只考虑起点和终点
  3. 网络层: 负责跨网络的寻址与路由 ,确定数据包从源主机到目标主机走哪条路(路由器工作在这一层)。
  4. 数据链路层: 负责同一局域网内相邻设备之间的数据帧传输,负责设备识别、差错校验、帧同步(交换机工作在这一层)。
  5. 物理层:规定硬件设施的要求, 比如硬件电气 / 光信号传输,规定电压、接口、介质、传输速率等硬件标准。

・应⽤层:负责应⽤程序间沟通,如简单电⼦邮件传输(SMTP)、⽂件传输协议(FTP)、⽹络远程访问协议(Telnet)等。我们的⽹络编程主要就是针对应⽤层。

・传输层:负责两台主机之间的数据传输。如传输控制协议(TCP),能够确保数据可靠的从源主机发送到⽬标主机。

・⽹络层:负责地址管理和路由选择。例如在 IP 协议中,通过 IP 地址来标识⼀台主机,并通过路由表的⽅式规划出两台主机之间的数据传输的线路(路由)。路由器(Router)⼯作在⽹络层。

・数据链路层:负责设备之间的数据帧的传送和识别。例如⽹卡设备的驱动、帧同步 (就是说从⽹线上检测到什么信号算作新帧的开始)、冲突检测 (如果检测到冲突就⾃动重发)、数据差错校验等⼯作。有以太⽹、令牌环⽹,⽆线 LAN 等标准。交换机(Switch)⼯作在数据链路层。

・物理层:负责光 / 电信号的传递⽅式。⽐如现在以太⽹通⽤的⽹线 (双绞线)、早期以太⽹采⽤的同轴电缆 (现在主要⽤于有线电视)、光纤,现在的 wifi ⽆线⽹使⽤电磁波等都属于物理层的概念。物理层的能⼒决定了最⼤传输速率、传输距离、抗⼲扰性等。集线器(Hub)⼯作在物理层。

(2)TCP/IP 四层模型(工业、教材另一种说法)

数据链路层 + 物理层合并成一层 ,叫网络接口层

  1. 应用层
  2. 传输层
  3. 网络层
  4. 网络接口层

123层都跟5层模型一样,第四层就是把5层模型的4,5层合并了

④⽹络设备所在分层(以五层模型为例)

主机:从物理层→应用层(全部覆盖)

路由器:从物理层→网络层

交换机:从物理层→数据链路层

集线器:物理层

⑥网络分层对应

(1)同一个局域网里两台主机进⾏⽂件传输:

分层 对应协议 / 内容
应用层 Telnet、FTP 和 e-mail 等
传输层 TCP 和 UDP
网络层 IP、ICMP 和 IGMP
链路层 设备驱动程序及接口卡

(2)跨⽹段的主机的⽂件传输:数据从⼀台计算机到另⼀台计算机传输过程中要经过⼀个或多个路

由器

⑦网络通信流程

(1)应用程序收到用户输入,构造一个应用层的数据包(数据包遵循应用层的协议)

(2)应用程序调用传输层提供的api,把数据交给传输层

传输层拿到数据后,把应用层的数据包打包成"传输层数据包"

传输层的协议一般有两个:TCP/UDP(以TCP为例)

TCP数据包=TCP报头+TCP载荷(应用层的数据包)

(3)传输层调用网络层的api,把数据包交给网络层

网络层继续处理,使用ip协议

IP数据包=IP报头+IP载荷(传输层)

(4)IP协议(传输层)继续调用数据链路层的api,把ip数据包交给数据链路层

数据链路层,核心协议是以太网,以太网继续加工

以太网数据包=报头+载荷+报尾

以太网 = 就是数据链路层的具体实现!

  • 数据链路层 = 层的名字(抽象概念)
  • 以太网 = 这一层用的具体协议(实际干活的)

(5)以太网(数据链路层)把数据包交给硬件设备(网卡)

网卡把上述二进制数据,最后以光信号/电信号/电磁波信号 传播出去

每个报头里会记录上一层用的是什么协议

相关推荐
阿乐艾官2 小时前
【k8s网络组件及关系】
网络·arm开发·kubernetes
Shanxun Liao2 小时前
WIN2022 搭建 HTTP 文件索引服务的完整步骤
网络·网络协议·http
炘爚2 小时前
Linux 进程管理 GCC/GDB 编译调试
linux·运维·服务器
C++chaofan2 小时前
RPC 框架序列化器实现深度解析
java·开发语言·网络·网络协议·rpc·序列化器
不想好好取名字2 小时前
Ubuntu apt启用dbg符号库
linux·运维·ubuntu
java资料站2 小时前
钉钉远程一键执行服务器启动脚本
运维·服务器·钉钉
JiMoKuangXiangQu2 小时前
Linux:EtherCAT IgH 适配笔记
linux·ethercat igh
见合八方2 小时前
用于无色波分复用光网络的 10.7 Gb/s 反射式电吸收调制器与半导体光放大器单片集成
网络