OSI七层模型
- 物理层:物理层的任务就是为它的上一层提供一个物理连接。
- 数据链路层:它控制网络层与物理层之间的通信。它的主要功能是如何在不可靠的物理线路上进行数据的可靠传递
- 网络层:其主要功能是将网络地址翻译成对应的物理地址,并决定如何将数据从发送方路由到接收方
- 传输层:传输协议同时进行流量控制或是基于接收方可接收数据的快慢程度规定适当的发送速率
- 会话层:负责在网络中的两节点之间建立、维持和终止通信。 会话层的功能包括:建立通信链接,保持会话过程通信链接的畅通,同步两个节点之间的对话,决定通信是否被中断以及通信中断时决定从何处重新发送
- 表示层:应用程序和网络之间的翻译官,在表示层,数据将按照网络能理解的方案进行格式化
- 应用层:主要负责对软件提供接口以使程序能使用网络服务。“应用层”并不是指运行在网络上的某个特别应用程序 ,应用层提供的服务包括文件传输、文件管理以及电子邮件的信息处理。
OSI协议最大优点是将服务、接口和协议这三个概念明确地区分开来。
服务说明某一层为上一层提供一些什么功能
接口说明上一层如何使用下层的服务
协议涉及如何实现本层的服务
这样各层之间具有很强的独立性,互连网络中各实体采用什么样的协议是没有限制的,只要向上提供相同的服务并且不改变相邻层的接口就可以了
TCP/IP五层协议(四层模型没有物理层)
分层名称 | Va代表硬件 | 协议/技术 | 特性 |
---|---|---|---|
物理层 | 双绞线,WiFi电磁波,集线器 | 发送0/1光电信号 | |
数据链路层 | 交换机 | 以太网。令牌环网、无线LAN、ARP、MTU | |
网络层 | 路由器 | IP协议 | |
传输层 | TCP/UDP协议 | 主机系统内核实现 | |
应用层 | HTTP、DNS、NAT、NATP、FTP、SMTP | 应用程序实现 |
涉及的网络设备
- 集线器
- 交换机(3或4层交换机)
- 路由器(3或4层参与)
- 主机(各层都参与)
对于一台主机,它的操作系统内核实现了从传输层到物理层的内容
对于一台路由器,它实现了从网络层到物理层(也可有其它层)
对于一台交换机,它实现了从数据链路层到物理层(也可有其它层)
对于集线器,它只实现了物理层
集线器:只是转发数据报,将数据报以广播的方式发送个其他主机。
交换机:只是转发数据报,根据数据报中的目的MAC来发送给对应设备。交换机中有MAC地址表:将MAC地址和对应端口建立映射关系。
路由器:WAN提供公网IP的端口,连接公网上的网络设备。LAN提供私网IP的端口,相连局域网上的设备。路由器里是由应用程序的,它可以处理NAT,NAPT协议可以修改路由器所在网路层之上的传输层的数据报头。
主机:发送数据包(程序发送数据报时,是知道五元组的信息的)
使用到DNS协议:域名转换为IP
- 先在本机缓存里找域名对应的IP
- 本机找不到,就往上一层的设备/DNS服务器找。最终在全球顶级域名服务器里找,若找不到,则没有该域名。
网络传输基本流程
同一网段的两台主机进行文件传输
数据包的封装和分用
五元组
五元组能区分不同会话,并且对应的会话是唯一的。
组成:
- 源IP地址
- 源端口
- 目的IP地址
- 目的端口
- 传输层协议
IP:定位网络中的一台主机,在网络层包装IP地址。本机默认127.0.0.1,前三位是网络号,最后一位是主机号
端口号:定位主机中的某个应用程序,应用程序通过在传输层包装的端口号发送/接收数据。
IP+端口号:定位到网络上具体的一个应用程序
MAC地址
- 主机网卡绑定的物理地址
- MAC地址用来识别数据链路层中相连的节点; 长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示 例如:
08:00:27:03:fb:19 - 在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址)
对比IP地址和MAC地址
IP地址描述的是路途总体的 起点 和 终点;
MAC地址描述的是路途上的每一个区间的起点和终点
ARP协议
ARP协议是介于数据链路层和网络层之间的协议
ARP协议建立了主机 IP地址 和 MAC地址 的映射关系
主机中有ARP缓存表(保存这个网络中各个电脑的IP地址和MAC地址的对照关系)
网络互联
图中的集线器只进行数据的转发
主机A发送FTP“请求下载某个文件”数据包给主机C
查找目的主机MAC地址过程:
-
查找本机ARP缓存表,通过目的IP查找MAC地址。
-
若找到,直接向此MAC地址发送数据包
-
没有找到,主机A广播一个ARP请求数据包—>此网段中所有主机接受到ARP数据包
-
ARP请求数据包:源MAC+目的MAC(广播形式的FF:FF:FF…)+目的IP
-
与集线器相连的主机接受到数据包的处理过程:
- 如果目的IP等于自己IP,发送响应数据包(包含自己的MAC地址)。
- 不是自己的IP地址,丢弃数据包。
-
在两台计算机同时通信时,会发生冲突,这些主机通过集线器相连,因为不能避免冲突,所以会出现冲突域。
冲突域:连接在同一网段的所有工作站的集合,同一物理网段的所以节点的集合。
交换机可以解决冲突域问题。
局域网
交换机连接
流程:
-
主机A封装数据
-
在主机A中的ARP缓存表中查找目的IP的MAC地址
-
找不到,发送ARP请求的广播数据包,经交换机转发,发送给其他主机
-
其他主机的做法:
- 如果目的IP等于自己IP,发送响应数据包(包含自己的MAC地址)。
- 不是自己的IP地址,丢弃数据包。
-
-
发送数据包,交换机在MAC地址转换表中查找目的MAC,通过MAC地址转换表得知要发送到哪个端口,这个端口就对应着目的主机。
交换机+路由器
主机1和主机4不在同一网络。
主机1要发送FTP文件下载数据包给主机4
主机1发送的数据包:目的IP+目的MAC+目的IP+目的MAC+协议号
发送过程:
-
判断本机和目的主机是否在同一网段
- 通过网络号判断:网络号=IP地址按位与子网掩码
-
若在同一网段,直接通过交换机实现数据的发送。
-
不在同一网段,主机1在自己的ARP缓存表中找到网关IP
-
主机1发送数据包给路由器:
- 数据包格式:源IP(主机1IP)+源MAC地址(主机1MAC)+目的IP(主机4)+目的MAC(路由器MAC)+协议号
-
路由器接收数据报:
- 路由器中的路由表中:有IP和MAC的对应信息,在其中找到目的IP的mac地址
- 数据报的加工:分用,封装
- 数据包的以太网帧(数据链路层)里面包含的源MAC地址修改为自己(路由器)的MAC,目的MAC修改为目的主机(主机4)的MAC - 按目的MAC发送数据报:发送到主机4
- 目的主机解析,响应数据包,和之前的逻辑一样
-
广域网
主机1请求https://www.baidu.com
传输流程:
- 本机封装数据报:
- http应用层:域名解析:通过DNA将百度域名转换为IP
- tcp传输层:端口号封装:源端口号:主机1端口号,目的端口号:默认8080
- ip网络层:分装源ip(主机1的局域网IP)
- 以太网帧数据链路层(源MAC:主机1,目的MAC:路由器A) - 路由器A解析数据报:分用后在封装
- 数据链路层:源MAC修改为自己(路由器A),通过目的IP在路由表查询到下一跳设备的MAC地址,将目的MAC修改为下个设备的MAC(下个设备可能目的地,也可能是里目的地最近方向的设备)
- 网络层:源IP由局域网IP(主机1)改为路由器公网IP,NAT技术转换局域网IP和公网IP
- 传输层:源端口号有局域网端口(主机1应用程序)改为路由器映射端口,NAPT将局域网的ip+主机程序端口映射为路由器公网IP和路由器公网端口