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

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

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

相关推荐
A小辣椒1 天前
TShark:Wireshark CLI 功能
linux
A小辣椒1 天前
TShark:基础知识
linux
AlfredZhao1 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao2 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334662 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪2 天前
linux 拷贝文件或目录到指定的位置
linux
大树883 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠3 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
bush43 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5203 天前
Linux 11 动态监控指令top
linux