《学习笔记59》—— # 网络原理 # OSI参考模型和TCP/IP协议栈

TCP/IP协议栈

1. OSI (Open System Interconnection)七层参考模型

背景:

​ 世界上第一个网络体系结构是由IBM公司在1974年提出的SNA(System Network Architecture),中文译名为系统网络体系结构。SNA的缺点是若采用IBM的网络体系,就只能选用IBM的产品,不同体系的网络结构之间是无法进行互联通信的

​ 因此,国际标准化组织ISO于1977年成立委员会,提出了不基于具体机型、操作系统或公司的网络体系结构OSI(Open System Interconnection),称为开放系统互联模型。

​ OSI上三层的任务是数据处理(称为资源子网),下三层的任务是数据通信(称为通信子网),而中间的传输层是通信子网和资源子网的接口,起到承上启下的作用。

img

1.1 应用层(Application Layer)

介绍:

​ 应用层是OSI参考模型的最高层,它是计算机用户、以及各种应用程序和网络间的接口。其主要功能是直接向用户提供服务,完成用户希望在网络上完成的各种工作

​ 应用层为用户提供的服务和协议有:文件服务、目录服务、文件传输服务(FTP)、远程登录服务(Telnet)、电子邮件服务(E-mail)、打印服务等。

主要功能:

  • 用户接口:应用层是用户与网络,以及应用程序与网络间的直接接口,使得用户能够与网络进行交互式联系。

主要协议:

  • HTTP( Hypertext Transfer Protocol,超文本传输协议 )
  • FTP( File Transfer Protocol,文件传输协议 )

1.2 表示层(Presentation Layer)

介绍:

​ 表示层是OSI模型的第六层,它对来自应用层的命令和数据进行解释,对各种语法赋予相应的含义,并按照一定的格式传送给会话层。

主要功能:

  • 数据格式处理:协商和建立数据交换的格式,解决各应用程序之间在数据格式表示上的差异。主要是进行数据的编码和解码。
  • 压缩和解压缩:为了减少数据的传输量,表示层还负责数据的压缩与恢复。
  • 数据的加密与解密:为了提高网络的安全性。

1.3 会话层(Session Layer)

介绍:

​ 会话层是OSI模型的第五层,是用户应用程序和网络之间的接口,主要任务是向两个实体的表示层提供建立和使用连接的方法。将不同实体之间的表示层连接称为会话。因此会话层的任务就是创建、管理和终止会话

​ 当建立对话时,用户必须提供他们想要连接的远程地址(此地址不同于逻辑地址和物理地址),是为用户专门设计的,例如域名(Domain Name)就是一种网络上使用的远程地址。

主要功能:

  • 会话管理
  • 会话流量控制
  • 寻址:使用远程地址建立会话连接。
  • 出错控制:检查磁盘空间、打印机缺纸等类型的高级错误,而不是通信介质的错误。

主要协议:

  • SSL( Secure Sockets Layer,安全套接字协议 )
  • TLS( Transport Layer Security,传输层安全性协议 )

1.4 传输层(Transport Layer)

介绍:

​ 传输层位于OSI模型的第四层,该层是通信子网和资源子网的接口,起到承上启下的作用。

​ 该层常见的协议有:TCP/IP协议中的TCP( Transmission Control Protocol )协议、微软的NetBIOS/NetBEUI协议等。

​ 传输层提供会话层和网络层之间的传输服务,这种服务从会话层中获得数据,并在必要时,对数据进行分割。然后,传输层将数据传递到网络层,并确保数据能够正确无误地传送到网络层。

​ 因此,传输层负责提供两节点之间数据的可靠传送,当两节点的联系确定后,传输层负责监督工作。

主要功能:

  • 传输连接管理:传输层在网络层的基础上为上层提供“面向连接(TCP)”和“面向无连接(UDP)”的两种服务。
  • 处理传输差错
  • 监控服务质量

主要协议:

  • TCP( Transmission Control Protocol,传输控制协议 )
  • UDP( User Datagram Protocol,用户数据报协议 )

1.5 网络层(Network Layer)

介绍:

​ 网络层是OSI模型的第三层,它是OSI参考模型中最复杂的一层,也是通信子网的最高一层。它在下两层的基础上向资源子网提供服务

主要功能:

  • 寻址:数据链路层中使用的是物理地址(如MAC地址),仅解决网络内部的寻址问题。在不同子网之间通信时,为了识别和找到网络中的设备,每一个子网中的设备都会被分配一个唯一的地址,该地址应当是逻辑地址,如IP地址。
  • 交换
  • 路由服务
  • 连接服务

IP地址的补充说明:

​ IP地址,即互联网地址或逻辑地址,长度是32bit,表示方法为十进制,以" . “做分割,” . "可以把一个IP地址分割成四块。ip地址有分类概念,一般分为ABC三大类。

ip地址可以分为两个部分,分别是:

  • 网络部分:该ip属于哪一个网络(网段)

  • 主机部分

