一、前言
在学校里面上网的流程以及是怎么实现的?
通过交换机和路由器等中间设备来接收和转发电信号,从而实现信息的传递和服务的提供。
抽象语言(文本、音频、视频) --> 电信号
抽象语言 --> 编码 ——应用层
编码 --> 二进制 ——表示层
二进制 --> 电信号 ——介质访问控制层
处理电信号 ——物理层
二、OSI/RM
开放式系统互联参考模型(OSI/RM)
国际标准化组织(ISO)
应用层:讲抽象语言转换成编码
表示层:编码转换成二进制
会话层:建立、维护断开网络应用与网络服务器之间的会话。
传输层:实现端到端的传输,应用到应用的传输
IP地址由32位二进制构成
MAC地址由6个字节(32个十六进制数字)构成
端口号由16位二进制构成
1-65535 —— 1-1024知名端口号 —— SPORT,DPORT
HTTP —— 80
HTTPS —— 443
POP3 —— 110
FTP —— 20/21
SFTP(SSH-FTP) —— 22(SFTP是SSH的一部分,通过SSH通道进行传输)
FTPS(FTP-SSL) —— 990
SSL是一个在客户机和具有SSL功能的服务器之间的安全连接中对数据进行加密和解密的协议
Telnet —— 23
SSH —— 22
DNS —— 53
SMTP —— 25
DHCP —— 67/68
动态端口号:1024-65535 —— 用来分配给一些不固定的服务
网络层:基于IP地址实现逻辑寻址 —— SIP(源IP),DIP(目标IP)
直接获取IP地址
通过DNS获取IP地址
广播
通过APP来获取IP地址
数据链路层:进行二进制转换电信号,控制物理层(管理着电信号的转换),以太网中基于MAC地址(这里不是介质访问控制层的原因?)
LCC子层:逻辑链路控制子层,为传输可靠性提供一个保障,减少出现帧丢失、重复、失序的问题,CRC——循环冗余计算码
MAC子层:媒体介入控制子层,负责识别网络层的协议,对他们进行封装、解封装,MAC寻址、流量控制。
ARP协议——地址解析协议,通过一个地址获取另一个地址
正向ARP:通过MAC地址解析IP地址
反向ARP:通过IP地址解析MAC地址
免费ARP:自我介绍,检测IP地址冲突
物理层:处理电信号
三、TCP/IP
3.1、TCP/IP --- 协议簇
不只是这两个协议,这两个最具代表性
四层 -- TCP/IP标准模型
应用层
传输层 # OSI中的网络层是基于网络,而TCP/IP是基于互联网
网络层
网络接口层
# 有的人认为数据链路层控制着物理层,因为数据链路层把二进制转换成电信号,没有数据链路层就没有物理层,就像电脑没有主机,只有一个显示屏一样。
五层 -- TCP/IP对等模型
应用层
传输层
网络层
数据链路层
物理层
# 有的人认为数据链路层是可以处理二进制的,而物理层是处理电信号的,所以应该分开
3.2、封装与解封装
封装:在通过每一层(除了物理层)的时候根据自身功能添加控制信息
PDU --- 协议数据单元 PDU = 本层数据 + 本层头部(或尾部)
OSI中只能实现顺序封装
TCP/IP --- 跨层封装 --- 跨4层封装,跨3,4层封装 --- 跨的层的功能需要找到替代才可跨
RIP:520, RIPng :521, 使用的UDP协议
跨四层封装 (交换路由信息)--- OSPF --- 89(协议号)
需要解决的两个问题: 端口的标识、分段
分段的原因:在二层数据链路层限制了传输的数据大小,当数据量大时,在发送过程可能与其他的数据发生碰撞,导致数据的丢失,再者当分段后,部分数据传输失败后只需要传输失败部分的数据即可。
TCP能分段是因为TCP中有序列号,在分段后还可以进行顺序的拼接,但是UDP没有序列号,所以UDP不能分段
UDP的头部:
IP协议的头部:
TTL有一个默认值(不同系统默认值不同)每经过路由器的一次转发就会减一,到0时路由器不会继续转发,对其进行丢弃
8位协议来实现上层协议的标识,代替了传输层的端口标识
16位标识、3位标志、13位片偏移都是用来进行标识位置的,这样网络层就能完成分片的功能代替分段
跨三四层封装 (交换机与交换机之间)--- STP(生成数协议)
需要解决的问题:分片、上层协议、IP(但是交换机不需要IP,可以忽略)
这里的type表示的是上一层的服务类型,解决了标记上层协议的问题
802.2 Header and Data:可以完成分段和标识上层协议
preamble:前导符,数据帧的开始
FCS:帧校验序列,确保数据的完整性,根据前面的数据进行计算,对比传输前后的计算结果
MTU --- 最大传输单元
802.3 --- MAC --- 介质访问控制
802.2 --- LLC --- 逻辑链路控制
四、上网的流程
4.1、通过DHCP获取一个IP地址
应用层:DHCP客户端 --- DHCP服务器 --- 广播 --- DHCP - Discover报文
传输层:UDP封装 : SPORT:68 DPORT:67 --- dhcp有两个端口号 客户端68 ,服务端67
网络层:IP封装: SIP: 0.0.0.0 DIP:255.255.255.255
网络接口层:以太网协议封装: SMAC:自己 DMAC:全F(广播地址)
交换机的转发原理:交换机收到数据帧之后,首先将数据帧中发源MAC地址和进入接口的对应关系记录在本地的MAC地址表,之后看目标MAC地址,根据目标MAC地址查看本地的MAC地址表,如果MAC地址表中存在记录,最大按照记录的端口转发;如果没有记录,则将进行泛洪 --- 除了进入的接口外,发送给剩余所有接口DHCP服务器 --- DHCP客户端 --- 单播/广播 --- DHCP- Offer报文DHCP客户端 --- DHCP服务器 --- 广播 --- DHCP - Request报文DHCP服务器 --- DHCP客户端 --- 单播/广播 --- DHCP - ACK报文
4.2、打开浏览器,输入www.google.com
本地主机通过递归查找的方式找本地DNS服务器进行域名解析
DNS请求
传输层 --- UDP --- SPORT:随机 DPORT:53
网络层 --- IP --- SIP:自己的IP地址 DIP:本地DNS服务器的地址
数据链路层 --- 以太网 --- SMAC:自己 DMAC:网关的MAC地址
路由的转发原理:基于数据包中的目标IP地址,查看本地的路由表,如果路由表中存在记录,则路由器将无条件按照路由表的指示进行转发;如果没有记录,则将丢弃该数据包。
直连路由
静态路由:网络管理员手工配置的路由条目
动态路由:所有路由器运行相同的路由协议,之后,路由器之间自己沟通交流最终计算出到达未知网段的路由信息。
递归:用户浏览器向本地DNS服务器(如8.8.8.8
)发送递归查询请求。每一级层层往下查询
迭代:本地DNS服务器通过迭代查询(根→TLD→权威服务器)获取IP地址。本人层层往下询问