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)以太网(数据链路层)把数据包交给硬件设备(网卡)

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

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

相关推荐
亚远景aspice2 分钟前
亚远景-AI系统的V模型开发:基于ISO/PAS 8800的安全需求导出、架构措施与验证确认
网络·安全·汽车
稳联技术老娜3 分钟前
网关赋能汽车零部件车门产线智能化升级之ABB IRB 1260机器人与倍福CX5130 PLC通讯应用案例
网络
段一凡-华北理工大学5 分钟前
高炉炼铁领域炉温监测、预警、调控智能体设计与应用】~系列文章15:可视化界面设计:让数据说话
网络·人工智能·信息可视化·知识图谱·高炉炼铁·工业智能体
IT菜鸟程11 分钟前
Linux 系统安全加固实战:从密码策略到 SSH 访问控制
linux·ssh·系统安全
cen__y11 分钟前
Linux10(计算机网络01)
linux·运维·服务器·c语言·计算机网络·ubuntu
minji...13 分钟前
Linux 网络基础之UDP协议(四)传输层协议 UDP,再谈端口号,UDP 特点
linux·服务器·开发语言·网络·c++·tcp/ip·udp
emiya_saber18 分钟前
docker cmd
linux·运维·docker
艾莉丝努力练剑20 分钟前
【Linux网络】Linux 网络编程:应用层自定义协议与序列化(1)初识
linux·运维·服务器·网络·c++·udp·tcp
在角落发呆24 分钟前
c socket 服务器转发,c socket 服务器转发的方法
服务器·c语言·开发语言
сокол27 分钟前
【网安-Web渗透测试-内网渗透】内网横向移动——Impacket套件
服务器·windows·网络安全·系统安全