八、Linux应用编程和网络编程之网络基础

    xiaoxiao2025-06-09  67

    1、网络通信概述

    从进程间通信说起:网络域套接字socket,网络通信其实就是位于网络中不同主机上面的2个进程之间的通信。

    1.1、网络通信的层次:

    硬件部分:网卡操作系统底层:网卡驱动操作系统API:socket接口应用层:低级(直接基于socket接口编程)应用层:高级(基于网络通信应用框架库)应用层:更高级(http、网络控件等)

    1.2、网络通信的发展历程

    单机阶段局域网阶段广域网internet阶段移动互联网阶段物联网阶段

    补充:用RS232串口速率低,不方便组网

     

    1.3、三大网络

    电信网、电视网络、互联网

    1.4、网络通信的传输媒介

    (1)无线传输:WIFI、蓝牙、zigbee、4G/5G/GPRS等

    (2)有线通信:双绞线、同轴电缆、光纤等

    补充:光纤上行和下行的速度可以做到一样

     

     

    2、OSI 7层网络模

    物理层、数据链路层、网络层、传输层、会话层、表示层、应用层

                                                                                图片取自网络

    3、网卡

    (1)计算机上网必备硬件设备,CPU靠网卡来连接外部网络

    网卡芯片,比如X210里的DM9000

    (2)串转并设备

    外部:网络通信时一种串行,差分,全双工通信

    内部:网卡和CPU是并行通信

    (3)数据帧封包和拆包

    网络通信是以数据包为单位发送的,驱动负责把应用层的数据打包发送。网卡会把要发送的信息加上包头和包尾(网卡封包),包头和包尾也会放一些校验以及告诉接收方我的数据有多大等信息。而驱动只处理没有包头和包尾的数据。

    (4)网络数据缓存和速率适配

     

    4、集线器(HUB)

    (1)信号中继放大,相当于中继器

    (2)组成局域网络,用广播方式工作。

    (3)注意集线器是不能用来连接外网的,只能用来组局域网,现在连接局域网用交换机

    补充:HUB本身不能识别MAC地址和IP地址,当同一局域网内的A主机给B主机传输数据时,数据包在以HUB为架构的网络上是以广播方式传输的,由每一台终端通过验证数据报头的MAC地址来确定是否接收。

     

    5、交换机

    (1)包含集线器功能,但更高级

    (2)交换机中有地址表,数据包查表后直达目的通信口而不是广播

    (3)新的交换机内部地址表是空的,找不到目的口时,广播并学习

     

     

    6、路由器

    (1)路由器是局域网和外部网络通信的出入口

    (2)路由器将整个internet划分成一个个的局域网,却又互相联通。

    (3)路由器对内管理子网(局域网),可以在路由器中设置子网的网段,设置有线端口的IP地址,设置dhcp功能等,因此局域网的IP地址是路由器决定的。

    (4)路由器对外实现联网,联网方式取决于外部网络(如ADSL拨号上网、宽带帐号、局域网等)。这时候路由器又相当于是更高层级网络的其中一个节点而已。

    (5)所以路由器相当于有2个网卡,一个对内做网关、一个对外做节点。

    (6)路由器的主要功能是为经过路由器的每个数据包寻找一条最佳路径(路由)并转发出去。其实就是局域网内电脑要发到外网的数据包,和外网回复给局域网内电脑的数据包。

    (7)路由器技术是网络中最重要技术,决定了网络的稳定性和速度。

     

    7、DNS(Domain Name Service 域名服务)

    (1)网络世界的门牌号:IP地址

    (2)IP地址的缺点:难记、不直观

    (3)IP地址的替代品:域名,譬如www.zhulaoshi.org

    (4)DNS服务器就是专门提供域名和IP地址之间的转换的服务的,因此域名要购买的

    (5)我们访问一个网站的流程是:先使用IP地址(譬如谷歌的DNS服务器IP地址为8.8.8.8)访问DNS服务器(DNS服务器不能是域名,只能是直接的IP地址),查询我们要访问的域名的IP地址,然后再使用该IP地址访问我们真正要访问的网站。这个过程被浏览器封装屏蔽,其中使用的就是DNS协议。

    (6)浏览器需要DNS服务,而QQ这样的客户端却不需要(因为QQ软件编程时已经知道了腾讯的服务器的IP地址,因此可以直接IP方式访问服务器)

     

    8、DHCP(dynamic host configuration protocl,动态主机配置协议)

    (1)每台计算机都需要一个IP地址,且局域网内各电脑IP地址不能重复,否则会地址冲突。

    (2)计算机的IP地址可以静态设定,也可以动态分配

    (3)动态分配是局域网内的DHCP服务器来协调的,很多设备都能提供DHCP功能,譬如路由器。

    (4)动态分配的优势:方便接入和断开、有限的IP地址得到充分利用

     

    9、NAT(network address translation,网络地址转换协议)

    (1)IP地址分为公网IP(internet范围内唯一的IP地址)和私网IP(内网IP),局域网内的电脑使用的都是私网IP(常用的就是192.168.1.xx)

    (2)网络通信的数据包中包含有目的地址的IP地址

    (3)当局域网中的主机要发送数据包给外网时,路由器要负责将数据包头中的局域网主机的内网IP替换为当前局域网的对外外网IP。这个过程就叫NAT。

    (4)NAT的作用是缓解IPv4的IP地址不够用问题,但只是类似于打补丁的形式,最终的解决方案还是要靠IPv6。

    (5)NAT穿透简介

     

    10、IP地址分类(IPv4)

    (1)IP地址实际是一个32位二进制构成,在网络通信数据包中就是32位二进制,而在人机交互中使用点分十进制方式显示。

    (2)IP地址中32位实际包含2部分,分别为:网络地址和主机地址。子网掩码,用来说明网络地址和主机地址各自占多少位。

    (3)由网络地址和主机地址分别占多少位的不同,将IP地址分为5类,最常用的有3类

    10.1、三类IP地址

    (1)A类。

    (2)B类

    (3)C类

    (4)127.0.0.1用来做回环测试loopback

    10.2、如何判断2个IP地址是否在同一子网内

    (1)网络标识 = IP地址 & 子网掩码

    (2)2个IP地址的网络标识一样,那么就处于同一网络。

     

    源IP地址:发出数据包的网络的IP地址

    目标IP地址:要接收数据包的计算机的IP地址

     

    IP地址的表示方式:

    二进制方式 0xffffffff 0xC0A80166/0x6601A8C0 本质

    点分十进制方式 255.255.255.255 192.168.1.102 便于识别

     

    IP地址 = 网络地址 + 主机地址

    网络地址用来表示子网,主机地址是用来表示子网中的具体某一台主机的。

     

    譬如可以8位表示网络,24位表示主机

    也可以16位表示网络,16位表示主机

    14为表示网络,18位表示主机

     

    子网掩码为255.255.255.0时表示前24位为网络地址,后8位为主机地址

    子网掩码为255.255.0.0时表示前16位为网络地址,后16位为主机地址

     

    网络地址决定了这种网络中一定可以有多少个网络,譬如子网掩码为255.255.255.0时表示我们这一种网络一共最多可以有2^24个,每个这种网络中可以有2^8个主机。

    如果子网掩码为255.255.0.0时,表示我们这种网络可以有2^16个网络,每个这种网络中最多可以有2^16个主机。

     

    192.168.1.102 & 255.255.255.0 = 192.168.1.0

    192.168.1.253 & 255.255.255.0 = 192.168.1.0

    192.168.1.4和192.168.12.5,如果子网掩码是255.255.255.0那么不在同一网段,如果子网掩码是255.255.0.0那么就在同一个网段

     

    文章参考朱友鹏老师物联网课程整理

    最新回复(0)