网络编程—网络概念

发布于:2025-04-03 ⋅ 阅读:(17) ⋅ 点赞:(0)

目录

1 网络分类

1.1 局域网

1.2 广域网

2 常见网络概念

2.1 交换机

2.2 路由器

2.3 集线器

2.4 IP地址

2.5 端口号

2.6 协议

3 网络协议模型

3.1 OSI七层模型

3.2 TCP/IP五层模型

3.3 每层中常见的协议和作用

3.3.1 应用层

3.3.2 传输层

3.3.3 网络层

3.3.4 数据链路层


1 网络分类

1.1 局域网

        局域网Local Area Network,简称LAN,是一种本地的私有网络(内网),通过网线、交换机、路由器等设备组成的能让主机间进行网络通信的网络结构。

1.2 广域网

        广域网Wide Area Network,简称WAN,是通过路由器把多个局域网组建成大规模网络范围的网络结构。

        局域网和广域网是一对相对的概念,没有明显的主机数量界限之分。即如果把各个城市组建的网络看成局域网,那整个国家把各个城市互联起来,就组成广域网。同时国家组成的网络看成局域网,那么整个世界组成的网络就是广域网(这种情况下就是我们所说的互联网(Internet))。

2 常见网络概念

2.1 交换机

        交换机的出现解决了主机间仅通过网线互联的复杂网络结构和成本高昂的问题,主要用于主机间的数据帧的转发问题。简而言之就是交换机把多台设备组建成局域网。

2.2 路由器

        路由器相信大家都熟悉,有WAN口(一般蓝色,一个口)和LAN口(一般黄色,多个口),WAN口接入外部公网,LAN口实现局域网的主机互联。因此路由器主要是实现不同网络的通信问题,即可以组建广域网。

2.3 集线器

        早期的局域网内主机互联工具,但是功能非常有限,通信通道是独占式,即两个主机通信时,其他主机无法通信。

2.4 IP地址

        网络设备在网络中的地址,因为网络中设备繁多,传输的数据只有知道地址才知道传给哪个设备。常见有IPv4版本(32位二进制数)和IPv6版本(128位二进制数)。

2.5 端口号

        端口号主要用来定位进程,因为数据根据IP地址传入到主机后,主机中的进程同时可能有多个,因此需要通过端口号(0-65535)绑定。不同进程不能同时绑定一个端口号,一个进程能同时绑定多个端口号(比如子进程)

2.6 协议

        如果说IP地址、端口号解决了通信设备和进程的定位问题,物理设备比如网线、无线设备等解决了通信设备的数据传输方式问题(光信号和电信号),那么协议解决的问题就是如何统一数据格式的规范问题(数据如何解析,如何建立传输数据的连接等等),即是一种约定,共同遵守这个约定才能通信。

        协议三要素:语法、语义、时序。语法:数据与控制信息的结构或格式。语义:需要发出何种控制信息,完成何种动作以及做出何种响应。时序:事件实现顺序的详细说明。

        比如在物理设备传输的信号中,如果是光信号,那就约定不同的频率表示不用的信息,高频1,低频0。如果是电信号,那就约定高电平是1,低电平是0。通过这种协议就可以进行二进制编码,从而可以让主机进行识别。

3 网络协议模型

        由于协议种类太多,但是协议之间的作用很多都是相似的,因此对协议进行分层,就有了我们经常听到的OSI七层模型和TCP/IP五层模型。

3.1 OSI七层模型

        OSI七层模型实际上在会话层、表示层和应用层过于复杂,不实用,因此是仅存于理论层面的模型,实际上应用最广泛的是TCP/IP五层模型。

3.2 TCP/IP五层模型

        TCP/IP五层模型把OSI七层模型中的会话层、表示层和应用层统一为应用层。物理层和数据链路层是物理设备和驱动程序的范畴,网络层和传输层是操作系统所负责的,应用层是应用程序所负责的,因此软件开发人员的主要工作就是在应用层进行网络编程。

        封装:像上图一样,数据发送方把数据从上层开始,层层包装成数据包传递给下层的过程就是封装。

        分用:当数据接收方接收到数据后,从下层开始层层拆解其中对应部分的信息的过程就是分用。

        注意:这里讨论的交换机和路由器是传统的2层交换机和3层路由器,随着技术进步,现在已经出现了3层、4层交换机和4层路由器等等。即考虑交换机和路由器的工作场景:交换机工作在数据链路层(封装分用到数据链路层),路由器工作在网络层(封装分用到网络层)。

        分层后,协议的使用方(上层)不需要知道协议是如何实现的,只需要使用协议提供的接口即可;而协议提供方(下层)不需要暴露所有实现细节,只需要提供接口即可。就好像发送方在某层直接把数据发送给接收方对应的层,即实现了封装的特性。