我们可以在cmd命令行中输入ping 域名nslookup 域名查看一个域名的IP地址:
在这里插入图片描述

同时我们可以通过域名或IP地址(逻辑地址)来访问网页。

我们可以在cmd命令行中输入tracert 域名来追踪IP地址:
在这里插入图片描述

可以通过https://qifu.baidu.com/?activeKey=SEARCH_IP这个网站来查询该IP地址:
在这里插入图片描述

主要协议:

1.6 数据链路层(Data Link Layer)

介绍:

​ 数据链路层是OSI参考模型的第二层,负责建立和管理节点间的链路。

​ 一般数据链路层是解决同一网络内节点之间的通信,而网络层主要解决不同子网间的通信

​ 数据链路层的具体工作是接收来自物理层的位流形式的数据,并封装成帧,传送到上一层;同样,也将上一层的数据帧拆装为位流形式的数据转发到物理层

该层通常又被分为介质访问控制(MAC)和逻辑链路控制(LLC)两个子层。

MAC子层的主要功能:

  • 解决共享型网络中多用户对信道竞争的问题
  • 完成网络介质的访问控制

LLC子层的主要功能:

  • 建立和维护网络连接
  • 执行差错校验
  • 流量控制和链路控制

我们可以通过cmd命令行中的ipconfig来查看本地的IP地址:
在这里插入图片描述

我们可以通过cmd命令行中的ipconfig /all来查看MAC地址(物理地址):
在这里插入图片描述

在同网络、局域网通信的时候,我们使用的是mac地址。

主要协议:

1.7 物理层(Physical Layer)

介绍:

​ 物理层是OSI参考模型中的最底层,也是第一层。

主要功能:

  • 利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。

2. TCP/IP 协议栈

背景:

​ Internet的前身叫做ARPANET,阿帕网当时使用的是网络控制协议(Network Control Protocol, NCP)。NCP的缺点是仅能用于同构环境中(同构环境是网络上的所有计算机都运行相同的操作系统)。

​ 因此,在1980年,用于“异构”环境的网络环境中的TCP/IP协议研制成功。后来,互联网通信的各类协议(HTTP、IP、DNS、TCP、ARP)整体都被纳入这一协议体系中,被统称为“TCP/IP协议族”。

介绍:

​ TCP/IP协议栈是一系列网络协议的总和,它定义了电子设备如何接入互联网、以及数据间如何传输。TCP/IP协议采用4层结构:应用层、传输层、互联网络层和网络接口层。

img

2.1 网络接口层

介绍:

​ 以太网规定一组电信号就是一个数据包,一个数据包被称为一帧,制定这个规则的协议就是以太网协议。

一个完整的以太网数据包如下:

首部(14个字节)数据(46 —— 1500个字节)尾部(4个字节)
  • 首部包含了目标MAC地址、源MAC地址和类型
  • 如果需要传输的数据超过1500个字节.,则需要分割成多个帧进行发送
  • 尾部表示数据帧校验序列,用于确定数据包在传输过程中是否损坏

MAC地址拓展:

​ MAC地址是每块网卡的身份标识,具有全球唯一性。MAC地址采用十六进制标识,共6个字节,前三个标识厂商编号,后三个表示网卡流水号。

以太网(ethernet ),可以理解为是一个局域网,局域网的标准我们称为以太网标准,以太网标准汇总定义了通信的地址和通信机制。

mac地址表示方法:

​ 十六进制,总长度是48个bit,一般通过:进行分割,分割乘六个部分,其中前三个部分(24位)表示的是厂商号码,后三个部分(24位)是厂商分配的。

下图为在MAC地址中通信的原理:
在这里插入图片描述

图一:数据包在以太网中传输

2.2 互联网络层

介绍:

​ 网络层引入三个协议,分别是IP协议、ARP协议和路由协议。

2.2.1 IP协议

疑问:

​ 发送者如何判断接收者和自己属于同一子网内?

​ 为解决这一问题,我们引入了IP协议,区分两台主机是否同属于一个网络。

​ IP地址目前有两个版本,分别是IPv4和IPv6。

  • IPv4是一个32位的地址,常采用4个十进制数字表示。IP协议将这个32位地址分为两个部分:网络地址部分和主机地址部分。如果两个IP地址在同一个子网内,则网络地址一定相同。
    为了判断IP地址中的网络地址,IP协议引入了子网掩码,IP地址和子网掩码通过按位与运算后可以得到网络地址。
2.2.2 ARP协议

疑问:

​ 发送者如何知道接收者的MAC地址?

​ 为了解决这一问题,我们引入了ARP协议,即地址解析协议。

下图为ARP的工作原理图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QV85YVio-1622894406607)(C:\Users\hehao\AppData\Roaming\Typora\typora-user-images\image-20210602183429465.png)]

图一:发送ARP请求
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210605200413304.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81MzgwMTEzMQ==,size_16,color_FFFFFF,t_70#pic_center)
图二:发返回ARP请求

