网络开发很重要,但是学起来,并不好学。主要原因有三个。一个是:知识点比较琐碎繁杂,场景难以实施呈现。另外一个是:网络开发往往涉及到多个终端,而不同的终端可能需要运行在不同的计算机环境中,这让系统架构变得困难,开发量增加。最后一个就是动态性能问题,网络环境受软硬件,访问量等各种因素影响,相对来说无法确定系统的实际允许结果。但是,掌握网络开发却是一件十分有意思的事情
文章目录
- 一、什么是协议?
- 二、两种分层体系模型
- 三、数据组织与传输
- 四、TCP四层模型
- 五、网络层机制
- 六、ARP协议与主机之间的通信
一、什么是协议?
协议(Protocol)是一组规则、约定或标准,它们定义了计算机网络中不同设备或程序之间交换数据的方式。这些规则确保了数据能够在网路中以一致和可预测的方式被发送、接收和解释。
- 敲定一种组织数据和传输数据的方式,然后,大家都认可和使用这种方式。这就是协议。
- 生活中的各种公认的规则都可以被看作是一种协议,例如:红绿灯信号、信件邮递、摩斯密码等。对于同台设备上的进程通信,有如管道、消息队列、共享内存、信号等方式,而对于不同设备上的进程间通信,就需要网络通信,由于设备是多样性的,所以要兼容多种多样的设备,就协商出了各种通用的网络协议。通过这些协议来保障数据的有效传输。
- 简单来说,在网路环境中,要组织数据,第一一部就是要确定数据交换的协议。然后我们从A主机按照敲定的协议组织数据,然后将组织好的数据传送给主机B,然后B主机按照同样的协议解析数据。从而完成AB主机之间的数据交换。
二、两种分层体系模型
OSI(Open Systems Interconnection Reference Model,开放系统互联基本参考模型),又称七层网络模型。
- 分层有什么好处?
- 分层隔离
- 灵活性好
- 易于实现和维护
- 促进标准化工作
层级 | 层名 | 作用 | 主要功能 |
---|---|---|---|
第七层 | 应用层 | 提供网络服务和硬要用协议,与用户直接交互 | -网络服务(如HTTP、FTP、SMTP)、应用协议、用户接口 |
第六层 | 表示层 | 负责数据格式化和转换,确保不同系统间数据能正确解释 | 数据交换、数据加密、数据压缩 |
第五层 | 会话层 | 管理会话的建立、维护和终止,提供同步与恢复功能 | 会话管理、同步、对话控制 |
第四层 | 传输层 | 提供端到端的可靠数据传输,确保数据完整性。 | 端口管理、流量控制、错误校正(如TCP)、分段与重组 |
第三层 | 网络层 | 负责路由选择和网络间的通信,确保数据报到达目的地。 | 路由选择、逻辑地址(IP地址)、分段与重组 |
第二层 | 数据链路层 | 提供可靠的节点间数据传输,处理错误检测与纠正。 | 帧同步、流量控制、错误检测与纠正、MAC地址 |
第一层 | 物理层 | 定义物理和电气特性,传输比特流 | 比特流传输、传输介质(如铜线、光纤)、物理接口(如RJ45) |
三、数据组织与传输
当一段数据data从A主机传输到B主机时,中间的过程涉及多个步骤和协议层,这些步骤共同确保了数据能够准确、可靠地传输。
以下是数据从A主机传输到B主机的主要过程:
- 应用层处理
·数据封装:在A主机的应用层,数据data首先被封装成应用层协议可以理解的格式,比如HTTP请求中的消息体。
·发起请求:应用层软件(如Web浏览器、FTP客户端等)通过调用操作系统提供的接口,向传输层发起数据传输请求。 - 传输层梳理
·选择协议:根据应用需求选择合适的传输层协议,如:TCP(面向连接的可靠传输)或UDP(无连接的不可靠传输)。对于大多数需要确保数据完整性和顺序的传输,TCP是更常见的选择。
·建立连接(TCP):如果使用TCP协议,A主机和B主机之间会首先建立一条TCP连接。这涉及三次握手过程,以确保双方都已准备好进行数据传输。
·数据分段与封装:TCP将应用层数据data分割成多个较小的段(segment),并为每个段添加TCP头部信息,包括序列号、确认号、窗口大小等,以便实现可靠传输。 - 网络层处理
·IP封装:在网络层,TCP段被封装成IP数据段(datagram),并添加IP头部信息,包括源IP地址、目的IP地址、生存时间(TTL)等。
·路由选择:网络层根据IP地址和路由表信息,决定数据报从A主机到B主机的最佳路径。数据报可能经过一个或多个路由器进行转发。 - 数据链路层处理
·帧封装:在数据链路层,IP数据报被封装成帧(frame),并添加帧头部和尾部信息,包括源MAV地址、目的MAC地址、帧类型等。
·物理传输:帧通过物理介质(如以太网电缆、光纤等)从A主机的网络接口传输到网络中的i第一个路由器或交换机。 - 传输过程中的处理
·路由转发:在传输过程中,每个路由器或交换机都会检查帧的目的MAC地址,并决定是否需要转发该帧。如果需要转发,路由器会根据路由表信息更新帧的MAC地址,并通过适当的接口将帧发送到下一个网络段。
·错误检测与纠正:在数据链路层和网络层,都会使用各种技术(如CRC校验)来检测传输过程中可能出现的错误。如果发现错误,可能会请求重发或丢弃错误的数据。 - 到达B主机
·数据接收:当数据帧到达B主机的网络接口时,它被接收并逐层向上传递。
·解封装与重组:在数据链路层和网络层,帧和IP数据报被解封装,还原出原始的TCP段。在传输层,TCP段被重新组合成原始的应用数据data。
·应用层处理:最后,应用层软件(Web服务器、FTP服务器等)接收并处理数据data。
四、TCP四层模型
对比OSI模型与TCP/IP模型:
- OSI模型的七层架构:(物理层、数据链路层、网络层、传输层、会话层、表示层、应用层)
- TCP/IP模型的四层架构:(网络接口层、互联网曾、传输层、应用层)
TCP四层层次和相应的协议
- 每一层的功能及其对应的协议
- 数据链路层的工作机制
数据链路层的主要任务是提供节点到节点之间可靠的数据传输
它通过将网路层传来的数据封装成帧(Frame)来实现,这些帧通过物理介质在局域网中传输。
常见的数据链路层协议是以太网协议(Ethernet)。
·帧的封装:在数据链路层,网络层的数据报(如IP包)被封装成数据帧。帧通常包含以下几个部分:
·帧头(Header):包括源MAC地址、目标MAC地址、帧类型/长度等信息。 ·数据部分(Payload):包含要传输的IP数据包 ·帧校验序列(ECS Frame Check Sequence):用于检测数据在传输过程中是否发生错误。
·CSMA/CD机制(以太网有线网络):
·载波监听多路访问/碰撞检测(CSMA/CD,Carrier Sense Multiple Access with Collsion Detection)是经典的以太网机制,用于检测和处理数据帧的冲突。
·当一个网络设备准备发送数据时,它首先监听网络介质。如果介质空闲,设备就开始发送数据;如果检测到数据冲突(如两个设备同时发送数据),设备会停止发送,等待一个随机的时间段再重试。
MAC地址的使用:MAC地址是硬件地址,是每个网络设备的唯一标识符。数据链路层使用MAC地址来确定数据帧的发送方和接收方。
- MAC数据帧的封包格式(以太网)
- IP层到MAC层的数据封装
1.IP数据报:在图的最上方,我们可以看到一个IP数据报,这就是来自IP层的数据包,包含了网络层的目的地址和源地址
2.MAC帧结构:
·目的地址(6字节):目标设备的MAC地址,用于标识数据包的接收者。
·源地址(6字节):源设备的MAC地址,用于标识数据包的发送者
·类型/长度字段(2字节):标识上层协议类型(如IPV4或IPV6)或标识数据长度
·数据字段(46~1500字节):实际传输的数据部分,这里承载的是IP数据报
·帧校验序列(FCS)(4字节):用于检验帧在传输过程中是否出错。
46·1500个字节,46是因为以太网MAC帧长不能小于64字节,1500是因为以太网的最大传输单元(MTU)是1500字节。
- MAC层到物理层的数据封装
·前同步码(7字节):以太网帧的前导部分,用于接收方的同步,帮助它识别帧的开始。通常由一组交换的1和0组成,例如:10101010…
·帧开始定界符(SFD,Start Frame Delimiter)(1字节):紧随前同步码之后,用于标识帧的正式开始。通常是固定的字节(10101011),与前同步码的最后一个字节不同。
8个字节,前7个都是10101010,最后一个是10101011;前7个字节用故意“唤醒”接收适配器,并将它们的时钟和发送方的时钟同步。第8个字节的最后两个比特(即两个“1”)警告接收适配器重要的内容要来了。
- 物理层上的表示
·物理层表示(浅粉部分)
数据在物理层上表示为一系列的比特流(0和1),这些比特流通过电信号或光信号在网络介质(如双绞线、光纤或无线电波)上传输。 - MAC地址的结构
MAC地址可以分为两部分:
·前24位(3字节):组织唯一标识符(OUI,Organizationally Unique Identify),由IEEE分配给设备制造商,例如:00:1A:2B
·后24位(3字节):设备标识符(NIC Specific),由制造商自行分配,确保在其生产的设备中唯一。例如:3C:4D:5E
一个示例的MAC地址:00:1A:2B:3C:4D:5E.
五、网络层机制
- 网络层的功能
网络层是位于传输层和数据链路层之间的一个关键层。它的主要任务是负责在不同主机之间传输数据包,提供路由选择和逻辑地址的管理。在这层上工作的主要协议是IP协议。
其主要功能包括:
1.路径选择(Rounting):负责根据目标地址选择数据包的传输路径
2.数据转发(Forwarding):将数据包从一台路由器转发到下一台路由器,直至到达目的地。
3.逻辑地址管理(Logical Addressing):通过IP地址来标识网络中的每一台设备,确保数据能够到达正确的目的地。
4.分片与重组(Fragmentation and Reassembly):在网络层可以将大数据包分割成更小的数据包(分片),然后再目的地重新组装。
网络层是无连接的,也就是说,在发送数据包前,它不会为每一个通信会话建立连接,数据包的发送是独立的,且无状态的。每一个数据包都单独寻址和处理,这也就是为什么网络层的通信被称为“尽力而为”的服务。
- IP协议
- IP数据报的结构
六、ARP协议与主机之间的通信
- 什么是ARP协议?
ARP(地址解析协议,Address Resolution Protocol)是一种用于再网络中将IP地址转换为MAC地址的协议。它属于TCP/IP协议栈中的网络层协议,通常在局域网(LAN)环境下使用,以确保IP数据包能够在以太网等网络中成功传输。 - ARP的工作原理
1.ARP请求(ARP Request)
···当一台主机(例如主机A)想要与同一局域网中的另一台主机(例如主机B)通信时,主机A需要知道主机B的MAC地址。如果主机A只知道主机B的IP地址(例如192.168.1.5),但不知道B的MAC地址,它就会通过广播发送一个ARP请求。
···这个ARP请求数据包的目的时:询问“谁是IP地址192.168.1.5的主机?”请告诉我你的MAC地址,此数据包的目标MAC地址是(FF:FF:FF:FF:FF),表示所有网络中的设备都会接收这个请求。
2.ARP应答(ARP Replyy):
···网络中的所有设备接收到ARP请求后,只有拥有目标IP地址(即192.168.1.5)的设备(主机B)会响应。主机B会发送一个ARP应答数据包给主机A,其中包含了B的MAC地址。
···这个ARP应答是单播发送的,其目标MAC地址是主机A的MAC地址。
3.缓存结果:
···一旦主机A接收到主机B的ARP应答,它会将B的IP地址和对应的MAC地址存储在它的ARP缓存中,以备将来使用。这样,主机A无需每次都发送ARP请求来查找B的MAC地址。
···ARP缓存会定期更新或清除,以确保网络中的设备的信息都是最新的。
3.ARP的协议包
ARP包头格式
ARP数据包的格式定义了在ARP请求和应答中使用的字段。典型的ARP包头格式如下:
字段名 | 大小(字节) | 描述 |
---|---|---|
硬件类型(Hardware Type,HTYPE) | 2 | 指定网络的类型,1表示以太网 |
协议类型(Protocol Type,PTYPE) | 2 | 指定要映射的协议地址类型,0x0800表示IPv4 |
硬件地址长度(Hardware Address Length,HLEN) | 1 | 硬件地址长度(MAC地址为6) |
协议地址长度(Protocol Address Length,PLEN) | 1 | 协议地址长度(IPv4地址为4) |
操作(Operation,OPER) | 2 | 指定操作类型:1为ARP请求,2为ARP应答 |
发送方MAC地址(Sender Hardware Address,SHA) | 6 | 发送方的MAC地址 |
发送方IP地址(Sender Protocol Address,SPA) | 4 | 发送方的IP地址 |
目标MAC地址(Target Hardware Address) | 6 | 目标方的MAC地址(ARP请求中为空) |
目标IP地址(Target Protocol Address,TPA) | 4 | 目标方的IP地址 |
4.ARP请求和应答的示例
假设主机A(IP地址:192.168.1.2,MAC地址:AA:AA:AA:AA:AA:AA)想要知道主机B(IP地址:192.168.1.5)的MAC地址
5.广域网主机之间的通信流程
在广域网中(WAN)环境下,例如主机A在北京,主机B在上海的情况下,主机A不需要知道B主机的MAC地址,原因在于,ARP协议只在同一个局域网(LAN)中使用,用于解析IP地址到MAC地址的映射。而在广域网中,不同网段的设备之间的通信依赖于网络层的IP地址和路由器的转发机制。
·广域网通信的实际过程
总结