3.3 每层中常见的协议和作用

3.3.1 应用层

        HTTP和HTTPS:采用TCP协议传输,用于在客户端和服务器之间传输超文本数据,通常用于Web浏览器和Web服务器之间的通信,HTTP协议引入加密机制(SSL/TLS)就变成了HTTPS。

        DNS:通常采用UDP传输,地址解析协议,将域名解析为对应的IP地址。

        DHCP:动态主机配置协议,采用UDP作为传输协议,允许服务器向客户端动态分配IP地址和配置信息。

        FTP:采用TCP协议作为传输协议,用于在客户端和服务器之间传输文件,支持上传和下载文件的功能。

        SMTP:采用TCP协议作为传输协议,用于在邮件服务器之间传输电子邮件,负责发送邮件。

        POP3:采用TCP协议作为传输协议,用于从邮件服务器上下载邮件到本地计算机,负责接收邮件。

        SSH:基于TCP,用于远程登录和执行命令,提供了加密的网络连接,保证了通信的安全性。

3.3.2 传输层

        TCP:提供可靠的、面向字节流、有连接的数据传输服务,确保数据的可靠性、顺序性和完整性。TCP适用于对数据传输质量要求较高的场景,如文件传输、网页浏览等。

        UDP:提供无连接的数据传输服务,面向数据报,不保证数据的可靠性,也不保证数据的顺序性和完整性。UDP适用于实时性要求较高、对数据传输质量要求不那么严格的场景,比如音视频传输、在线游戏(地图实时加载出现不完整)等。

3.3.3 网络层

        IP:是互联网中最基本的协议,用于在网络中传输数据包。IP协议定义了数据包的格式、寻址方式和路由选择等信息,是整个互联网的基础。

        RIP:路由信息协议,是基于距离矢量算法的路由协议,利用跳数来作为计量标准。

        OSPF:开放式最短路径优先协议,是一个内部网关协议(自治系统AS)内决策路由,隶属内部网关协议(IGP),故运作于自治系统内部。Dijkstra算法被用来计算最短路径树。两个相邻的路由器通过发报文的形式成为邻居关系,邻居再相互发送链路状态信息形成邻接关系,之后各自根据最短路径算法算出路由,放在OSPF路由表,OSPF路由与其他路由比较后优的加入全局路由表。

        ICMP:网际控制报文协议,用于在IP网络中传递控制消息和错误信息。ICMP通常用于网络设备之间的通信,如路由器和主机之间的通信,以及用于检测网络连通性和故障诊断。

        BGP:边界网关协议,是一种外部网关协议,与OSPF(计算AS内部最优路由)不同,主要功能是和其他的 BGP 系统交换网络可达信息。网络可达信息包括列出的自治系统(AS)的信息。

        ARP:用于将IP地址映射为MAC地址(物理地址)。ARP协议在局域网内部使用,通过发送ARP请求获取目标设备的MAC地址,从而实现数据包的传输。注意,ARP协议既不属于网络层,又不属于数据链路层,介于两层之间。

3.3.4 数据链路层

        MAC:媒介访问控制协议,负责控制设备如何访问共享的通信介质(如以太网、无线电波等),确保在多台设备共享同一传输媒介时能够有效地进行数据传输,避免冲突、控制流量,并确保数据的有序传递。

        CSMA/CD:载波侦听多路访问/碰撞检测协议,用于以太网,载波侦听:设备首先检测共享信道是否空闲。如果信道是空闲的,设备就可以发送数据。多路访问:所有设备共享同一个传输介质,因此必须协调访问。碰撞检测:在数据发送过程中,设备会继续监听信道。如果发生碰撞(即两个设备同时发送数据),它们会停止传输,并在随机延时后重新尝试发送。

        CSMA/CA:载波侦听多路访问/碰撞避免,用于Wi-Fi(IEEE 802.11)。碰撞避免:如果信道空闲,设备会等待一段时间后再发送数据(称为退避时间),以减少碰撞的概率。竞争和退避算法:使用随机退避算法(如二进制指数退避)来避免设备同时发送数据。当发生碰撞时,设备会随机等待一段时间再重试。

下篇文章:

网络编程—Socket套接字(UDP)https://blog.csdn.net/sniper_fandc/article/details/146923670?fromshare=blogdetail&sharetype=blogdetail&sharerId=146923670&sharerefer=PC&sharesource=sniper_fandc&sharefrom=from_link