想入门网络编程?——网络通信的基本概念
我们在接触网络编程的时候,如果还没有在大学缓慢的排课安排下学习那门传说中的“计算机网络”课的话,往往会由于难以理解各种专业名词而一头雾水,今天就让我们从网络通信的基本名词入手,来尝试入门网络编程吧:
目录
核心要素
节点(Node)
终端节点(End Node)
网络节点(Network Node)
混合节点
链路(Link)
物理链路
逻辑链路
拓扑结构(Topology)
总线型(Bus)
星形(Star)
环形(Ring)
网状(Mesh)
数据与信号
数据(Data)
信号(Signal)
协议(Protocol)
地址与标识
物理地址(MAC地址)
网络层的逻辑标识(IP地址)
IP地址与MAC地址的映射:ARP协议
端口号(Port Number)
数据传输的基本流程
应用层
传输层
网络层
网络接口层
网络通信的核心在于——让不同的设备之间能传递数据,且想要解决任何让数据从发送方安全、高效、准确地到达接收方
核心要素
节点(Node)
网络中参与数据传输或转发的实体(设备)
终端节点(End Node)
直接产生或消费数据的设备,核心功能是运行应用程序(如浏览器,微信等),并通过网络接口(网卡)接入网络
网络节点(Network Node)
负责数据转发的设备,如路由器(Router)、交换机(Swich)、网关(Gateway)、防火墙(Firewall)等,核心功能是解析数据中的地址信息,选择传输路径,实现不同子网或网络的互连
混合节点
部分设备兼具服务终端和网络节点的功能,如家庭无线路由器既作为终端接入网络,又作为网络节点转发手机电脑的数据
链路(Link)
连接两个节点的物理或逻辑通道,是数据传输的物理载体
物理链路
基于硬件的传输介质
如有线的双绞线(UTP),光纤(时候长距离传输)等
再如无线的无线电波(WiFi),微波(点对点远距离传输)等
逻辑链路
在物理链路上通过协议划分的虚拟通道,如VPN(基于 IPsec 协议在公网中建立的加密链路),VLAN(虚拟局域网,通过交换机划分的逻辑隔离链路)
链路有三个关键指标:带宽(Bandwidth:链路的最大数据传输速率),延迟(Latency:数据从发送方到接收方的时间),误码率(BER:传输中出错的比特数与总比特数的比值)
拓扑结构(Topology)
网络中节点与链路的几何排列方式,直接影响网络的可靠性、成本和性能
总线型(Bus)
所有节点连接到一条共享链路上(早期以太网),缺点是单链路故障会导致全网瘫痪
星形(Star)
所有节点通过链路连接到中心节点(交换机,路由器),优点是易于扩展和故障排查,是现代局域网的主流拓扑
环形(Ring)
节点首尾相连形成闭环(令牌环网),缺点是单节点故障会中断环路
网状(Mesh)
节点之间有多条冗余链路(互联网核心骨干网),优点是可靠性,但成本高
数据与信号
网络通信的核心是信息的传递,而信息必须通过“数据”和“信号”两个载体实现物理传输
数据(Data)
信息的数字化表示,是网络通信的处理对象,数据分为模拟数据(连续变化的物理量,范围无限)和数字数据(图片,文本等,范围有限)
而数字数据的核心是“二进制化”,所有数字数据会被转化为比特流,这是计算机和网络的“通用语言”,这种“二进制化”称为编码(Encoding)
信号(Signal)
信号是数据在物理介质中的物理表现形式,是数据的 “传输载体”,信号同样分为模拟信号和数字信号
协议(Protocol)
通信的规则体系,保证数据有序,正确传输
协议有三要素:语法(数据的格式和结构,规定“如何表示数据”,如TCP头部固定为20个字节,且固定了其表示的内容),语义(规定了字段的含义,规定字段和数据代表了什么),时序(数据传输的节奏和顺序)
协议可以按功能分为:物理层协议(以太网物理层规范),数据链路层协议(PPP),网络层协议(IP),传输层协议(TCP / UDP),应用层协议(HTTP)
值得注意的是,协议之间存在着“依赖关系”:高层协议需要依赖低层协议提供的服务(如 HTTP 依赖 TCP 提供的可靠传输, TCP 依赖 IP 提供的路由服务)
地址与标识
网络中需通过“地址”精确定位通信对象,不同层级的地址作用范围不同
物理地址(MAC地址)
定义:由 IEEE 分配的 48 位二进制地址(通常表示为 6 组十六进制数,如00:1A:2B:3C:4D:5E
),固化在网络接口卡(NIC)的固件中,全球唯一
作用范围:仅在同一广播域内有效,即“直接相连的局域网”,跨网段通信时,MAC地址会被替换成路由器接口的MAC地址(动态变化),交换机通过MAC地址表确保数据在局域网内被正确转发
获取方式:通过 ARP(地址解析协议)实现 IP 地址到 MAC 地址的映射(同一局域网内)。
值得注意的是,MAC地址在需要跨网段传输时会动态更新,目标MAC会被动态替换成“下一跳设备的MAC”,而IP地址保持不变
网络层的逻辑标识(IP地址)
定义:IP 地址是网络层的核心标识,用于在 “整个互联网” 中定位设备,解决 “跨网段通信” 的路径选择问题,分为IPv4和IPv6两类
作用范围:在整个互联网中有效,路由器通过 IP 地址选择跨网络的传输路径
IP地址与MAC地址的映射:ARP协议
IP 地址(逻辑标识)和 MAC 地址(物理标识)分属不同层级,需通过ARP(Address Resolution Protocol,地址解析协议) 建立映射
端口号(Port Number)
定义:传输层的16位整数(0-65535),用于标识节点上的应用程序
作用:同一设备上可能有多个应用程序同时进行网络通信,端口号用于区分数据应该交付给哪个程序
数据传输的基本流程
这里以浏览网页的过程为例
应用层
浏览器通过DNS协议,将网址转换为对应服务器的IP地址
传输层
使用TCP协议,与服务器建立可靠连接
网络层
通过IP协议,确定从你的设备到百度服务器的传输路线
网络接口层
将 IP 数据报转换为可在物理介质(网线、Wi-Fi)中传输的信号,并通过 MAC 地址完成局域网内的交付