目录
网络协议
- 网络协议类似于人与人之间的沟通语言。
- 比如我们使用英语、中文或其他语言来沟通,而网络协议则是计算机、路由器和其他网络设备之间的“语言”。
- 这些协议规定了数据如何包装、传输、接收和解码。
- 举个例子:就像发一封邮件,发送者和接收者需要共同遵守一定的规则来写信、投递邮件、接收邮件以及读信。
- 类似地,在网络通信中,发送和接收数据也需要遵守协议规则。
前提
- OSI(Open Systems Interconnection,开放系统互联)模型是由国际标准化组织(ISO)提出的计算机网络通信模型
- 它将网络通信分为七个层次
- 从而帮助简化网络体系结构的理解。
- 每一层都有特定的功能,通过对网络数据进行封装与解封装,确保数据能够从发送端顺利到达接收端。
OSI七层模型的目的是为不同的计算机网络协议提供标准化框架,使得不同设备和系统能够互相兼容与通信。
OSI七层模型数据传递流程图
流程图结构
发送端(从上到下):应用层 → 表示层 → 会话层 → 传输层 → 网络层 → 数据链路层 → 物理层。
接收端(从下到上):物理层 → 数据链路层 → 网络层 → 传输层 → 会话层 → 表示层 → 应用层。
数据封装流程:每层为数据添加头部(Header)或尾部(Trailer),最终在物理层转换为比特流。
数据解封装流程:接收端逐层去除头部/尾部,恢复原始数据
OSI7层协议交互过程
发送端(封装) 接收端(解封装)
------------------------------- -------------------------------
[应用层] HTTP数据 [应用层] HTTP数据
↓ 添加TLS头部 ↑ 去除TLS头部
[表示层] 加密数据 [表示层] 解密数据
↓ 添加会话ID ↑ 验证会话ID
[会话层] 会话消息 [会话层] 会话消息
↓ 添加TCP头部 ↑ 去除TCP头部
[传输层] TCP段 [传输层] TCP段
↓ 添加IP头部 ↑ 去除IP头部
[网络层] IP包 [网络层] IP包
↓ 添加MAC头部+CRC尾部 ↑ 去除MAC头部+CRC校验
[数据链路层] 以太网帧 [数据链路层] 以太网帧
↓ 转换为比特流 ↑ 转换为数据帧
[物理层] 比特流 [物理层] 比特流
网络通信过程示意图
一个典型的网络通信过程示意图一般包括以下几个主要部分:
客户端 (Client):
- 发起请求的设备,通常是一个浏览器、移动应用或其他网络客户端。
DNS 解析 (DNS Lookup):
- 客户端通过域名解析系统 (DNS) 查找目标服务器的 IP 地址。
建立 TCP 连接 (TCP Handshake):
- 客户端通过三次握手(SYN → SYN-ACK → ACK)建立 TCP 连接。
SSL/TLS 握手 (SSL/TLS Handshake):
- 客户端与服务器之间通过 SSL/TLS 握手过程建立安全连接,包括证书交换、密钥协商等。
发送请求 (HTTP Request):
- 客户端通过加密的连接发送 HTTP 请求(例如:GET 请求)。
服务器处理 (Server Processing):
- 服务器接收到请求并处理,可能会访问数据库或其他资源来生成响应。
返回响应 (HTTP Response):
- 服务器返回 HTTP 响应,包括状态码、响应头和数据(例如:HTML 文件、JSON 等)。
关闭连接 (TCP Connection Termination):
- 客户端和服务器通过四次挥手(FIN → ACK → FIN → ACK)关闭 TCP 连接。
OSI七层模型分段解释
物理层解释:
主要作用:
- 物理层负责数据的实际物理传输,它通过电缆、光纤、无线信号等媒介,在计算机和其他网络设备之间传送原始的比特流(0和1)。物理层不关心数据的内容,它只是简单地将数据作为电信号或光信号进行传输。
- 解决信号转换的问题
- 光纤(光信号:光纤网卡可以将电信号转换为光信号)
主要协议/技术:
- 以太网(Ethernet):定义了如何通过电缆传输比特流的标准。以太网是局域网(LAN)中最常用的物理协议。
- Wi-Fi:无线局域网技术,用于通过无线信号传输数据。
- USB:常用于连接外围设备的协议,也涉及物理层的数据传输。
- DSL:数字用户线路,用于通过电话线路提供宽带网络连接。
举例:
- 当你用Wi-Fi连接手机上网时,物理层负责将数据转化为无线电波,并通过空中传输到路由器。
数据链路层
主要作用:
- 数据链路层负责确保物理传输过程中的数据可靠性。
- 它将数据从物理层接收到的比特流组织成“帧”,并提供错误检测和纠正功能。
- 此层的目标是确保在相邻节点之间的通信能够稳定传输数据。
- 每块网卡(有线、无线、蓝牙等)每块网卡出厂时都被烧制上一个世界唯一的mac地址
- 长度为48位2进制,通常由12位16进制数表示(前六位是厂商编号,后六位是流水线号)
- 通过mac地址就可以查询到它对应的厂商。
- 这个mac地址是入网许可证,没有mac地址,就不能上网。
主要协议:
- Ethernet:定义了数据包的封装格式,确保设备能够正确地将数据传输到其他设备。
- PPP(Point-to-Point Protocol):点对点协议,常用于通过拨号连接互联网。
- HDLC(High-Level Data Link Control):用于同步数据链路上的传输,确保数据的准确性。
- MAC(媒体访问控制):确保在多个设备共享同一物理媒介时,能够正确地管理数据的访问。
举例:
- 当你的电脑在局域网内向打印机发送数据时,数据链路层将把数据包封装成以太网帧
- 并附加源和目的MAC地址来确保数据正确到达目的地。
mac解决的问题:
mac地址主要是用来解决网络通信的目标问题的
可以让信号传输的时候找到正确的网卡,不会把数据发乱目标
网络层
主要作用:
- 网络层负责数据包的路由和转发,确保数据从源设备到目标设备能够通过不同的网络路径进行传输。
- 它还管理设备的逻辑地址(如IP地址)并负责路由选择。
网络层,主要是用来封装ip地址的,公网ip全世界唯一,私网ip(也叫做内网ip)。
ip地址主要用来做目标定位
公网ip地址有点像酒店地址
私有ip地址像酒店中的各个房间号
每个酒店可能都有这个房间号,但是每个酒店的具体位置肯定是不同的。
那么和mac地址有什么区别呢
mac地址有点像人的身份证号
但是我怎么找到这个人呢?
要先找到它的地址,这个地址就是ip地址。
所有人上网都需要一个公网ip地址。
世界上有个组织专门分配ip地址,这个组织叫做IANA,IANA(The Internet Assigned Numbers Authority,互联网数字分配机构),ip、域名等都归它来管理。
主要协议:
- IP(Internet Protocol):互联网协议,是最重要的网络层协议。它负责为数据包分配源和目的IP地址,并进行路由选择。
- IPv4:32位地址,广泛用于网络通信。
- IPv6:128位地址,解决了IPv4地址短缺的问题。
- ICMP(Internet Control Message Protocol):用于网络设备之间交换控制信息,常见于ping命令。
- ARP(Address Resolution Protocol):用于将IP地址解析为MAC地址,常在局域网内使用。
举例:
- 当你从浏览器输入网址访问网站时,网络层的IP协议会确保数据包从你的设备通过多台路由器转发到达目标网站的服务器。
传输层
主要作用:
- 传输层负责在源和目标设备之间提供端到端的通信。它确保数据的可靠传输,处理错误恢复、数据重传、流量控制等功能。传输层协议对应用层来说是透明的。
传输方式 tcp/udp,发送数据包的方式,比如发快递:空运、货车、火车等等。
tcp:
可靠的
网络传输要经过很多设备,或者信号不好收不到数据包
tcp发给你发送数据包比较大,那么可能会分多个数据包发送,单个数据包大小为1500B,大数据包拆分成多个小数据包,每个小数据包打上编号
每发送一个包都要和对方确认,对方只有告诉我收到了,才会继续发送,没收到的话就补发、再发,最终所有的数据包都发送完成之后,多个小数据包根据编号来组成大数据文件
因为要来回确认,所以慢
速度慢udp:
不可靠的(我就使劲儿给你发,不需要你确认,可能会丢包)
速度快,直播、视频等,局域网用的多一些,比如feiq、vnc等
主要协议:
- TCP(Transmission Control Protocol):一种面向连接的可靠协议,确保数据包按顺序到达目的地,支持错误检测和重传机制。
- UDP(User Datagram Protocol):一种无连接、不可靠的协议,适用于实时性要求高的应用,比如视频流、VoIP等。
- SCTP(Stream Control Transmission Protocol):提供可靠传输并支持多流复用,常用于电信网络。
举例:
- 当你下载一个文件时,传输层的TCP协议确保文件的每个数据包都能可靠地到达你的设备。如果有丢包,TCP会请求重新传输丢失的部分。
netstat -ano
netstat -lntup
会话层
主要作用:
- 会话层负责管理和控制通信中的会话。
- 它确保数据交换的同步,并管理会话的开始、保持和终止。它也支持会话恢复,确保中断后的会话能够继续。
- 会话层会发送一个探测数据包,探测双方网络是否能互通。
- 会话的建立和断开都是由这一层的数据控制的。
主要协议:
- NetBIOS(Network Basic Input Output System):提供网络通信的会话服务。
- RPC(Remote Procedure Call):允许程序调用远程计算机上的程序函数,支持远程会话管理。
- SMB(Server Message Block):常用于共享文件和打印服务的协议,负责会话的建立和维护。
举例:
- 在你使用远程桌面(RDP)连接到另一台计算机时,会话层管理你与远程计算机之间的会话,确保会话保持和恢复。
表示层
主要作用:
- 表示层负责数据的格式化、加密和解密、压缩和解压。它确保不同系统间的数据能够正确地理解和处理。
- 表示层也负责在数据传输前后进行加密,确保数据的安全性。
- 用来描述文件的类型,比如我们在网上发送了一个图片、文本、视频等等格式。
- 表示层会在发送的整体二进制数据前面加上文件类型数据标记。
- 数据加密、数据格式声明的数据都是在这一层。
主要协议:
- SSL/TLS:用于安全的互联网通信,提供数据加密和身份验证。
- JPEG、GIF、PNG:常见的图像文件格式标准。
- MPEG:视频数据的压缩标准。
- ASCII、EBCDIC:字符编码标准。
举例:
- 在你访问HTTPS网站时,表示层的SSL/TLS协议会加密你与服务器之间传输的数据,保证数据的机密性。
应用层
主要作用:
- 应用层是用户直接交互的层,负责提供各种网络应用服务。
- 它定义了程序如何通过网络进行通信,支持各种应用协议,如电子邮件、文件传输、网页浏览等。
- 就是我们各类应用软件了,qq、浏览器、微信、网易云等等。
- tcp/ip五层协议是用到额最广泛的,只要大家电脑上安装了这个协议,就可以基于这个协议来进行通信了。
- tcp/ip协议栈分为5层协议
- 应用层(会话层、表示层和应用层这三层合并为了一层)、传输层、网络层、数据链路层、物理层。
主要协议:
- HTTP(Hypertext Transfer Protocol):用于浏览器和Web服务器之间的通信,传输网页内容。
- FTP(File Transfer Protocol):用于在计算机之间传输文件。
- SMTP(Simple Mail Transfer Protocol):用于发送电子邮件。
- DNS(Domain Name System):用于将域名解析为IP地址。
举例:
- 当你在浏览器中访问网页时,应用层的HTTP协议负责请求和返回网页内容。
- 当你发送电子邮件时,SMTP协议会通过应用层管理邮件的发送过程。
MAC 地址(Media Access Control 地址)是计算机网络中用于唯一标识网络接口的硬件地址。它在局域网(LAN)中用于数据链路层的通信。MAC 地址在OSI模型中属于 数据链路层(Layer 2),而不是传输层或网络层。
MAC 地址的主要作用:
唯一标识网络接口:每个网络设备(如计算机、路由器、交换机等)都在其网络接口卡(NIC)上有一个唯一的MAC地址,用来标识设备。这个地址通常由设备制造商在生产时赋予,全球唯一。
局域网通信:在局域网中,当数据包从一台设备传输到另一台设备时,MAC 地址是确定目标设备的关键。设备通过 MAC 地址来识别目标设备。
帧封装与识别:在数据链路层,数据被封装成“帧”(Frame)。MAC 地址位于数据帧的头部,指示数据帧的来源和目的地。
数据如何通过 MAC 地址传递:
数据封装:应用层和传输层的数据(如 HTTP 请求或 TCP 数据包)首先传递到网络层,然后通过路由器等设备传递。路由器会将其交给数据链路层(也就是数据帧层),然后在数据帧头部附加源MAC地址和目标MAC地址。
广播与单播:在局域网中,设备通过 MAC 地址进行通信。以下是几种常见的方式:
- 单播(Unicast):这是最常见的方式,数据包会直接发送到目标设备的 MAC 地址。比如,一台计算机通过其网卡的 MAC 地址将数据包发往网络中的另一台计算机。
- 广播(Broadcast):如果数据包需要发送给局域网内所有设备(例如 ARP 请求),则会使用广播 MAC 地址(FF:FF:FF:FF:FF:FF),这样所有设备都会收到该数据包。
交换机与 MAC 地址表:在以太网局域网中,交换机根据每个设备的 MAC 地址来转发数据帧。交换机会维护一个 MAC 地址表,记录每个MAC地址对应的端口。当数据包到达交换机时,交换机会检查目标MAC地址,并将数据包发送到相应的端口。如果目标设备不在交换机的 MAC 地址表中,交换机会广播数据包。
MAC 地址与 OSI 七层模型:
- 数据链路层(Layer 2):MAC 地址是在 OSI 模型的第二层——数据链路层使用的。在这一层,数据帧会被生成并附加 MAC 地址,用于局域网内的设备之间的通信。
- 网络层(Layer 3):在更高层(网络层),使用的是 IP 地址来进行通信,而不是 MAC 地址。IP 地址决定了数据包的路由路径。
- OSI 模型层次:
- 第三层(网络层)使用 IP 地址。
- 第二层(数据链路层)使用 MAC 地址,确保数据包能够在局域网内找到正确的设备。
总结:
- 作用:MAC 地址用于在局域网内唯一标识设备,使设备能够通过数据链路层进行有效的通信。
- 数据传递:数据通过交换机、路由器等设备在网络中流转时,通过目标设备的 MAC 地址来确保正确传送。传输可以是单播或广播。
- OSI 位置:MAC 地址位于 OSI 七层模型中的第二层——数据链路层。
结合wireshark抓包(OSI5层协议)
应用层---》数据 ,比如5M的图片数据
传输层---》tcp报头+数据 tcp报头+小数据包1 、tcp报头+小数据包2 、tcp报头+小数据包3...
网络层---》ip包(ip地址)+tcp报头+数据1、ip包(ip地址)+tcp报头+数据2、ip包(ip地址)+tcp报头+数据3...数据链接层===》数据帧(mac地址)+ip包+tcp报头+数据1、数据帧(mac地址)+ip包+tcp报头+数据2、数
据帧(mac地址)+ip包+tcp报头+数据3...
物理层===》将完整的数据包,由二进制转换成电信号接收方正好反过来
传输层: tcp报头+小数据包1 、tcp报头+小数据包2 、tcp报头+小数据包3..收集起来,在网卡那里就收集好了,所以网卡是占用一部分内存空间的。
OSI七层与TCP/IP五层模型的对比
- OSI七层模型和TCP/IP五层模型是两种常见的网络协议模型,虽然它们在功能上有很多重叠,但在层数和结构上有所不同。以下是两者的对比:
OSI 七层模型 | TCP/IP 五层模型 | 主要差异 |
---|---|---|
物理层 (Physical Layer) | 网络接口层 (Network Interface Layer) | OSI模型和TCP/IP模型的物理层和数据链路层合并为TCP/IP的网络接口层 |
数据链路层 (Data Link Layer) | 合并到网络接口层中 | |
网络层 (Network Layer) | 网络层 (Network Layer) | 两者在这一层基本一致,负责路由和地址 |
传输层 (Transport Layer) | 传输层 (Transport Layer) | 相同,负责端到端的通信 |
会话层 (Session Layer) | 在TCP/IP模型中,传输层处理会话层的功能 | |
表示层 (Presentation Layer) | 在TCP/IP模型中,表示层的功能由应用层处理 | |
应用层 (Application Layer) | 应用层 (Application Layer) | 在TCP/IP模型中,OSI的会话层和表示层的功能被合并到应用层 |
总结
- OSI七层模型提供了网络协议的完整结构,每一层都负责不同的功能,从物理传输到应用层的交互。它有助于标准化和模块化网络通信。
- TCP/IP五层模型则是实际应用中更为常见的模型,它在层数上做了简化,将一些层合并以适应现代网络协议的实际需求。
喜欢本文的请动动小手点个赞,收藏一下,有问题请下方评论,转载请注明出处,并附有原文链接,谢谢!如有侵权,请及时联系。