OSI参考模型
应用层 |
对应用程序提供接口。 |
表示层 |
进行数据格式的转换,以确保一个系统生成的应用层数据能够被另外一个系统的应用层所识别和理解。 |
会话层 |
在通信双方之间建立、管理和终止会话。 |
传输层 |
建立、维护和取消一次端到端的数据传输过程。控制传输节奏的快慢,调整数据的排序等等。 |
网络层 |
定义逻辑地址;实现数据从源到目的地的转发。 |
数据链路层 |
将分组数据封装成帧;在数据链路上实现数据的点到点、或点到多点方式的直接通信;差错检测。 |
物理层 |
在媒介上传输比特流;提供机械的和电气的规约 |
TCP/IP参考模型
应用层
主机到主机层
英特网层
网络接入层
TCP/IP标准参考模型将OSI中的数据链路层和物理层合并为网络接入层,这种划分方式 其实是有悖于现实协议制定情况的,故融合了TCP/IP标准模型和OSI模型的TCP/IP对等模型被提出,后面的讲解也都将基于这种模型。
TCP/IP对等模型
应用层
传输层
网络层
数据链路层
物理层
TCP/IP常见协议
应用层PDU:数据
Telnet、FTP、TFTP、SNMP、HTTP、SMTP、DNS、DHCP
Telnet:提供远程登录服务的标准协议。
HTTP(超文本传输协议):用来访问在网页服务器上的各种页面。
FTP(文件传输协议):为文件传输提供了途径,它允许数据从一台主机传送到另一台主机上,采用C/S结构。
DNS(域名解析服务):用于实现从主机域名到IP地址之间的转换。
传输层PDU:数据段
TCP(传输控制协议):为应用程序提供面向连接的通信服务。 ——传数据前必须要建立连接,很可靠,但耗费时间。
UDP:为应用程序提供面向无连接的,且不对传送数据包进行可靠性的保证。 ——传数据不需要建立连接,不可靠,但速度很快。
比如:发送微信,主播直播,都是用到UDP协议。
TCP和UDP端口号:
客户端使用的源端口一般是随机分配的,为系统中未使用的,且大于1023;目标端口则由服务器的应用指定(比如HTTP:80;FTP:21)
TCP的建立和断开: ——三次握手和四次挥手
网络层PDU:数据包
IP、ICMP、IGMP
IP(互联网协议):将传输层的数据封装成数据包,完成源到目的的转发,提供无连接的、不可靠的服务。
IGMP(因特网组管理协议):负责IP组播成员管理的协议。它用来在IP主机和与其直接相邻的组播路由器之间建立、维护和组播组成员关系。
ICMP(网际报文控制协议):基于IP协议在网络中发送控制消息,提供可能发生的问题反馈。
数据链路层PDU:数据帧
PPP、PPPoE、Ethernet
PPP(点对点协议):一种点对点模式的数据链路层协议,多用于广域网。
PPPoE(以太网承载PPP协议):PPPoE提供通过简单桥接访问设备(接入设备)把一个网络的多个主机连接到远程访问集中器的功能。常见的应用有家庭宽带拨号上网。
Ethernet(以太网协议):一种多路访问广播型数据链路层协议,是当前应用最广泛的局域网技术。
以太网与MAC地址
以太网是一种广播式数据链路层协议,支持多点接入。
个人电脑的网络接口遵循的就是以太网标准。
一般情况下,一个广播域对应着一个IP网段。
MAC地址在网络中唯一标识一个网卡,每个网卡都需要且会有唯一的一个MAC地址。
MAC用于在一个IP网段内,寻址找到具体的物理设备。
工作在数据链路层的设备。例如以太网交换机,会维护一张MAC地址表,用于指导数据帧转发。
物理层PDU:比特流
数据到达物理层之后,物理层会根据物理介质的不同,将数字信号转换成光信号、电信号或者是电磁波信号。
负责比特流在介质上的传输。
传输介质:双绞线、光纤
ARP(地址解析协议):
根据已知IP地址获得对应的MAC地址。
ARP的主要功能:
- 将IP地址解析为MAC地址
- 维护IP地址与MAC地址的映射关系的缓存,即ARP表项
- 实现网段内重复IP地址的检测
那,知道IP地址,为什么还要知道MAC地址呢? 答:数据从主机A发给主机B时,要经过应用层,传输层,网络层,到数据链路层时,需要MAC地址封装数据包。没有MAC地址封装不了。
ARP工作原理 ARP缓存表会过期,有效期是180s
例如:AR1pingAR2,在ping通之前,首先AR1会发一个ARP报文,免费ARP。因为没有AR2的MAC地址,不能完成数据链路层的封装,用广播包去问广播域内谁有AR2的MAC的地址告诉AR1,然后AR2收到之后,我有MAC地址,就会以单播方式发给AR1
数据链路层通过对上层类型字段判断上层协议(网络层)承载的是何种协议(可以抓包,发ping包)
1、0x0806是ARP协议
0x0800是IP协议
如果是网络层根据上层协议号判断上层协议(传输层)承载的是何种协议
1、协议号为1,代表ICMP协议
2、协议号为89,代表OSPF协议
传输层根据上层端口号判断上层协议(应用层)承载的是何种协议
1、HTTP是80
2、FTP是21
数据通信过程
比如在访问华为官网,输入网址,敲下回车后,计算机是这样处理的:
- 浏览器(应用程序)调用HTTP协议,完成应用层数据的封装。此时PDU为数据。
- HTTP依靠传输层的TCP进行可靠传输,并添加上TCP头部信息,包括源端口、目的端口,此时PDU为数据段。
- 在IPv4网络中,TCP会将封装好的数据段传递给网络层,并由网络层完成封装,此时PDU为数据包。
- 由于使用了Ethernet作为数据链路层协议,在网络层完成封装后,会交由数据链路层处理(例如以太网卡)。
- 数据链路层在收到数据包之后,会添加上相应的头部和尾部,此时PDU为数据帧。
- 添加完之后,会传递给物理层,物理层根据物理介质不同,将数字信号转换成电信号,光信号或者无线信号。
- 然后信号将在网络中开始传递。
数据封装解封装的过程
https://www.zhihu.com/answer/2634307664
数据封装的过程
数据的封装过程为:原始数据→数据段→数据包→数据帧→比特流
- 应用层:原始数据被转换成二进制数据
- 传输层:数据被打上传输层头部比如TCP头部,封装成Segment 数据段。此步关键信息是端口号。
- 网络层:会给数据打上IP头部,封装成Packet数据包,此步关键信息是源目ip地址。
- 数据链路层 :会给数据打上帧头部,封装成Frame数据帧,头部中关键信息是源目MAC地址。
- 物理层:在网线或者光纤上将二进制数据封装成高低电频信号或者光信号。
- 数据帧最终在物理层上(双绞线、光纤跳线)上以电信号或光信号进行传播转发。
- 这种协议栈逐层向下传递数据,并添加报头和报尾的过程称为封装
数据解封装的过程:
数据的解封装过程为:比特流→数据帧→数据包→数据段→原始数据
- 物理层:将数据转换成二进制数据,然后将数据送到数据链路层。
- 数据链路层:先查看MAC地址,是自己的MAC地址就会保留,不是就会丢弃。然后再将数据帧的帧头去掉,校验type字段,查看上层(网络层)使用的是何种协议。再将数据发送到网络层。
- 网络层: 先查看IP地址,是自己的ip地址就会保留,不是就会丢弃。然后再去掉ip头部,校验协议号Portocol,查看上层(传输层)使用的是何种协议,再将数据发送到传输层。
- 传输层:校验端口号,然后再给到应用层。
- 应用层:将二进制数据转换为原始数据。
每层添加的头部信息都包含了源目端口号、源目IP地址、源目MAC地址。所以在解封装的过程中提到:查看MAC地址与IP地址是否是自己的,实际上查看的就是添加的头部信息中的目的端口号、目的IP地址、目的MAC地址。
PDU协议数据单元
应用层 PDU数据
传输层 PDU数据段
网络层 PDU数据包
数据链路层 PDU数据帧
MAC地址组成部分:1、OUI;2、ser序列号
MAC地址一共48bit,6个字节 ——一个字节=8bit,采用16进制,所以会存在字母A-F(MAC地址是不会出现大于F的)
TCP/IP常见协议
应用层:Telnet FTP SMTP(25) SNMP HTTP DNS DHCP
传输层:TCP UDP
网络层:IP ICMP IGMP
数据链路层: PPPoE PPP Ethernet