兰州企业 网站建设,五核网站建设,网站是什么平台,种子搜索引擎 磁力天堂#x1f94a;作者#xff1a;一只爱打拳的程序猿#xff0c;Java领域新星创作者#xff0c;CSDN、阿里云社区优质创作者。 #x1f93c;专栏收录于#xff1a;计算机网络原理 本期讲解协议、OSI七层模型、TCP/IP五层模型、网络设备所在的分层、数据的封装和分佣。 目录
… 作者一只爱打拳的程序猿Java领域新星创作者CSDN、阿里云社区优质创作者。 专栏收录于计算机网络原理 本期讲解协议、OSI七层模型、TCP/IP五层模型、网络设备所在的分层、数据的封装和分佣。 目录
1. 什么要有协议
2. 协议的分层
2.1 协议分层的好处
3. OSI七层模型
4. TCP/IP协议五层模型
5、网络设备所在分层
6、封装和分用
6.1 封装
6.1 分用 1. 什么要有协议
假如网络通信过程中我给别人发一条信息“你吃饭了吗紧接着发了一个动图表情包。有一个问题接收者是如何区分我发的是文字还是图片呢
我们知道数据传输的过程是通过 0和1 这样的二进制数据进行发送的。那么发送者和接受者如何区分传输的 0和1 二进制数据是关于文字的还是图片的呢因此我们可以通过协议来规定相应的格式。 2. 协议的分层
TCP/IP协议分层模型有TCP/IP四层模型、TCP/IP五层模型、OSI七层模型。 对于我们程序猿来说我们需要搞懂 TCP/IP五层协议 中的前四种协议即可。因为物理层主要是一些传输介质网线等类似于电脑的硬件部分我们软件开发无需深入了解。
网络编程是通过应用层进行的因此我们在后期 网络编程 的学习中把应用层的一些规范与使用深入学习即可而其他层我们只需要了解它们是什么就足够了。 2.1 协议分层的好处
分层最大的好处类似于面向接口编程定义好两层间的接口规范让双方遵循这个规范来对接。 调用方当调用方使用这些接口时候不关心接口具体是怎么实现的。 提供方提供方利用封装的特性隐藏了协议实现的细节只需要开放接口即可。 3. OSI七层模型
OSI即Open System Interconnection开放系统互连。它分为物理层、数据链路层、网络层、传输层、会话层、表示层、应用层由低到高。 应用层针对特定引用的协议。 表示层设备固有数据格式和网络标准数据格式的转换。 会话层通信管理负责建立和断开通信连接管理传输层以下的分层。 传输层管理两个节点之间的数据传输负责可靠的数据传输。 网络层地址管理与路由选择。 数据链路层互联设备之间传送和识别数据帧。 物理层传输 0、1 这样的代表高低电平数据通过特定的传输介质来传输。 OSI七层模型是教科书级别的。我们作为一名程序猿只需要掌握TCP/IP五层协议即可。 4. TCP/IP协议五层模型
作为一名程序猿对于TCP/IP五层协议应掌握应用层和熟悉传输层特别是以下两层对应协议 应用层HTTP协议、FTP协议、SMTP协议和POP3协议等。这些协议是应用程序与网络的接口程序猿需要了解其通信过程和数据格式从而编写适合的程序进行数据交互。传输层TCP和UDP协议。TCP协议可确保传输的数据完整性和顺序性使用范围较广UDP协议传输速度更快但无法保证数据的完整性和顺序性。 应用层负责程序之间的沟通简单的电子邮件传输SMTP、文件传输协议FTP、网络远程访问协议等Telent等。我们程序员网络编程就是针对应用层来进行的。
传输层负责两台主机之间的数据传输。如传输控制协议 (TCP)能够确保数据可靠的从源主机发
送到目标主机。
网络层负责地址管理和路由选择。例如在IP协议中通过IP地址来标识一台主机并通过路由表
的方式规划出两台主机之间的数据传输的线路路由。路由器Router工作在网路层。
数据链路层负责设备之间的数据帧的传送和识别。例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作。有以太网、令牌环网无线LAN等标准。交换机Switch工作在数据链路层。
物理层负责光/电信号的传递方式。比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等。集线器Hub工作在物理层。 举例说明我在网上买一个物品需要卖家信息源IP地址、我的信息目的IP地址。物流协议要历经广州长沙武汉。运输路径可以是空运广州直达武汉、慢达广州、长沙、武汉。
应用层告诉快递站卖家要快递给我的货物是什么根据货物的类型好用相应的包装发送。 应用层负责程序之间的沟通规定使用的格式。 传输层我和卖家都不关注中间是怎么传输的只关心起点和终点对应的就是源IP地址与目的IP地址。 传输层主要关注源IP地址与目的IP地址不考虑中间路径。 网络层发货地址是长沙收获地址是武汉。长沙到武汉可以空运、火车网络层可选择合适的路径进行运输。 网络层主要负责两个遥远节点之间的路径规划。 数据链路层运输路径选择了慢达广州到长沙使用的是货车长沙再到武汉使用的火车。 数据链路层主要负责两个相邻节点之间的传输。 物理层网络通信的基础设施也就是一些网线、光纤、网络接口也就是网络上的告诉公路。 5、网络设备所在分层
何为网络设备就是联网所需要的设备如电脑主机、路由器、交换机、集线器等。 主机主机它的操作系统内核实现了从传输层到物理层的内容对应的TCP/IP五层模型的下四层即传输层、网络层、数据链路层、物理层。 路由器 路由器它实现了从网络层到物理层对应的是TCP/IP五层模型的下三层即网络层、数据链路层、物理层。 交换机交换机它实现从了从数据链路层到物理层对应的是TCP/IP五层模型的下两层。 集线器集线器只实现了物理层。 我们日常生活中所说的交换机也称为 二层交换机 工作在 TCP/IP五层模型中的下两层数据链路层、物理层。
路由器也称为 三层路由器 工作在 TCP/IP五层模型中的下三层网络层、数据链路层、物理层。 6、封装和分用
在协议被分层好的情况下数据是怎样通过网络传输的的呢答案是通过封装和分用。 发送方发送数据要把数据从上到下依次交给对应层次的协议进行封装。 接收方收到数据要把数据从下到上依次也交给对应层次的协议进行分用解封装。 假设我给张三发一条信息“你吃饭了吗”。模拟这条信息在各个层次进行封装与分用的效果。 6.1 封装
1 应用层
应用层拿到“你吃饭了吗”这条信息进行封装封装成应用层数据包。一个应用层数据包大概分为发送方接收方时间发送内容这四个模块。 当然以上的信息会变成一个字符串。通过 号进行连接。如1234;6698;2023061510503;你吃饭了吗?分别对应的是发送方、接收方、时间、发送内容 。真实开发中这些数据包可能封装得更难在此大家理解即可。 2 传输层
传输层在拿到应用层的数据包后把该数据包再次封装成传输层对应的数据包。传输层对应的协议比较多最典型的是 TCP 和 UDP。
在本篇博文中以 UDP 协议为例UDP 会提供一个 UDP 数据报头里面包含源端口和目的端口。源端口即发送方程序的端口号目的端口即接收方程序的端口号。 本质上加上了UDP数据报头也相当于字符串拼接。 3网络层
传输层已经把数据封装成带有 UDP 数据报头的数据包了接下来网络层就要把数据包加上 IP 协议报头。 源IP地址就是表示这次传输过程中的起点目的IP就是表示这次传输过程中的终点。加上了 IP 协议报头也是通过字符串拼接的。 4数据链路层
网络层把数据包交给数据链路层此时会用到以太网帧此时涉及到mac地址。mac地址也叫做物理地址描述的是主要在网络中的位置跟IP地址很像但比IP地址更详细。
IP地址是两个较远节点之间交互mac地址是相邻节点之间交互。在本文 4. TCP/IP协议五层模型中有详细介绍。 注意以太网帧分为帧头和帧尾目前我们只需要掌握帧头即可。帧头包括源mac地址和目的mac地址。mac地址是和网卡进行绑定的每个设备都会有一个唯一标识的 mac 地址理论上。 5物理层
物理层在接受到上层以太网的数据帧后就把数据包所拼接的字符串 0和1 这样的二进制数据转换为光信号/电信号等信号进行传输了。 6.1 分用
通过上述讲解我们知道了封装是从应用层到物理层而分用恰好相反从物理层到应用层。
1物理层
把光信号/电信号进行解析还原成 0和1 的二进制序列。交给数据链路层。 2数据链路层
把得到 0和1 二进制序列当作一个以太网帧。把以太网帧头、帧尾去掉得到中间的载荷再往上把数据包交给网络层。 以太网数据帧头有一个消息类型根据这个类型网络层就能知道数据包开头是IP协议了。 3网络层
网络层得到数据包后也是进行去IP报头以及取出剩余载荷把数据包上传给传输层。 IP报头也有一个消息类型标识当前数据包对应的是传输层的哪个协议。 4传输层
传输层得到是 UDP 报头因此去掉 UDP 报头得到载荷把数据包传给应用层。
传输层会标识端口号这样应用层就能区分程序所在位置。 5应用层
最后应用层的工作就是把数据包放到对应的程序当中。取出数据包中的信息显示在界面中。 注意 不同的协议层对数据包有不同的称谓在传输层叫做段(segment)在网络层叫做数据报(datagram)在链路层叫做帧(frame)。应用层数据通过协议栈发到网络上时每层协议都要加上一个数据首部(header)称为封装(Encapsulation)。首部信息中包含了一些类似于首部有多长载荷(payload)有多长上层协议是什么等信息。数据封装成帧后发到传输介质上到达目的主机后每层协议再剥掉相应的首部根据首部中的 上层协议字段 将数据交给对应的上层协议处理。 关于封装和分用在程序上实际各层就是把数据用字符串拼接的方式进行传输。在现实传输中更为复杂涉及到模电以及物理相关知识。在我们程序猿的眼中知道知道传输的过程大致是什么样即可。 本编博文到这里就结束了感谢点赞、评论、收藏、关注~