其工作原理如下:

  • ARP首先会发起一个请求数据包,数据包的首部包含了目标主机的IP地址

  • 然后这个数据包会在链路层进行再次包装,生成以太数据包,最终由以太网广播给子网内的所有子机

  • 每一台主机都会接收到这个数据包,并取出标头里的IP地址,然后和自己的IP地址进行比较,如果相同就返回自己的MAC地址,如果不同就丢弃该数据包

  • ARP接收返回消息,以此确定目标机的MAC地址

    ​ 在Windows系统下,我们在cmd输入arp -a就可以查询本机缓存的ARP数据。
    在这里插入图片描述

2.2.3 路由协议

疑问:

​ 如果接收者和自己不在同一子网内,数据包将如何发给对方?

​ 为了解决这一问题,我们引入路由协议。其工作原理如下:

  • 首先通过IP协议来判断两台主机是否在同一个子网内,如果在同一个子网内,就通过ARP协议查询对应的MAC地址
  • 如果不再同一个子网内,以太网会将该数据包转发给本子网的网关进行路由(网关是互联网上子网与子网之间的桥梁)
  • 网关会进行多次转发,最终将该数据包转发给目标IP所在的子网中
2.2.4 IP数据包(补充)

介绍:

​ 在网络层被包装的数据叫做IP数据包。IP数据包由首部和数据两部分组成。

​ 首部长度为20个字节,主要包含了目标IP地址和源IP地址,目标IP地址是网关路由的线索和依据;数据部分的最大长度为65515字节。

​ 理论上一个IP数据包的总长度可以达到65535个字节,而以太网数据包的最大长度为1500个字节,如果超过这个大小,就会对IP数据包进行分割,分成多帧发送。

首部(20个字节)数据(最大65515个字节)

2.3 传输层

背景:

​ 链路层定义了主机的身份,即MAC地址;而网络层定义了IP地址,明确了主机所在的网段,有了这两个地址,数据包就可以从一个主机发送到另一个主机上。

​ 但实际上数据包是从一个主机的某个应用程序发出,然后由对方主机的应用程序接收。而每台电脑都有可能同时运行着多个应用程序,所以当数据包被发送到主机上以后,是无法确定哪个应用程序要接收这个包的。

​ 因此传输层引入了UDP协议来解决这个问题。UDP协议给每个应用程序表示身份,定义了端口。这样,当数据包到达主机以后,就可以根据端口号找到对应的程序了。UDP定义的数据包就叫做UDP数据包。

​ UDP数据包结构如下:

首部(8个字节)数据(最大65527个字节)

UDP协议介绍:

​ UDP协议比较简单,实现容易,但它没有确认机制,数据包一旦发出,无法知道对方是否收到。

2.4 应用层

​ 理论上讲,有了以上三层协议的支持,数据已经可以从一个主机上的应用程序传输到另一台主机的应用程序了,但此时传过来的数据是字节流,不能很好的被程序识别,操作性差。因此,应用层定义了各种各样的协议来规范数据格式,常见的有 HTTP、FTP、SMTP 等。

主要功能:

  • 定义数据格式,并按照对应的格式解读数据

2.5 数据的封装和解封装

数据的封装:

  1. 用户信息转换为上层数据,以便在网络上传输,该阶段在应用层完成
  2. 数据在前面加上TCP头部,称为数据段,并在发送方和接收方建立一条可靠的连接,该阶段在传输层完成
  3. 数据段转化为数据包或数据报,并在报头中加入IP头部,这样每一个数据包都可以通过互联网络进行传输,该阶段在网络层完成
  4. 数据包或数据报在前面加上MAC头部,转换为数据帧,以便在本地网络中传输,该阶段在数据链路层完成
  5. 数据帧转换为比特流,该阶段在物理层完成

在这里插入图片描述

数据的解封装与数据的封装相反,这里不再一一赘述。

2.6 协议号和端口号

端口号:

​ 端口号是传输层的概念,用来表示应用层使用的是哪种服务或应用

协议号:

​ 协议号是网络层的概念,用来表示上层传输层使用的是哪种协议,比如协议号6表示传输层使用的是TCP协议,协议号17表示传输层使用的是UDP协议。

端口号的范围:0-65535

端口号的划分:

  • 0-1024为知名端口,一般开放在服务器上面

  • 常用的知名端口:

    • HTTP 超文本传输服务: TCP 80端口
    • HTTPS 加密的超文本传输服务:TCP 443端口
    • TELNET 终端仿真服务: TCP 23端口
    • 安全 Shell(SSH)服务: TCP 22端口
    • FTP 文件传输服务:TCP 21端口
    • DHCP 动态主机配置服务:UDP 用户端口 68 服务器 67
    • DNS 域名解析服务: UDP 53端口
  • 1025-65535为高端口,出现在客户端设备上面,一般是随机的用来表示上层传输层使用的是哪种协议,比如协议号6表示传输层使用的是TCP协议,协议号17表示传输层使用的是UDP协议。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Merrill He

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值