参考阅读::https://blog.csdn.net/xinpz/article/details/82732217
一、网络通信概述
1、从进程间通信说起:网络域套接字socket,网络通信其实就是位于网络中不同主机上面的2个进程之间的通信。
2、网络通信的层次 (1)硬件部分:网卡 (2)操作系统底层:网卡驱动 (3)操作系统API:socket接口 (4)应用层:低级(直接基于socket接口编程,难度较大,需要自己去编写服务器等架构) (5)应用层:高级(基于网络通信应用框架库) (6)应用层:更高级(http、网络控件(GUI编程,拖过来一个网络控件即可使用)等)
3、本部分学习方法 (1)重点1:掌握网络通信的架构层次和基本原理 (2)重点2:掌握socket及其相关函数的使用 (3)重点3:掌握服务器和客户端程序通信的方法
二、网络通信基础知识
1、网络通信的发展历程
(1)单机阶段(电脑较少,每一台电脑就是一个核心,不同电脑不需要通信,那时也没有网络。后来电脑变多通信通过磁盘进行 )
(2)局域网阶段:局域网的覆盖范围一般是方圆几千米之内,其具备的安装便捷、成本节约、扩展方便等特点使其在各类办公室内运用广泛。局域网可以实现文件管理、应用软件共享、打印机共享等功能。在一个区域范围里超过集线器所连接的距离时,必须要通过路由器来连接,这种网上类型称为广域网。
(3)广域网internet阶段:又称广域网、外网、公网。是连接不同地区局域网或城域网计算机通信的远程网。通常跨接很大的物理范围,所覆盖的范围从几十公里到几千公里,它能连接多个地区、城市和国家,或横跨几个洲并能提供远距离通信,形成国际性的远程网络。广域网并不等同于互联网。
(4)移动互联网阶段:移动互联网是指移动通信终端与互联网相结合成为一体,是用户使用手机、PDA或其他无线终端设备,通过速率较高的移动网络,在移动状态下(如在地铁、公交车等)随时、随地访问Internet以获取信息,使用商务、娱乐等各种网络服务。
(5)物联网阶段:电脑,手机,智能电器通过网络协作
2、三大网络
电信网、电视网络、互联网
3、网络通信的传输媒介
(1)无线传输:WIFI、蓝牙、zigbee、4G/5G/GPRS(2.5G)等
(2)有线通信:双绞线(常说的网线)、同轴电缆、光纤等
3、OSI 7层网络模型(详见百度介绍) 开放式系统互联通信参考模型(英语:Open System Interconnection Reference Model,缩写为 OSI),简称为OSI模型;一个用于计算机或通信系统间互联的标准体系.
(1)7层名字和顺序要记住,有时候笔试题目经常遇到。
(2)网络搜索资料,自己看自学,逐步去理解。
应用层:
网络服务与最终用户的一个接口。
协议有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP
表示层:
数据的表示、安全、压缩。(在五层模型里面已经合并到了应用层)
格式有,JPEG、ASCll、EBCDIC、加密格式等 [2]
会话层:
建立、管理、终止会话。(在五层模型里面已经合并到了应用层)
对应主机进程,指本地主机与远程主机正在进行的会话
传输层:
定义传输数据的协议端口号,以及流控和差错校验。
协议有:TCP UDP,数据包一旦离开网卡即进入网络传输层
网络层:
进行逻辑地址寻址,实现不同网络之间的路径选择。
协议有:ICMP IGMP IP(IPV4 IPV6)
数据链路层:
建立逻辑连接、进行硬件地址寻址、差错校验 [3] 等功能。(由底层网络定义协议)
将比特组合成字节进而组合成帧,用MAC地址访问介质,错误发现但不能纠正。
物理层:
建立、维护、断开物理连接。(由底层网络定义协议)
TCP/IP 层级模型结构,应用层之间的协议通过逐级调用传输层(Transport layer)、网络层(Network Layer)和物理数据链路层(Physical Data Link)而可以实现应用层的应用程序通信互联。
??应用层需要关心应用程序的逻辑细节,而不是数据在网络中的传输活动。应用层其下三层则处理真正的通信细节。在 Internet 整个发展过程中的所有思想和着重点都以一种称为 RFC(Request For Comments)的文档格式存在。针对每一种特定的 TCP/IP 应用,有相应的 RFC 文档。
??一些典型的 TCP/IP 应用有 FTP、Telnet、SMTP、SNTP、REXEC、TFTP、LPD、SNMP、NFS、INETD 等。RFC 使一些基本相同的 TCP/IP 应用程序实现了标准化,从而使得不同厂家开发的应用程序可以互相通信.
4、网卡
网络通信是一种串行全双工的通信,网卡和CPU并行连接 (1)计算机上网必备硬件设备,CPU靠网卡来连接外部网络 (2)串转并设备 (3)数据帧封包和拆包,网卡驱动将要发的数据封装成几个包,一个个去发,发的时候网卡还会给包叠加一些信息(包头、包尾) (4)网络数据缓存和速率适配(通信的两个机器速率不一致时,去协调适配双方速率,使二者速率一致)
5、集线器(HUB)
(1)信号中继放大,相当于中继器 (2)组成局域网络,用广播方式工作。 (3)注意集线器是不能用来连接外网的
6、交换机
详解:路由器、交换机、集线器的区别 https://blog.csdn.net/zwj_jyzl/article/details/78639754
(1)包含集线器功能,但更高级 (2)交换机中有地址表(学习得到的,通过广播得到的),数据包查表后直达目的通信口而不是广播 (3)找不到目的口时广播并学习
7、路由器
(1)路由器是局域网和外部网络通信的出入口
(2)路由器将整个internet划分成一个个的局域网,却又互相联通。
(3)路由器对内管理子网(局域网),可以在路由器中设置子网的网段,设置有线端口的IP地址,设置dhcp功能等,因此局域网的IP地址是路由器决定的。
(4)路由器对外实现联网,联网方式取决于外部网络(如ADSL拨号上网、宽带帐号、局域网等)。这时候路由器又相当于是更高层级网络的其中一个节点而已。
??路由器LAN口连接内网,WAN口连接外网,路由器像是子网内的一台电脑,占用一个IP地址
(5)所以路由器相当于有2个网卡,一个对内做网关、一个对外做节点。一个网卡用于内网通信,一个用于外网通信
(6)路由器的主要功能是为经过路由器的每个数据包寻找一条最佳路径(路由)并转发出去。其实就是局域网内电脑要发到外网的数据包,和外网回复给局域网内电脑的数据包。
(7)路由器技术是网络中最重要技术,决定了网络的稳定性和速度。
8、DNS(Domain Name Service 域名服务)
(1)网络世界的门牌号:IP地址,在子网内不是唯一的,在广域网 内是唯一的。
(2)IP地址的缺点:难记、不直观
(3)IP地址的替代品:域名,譬如www.zhulaoshi.org,通过查表,由域名得到对应的ip地址,所以实际访问还是用IP地址
(4)DNS服务器就是专门提供域名和IP地址之间的转换服务的,因此域名要购买的
(5)我们访问一个网站的流程是:先使用IP地址(譬如谷歌的DNS服务器IP地址为8.8.8.8)访问DNS服务器(DNS服务器不能是域名,只能是直接的IP地址),查询我们要访问的域名的IP地址,然后再使用得到的IP地址访问我们真正要访问的网站。这个过程被浏览器封装屏蔽,其中使用的就是DNS协议。
(6)浏览器需要DNS服务,而QQ这样的客户端却不需要(因为QQ软件编程时已经知道了腾讯的服务器的IP地址,因此可以直接IP方式访问服务器)
有时qq能上网而浏览器不可以,则表明DNS出问题了。
??在一个局域网内的网络管理员一般是路由器,进行网络配置,其有一个功能——动态分配IP。当局域网内一个电脑向路由器发送请求分配一个IP地址,路由器会根据自己配置的LAN口、设置的网段,根据自己的IP地址表找一个空闲的发送给电脑.
9、DHCP(dynamic host configuration protocl,动态主机配置协议)
(1)每台计算机都需要一个IP地址,且局域网内各电脑IP地址不能重复,否则会地址冲突。
(2)计算机的IP地址可以静态设定,也可以动态分配
(3)动态分配是局域网内的DHCP服务器(路由器内的部分代码实现)来协调的,很多设备都能提供DHCP功能,譬如路由器。
(4)动态分配的优势:方便接入和断开、有限的IP地址得到充分利用,使多台机器实现分时使用。
若你的网络中没有DHCP服务器,则无法通过DHCP分配IP进行上网。
10、NAT(network address translation,网络地址转换协议)
(1)IP地址分为公网IP(internet范围内唯一的IP地址)和私网IP(内网IP,局域网内的IP),局域网内的电脑使用的都是私网IP(常用的就是192.168.1 .xx),不同的局域网内可以有相同的内网IP。
eg:两个不同的局域网内有两台电脑甲、乙,二者进行通信,分别寻找各自的路由器(网关),两个路由器使用外网IP进行通信。
(2)网关和路由器的区别: 网关与路由器两者它们的作用都是用在网络当中,主要是用来连接不同子网的主机,这两种都是属于硬件设施,它们都可以对到达该主机的数据包进行转发。这两种装置它们之间存在着许多的共同点,但是网关与路由器这两种设备它们之间还是存在着许多本质上的区别。
1)概念:网关是将两个使用不同协议的网络段连接在一起的设备。路由器是连接因特网中各局域网、广域网的设备,它会根据信道的情况自动选择和设定路由,以最佳路径,按前后顺序发送信号。
2)作用功能:网关的作用就是对两个网络段中的使用不同传输协议的数据进行互相的翻译转换。路由器的作用主要是连通不同的网络和信息传输作用。按照使用可分为:接入、企业级、骨干级、太比特、多WAN以及3G无线等。
??网关(Gateway)又称网间连接器、协议转换器。网关在网络层以上实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关既可以用于广域网互连,也可以用于局域网互连。网关是一种充当转换重任的计算机系统或设备。使用在不同的通信协议、数据格式或语言,甚至体系结构完全不同的两种系统之间,网关是一个翻译器。与网桥只是简单地传达信息不同,网关对收到的信息要重新打包,以适应目的系统的需求。
(3)网络通信的数据包中包含有目的地址的IP地址,包头包尾分别为目的ip地址,源ip地址,便于发送数据给接收方,接收方通过源地址可以回数据给发送方。
(4)当局域网中的主机要发送数据包给外网时,路由器要负责将数据包头中的局域网主机的内网IP替换为当前局域网的对外外网IP。这个过程就叫NAT。
(5)NAT的作用是缓解IPv4的IP地址不够用问题,但只是类似于打补丁的形式,最终的解决方案还是要靠IPv6。
(6)NAT穿透简介 内网穿透的定义与障碍? 简单来说实现不同局域网内的主机之间通过互联网进行通信的技术叫内网穿透。
障碍一:位于局域网内的主机有两套IP 地址? ??一套是局域网内的 IP 地址,通常是动态分配的,仅供局域网内的主机间通信使用;一套是经过网关转换后的外网 IP 地址,用于与外网程序进行通信。
障碍二:位于不同局域网内的两台主机,即使是知道了对方的IP 地址和端口号,“一厢情愿”地将数据包发送过去,对方也是接收不到的。
因为出于安全起见,除非是主机主动向对方发出了连接请求(这时会在该主机的数据结构中留下一条记录),否则,当主机接收到数据包时,如果在其数据结构中查询不到对应的记录,那些不请自来的数据包将会被丢弃。
解决办法:要想解决以上两大障碍,我们需要借助一台具有公网IP 的服务器进行桥接。
11、为什么需要内网穿透?
??当内网中的主机没有静态IP地址要被外网稳定访问时可以使用内网穿透。在互联网中唯一定位一台主机的方法是通过公网的IP地址,但固定IP是一种非常稀缺的资源,不可能给每个公司都分配一个,且许多中小公司不愿意为高昂的费用买单,多数公司直接或间接的拨号上网,电信部门会给接入网络的用户分配IP地址,以前上网用户少的时候基本分配的都是临时的静态IP地址,租约过了之后可能会更换成另一个IP地址,这样外网访问就不稳定,因为内网的静态IP地址一直变化,为了解决这个问题可以使用动态域名解析的办法变换域名指向的静态IP地址。
??但是现在越来越多的上网用户使得临时分配的静态IP地址也不够用了,电信部门开始分配一些虚拟的静态IP地址,这些IP是公网不能直接访问的,如以125开头的一些IP地址,以前单纯的动态域名解析就不好用了。
12、IP地址分类(IPv4)
(1)IP地址实际是一个32位二进制构成,在网络通信数据包中就是32位二进制,而在人机交互中使用点分十进制方式显示。
二进制方式 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位为主机地址
即子网掩码32位二进制位中为1的对应的是网络地址,为0的对应的是主机地址
譬如可以8位表示网络,24位表示主机
也可以16位表示网络,16位表示主机
14为表示网络,18位表示主机
网络地址决定了这种网络中一定可以有多少个网络,譬如子网掩码为255.255.255.0时表示我
们这一种网络一共最多可以有2^24个,每个这种网络中可以有2^8个主机。
如果子网掩码为255.255.0.0时,表示我们这种网络可以有2^16个网络,每个这种网络中最
多可以有2^16个主机。
(2)IP地址中32位实际包含2部分,分别为:网络地址和主机地址。子网掩码,用来说明网络地址和主机地址各自占多少位。
(3)由网络地址和主机地址分别占多少位的不同,将IP地址分为5类,最常用的有3类
(4)源IP地址:发出数据包的网络的IP地址 ?目标IP地址:要接收数据包的计算机的IP地址
(5)IPv4与IPv6之间的区别是什么 详解:https://www.php.cn/windows-413502.html
&emap;?IPv4和IPv6是是目前使用的两种Internet协议版本,IPv4和IPv6协议之间存在各种差异,包括它们的功能,但关键的一点是它生成的地址(地址空间)的数量的区别。
13、三类IP地址
(1)A类。 (2)B类 (3)C类
127.0.0.0用来做回环测试loopback(网卡自己发自己收,用来做本地测试)
1)IP地址表示方法不同: ??一个A类IP地址是指,在IP地址的四段号码中,第一段号码为网络号码,剩下的三段号码为本地计算机的号码。
??如果用二进制表示IP地址的话,A类IP地址就由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”。A类IP地址中网络的标识长度为8位,主机标识的长度为24位。
??一个B类IP地址是指,在IP地址的四段号码中,前两段号码为网络号码。如果用二进制表示IP地址的话,B类IP地址就由2字节的网络地址和2字节主机地址组成,网络地址的最高位必须是“10”。B类IP地址中网络的标识长度为16位,主机标识的长度为16位。
??一个C类IP地址是指,在IP地址的四段号码中,前三段号码为网络号码,剩下的一段号码为本地计算机的号码**。如果用二进制表示IP地址的话,C类IP地址就由3字节的网络地址和1字节主机地址组成,网络地址的最高位必须是“110”。C类IP地址中网络的标识长度为24位,主机标识的长度为8位。**
2)IP地址范围不同:
A类IP地址的子网掩码为255.0.0.0
B类IP地址的子网掩码为255.255.0.0
C类IP地址的子网掩码为255.255.255.0
3)IP地址范围不同:
A类IP地址 地址范围从1.0.0.1到127.255.255.254 (二进制表示为:00000001 00000000 00000000 00000001 - 01111111 11111111 11111111 11111110)。最后一个是广播地址(01111111 11111111 11111111 11111111)。
B类IP地址地址范围从128.0.0.1-191.255.255.254 (二进制表示为:10000000 00000000 00000000 00000001-10111111 11111111 11111111 11111110)。 最后一个是广播地址(10111111 11111111 11111111 11111111)。
C类IP地址范围从192.0.0.1-223.255.255.254 (二进制表示为: 11000000 00000000 00000000 00000001 - 11011111 11111111 11111111 11111110)。最后一个是广播地址(11011111 11111111 11111111 11111111)。
5)适用范围不同:
A类适用的类型为大型网络,A类网络地址数量较少,有126个网络,每个网络支持的最大主机数为256的3次方-2=16777214台;
B类适用的类型为中型网络,B类网络地址数量适中,有16384个网络,每个网络支持的最大主机数为256的2次方-2=65534台;
C类适用的类型为小型网络,C类网络地址数量较多,有209万余个网络,适用于小规模的局域网络,每个网络支持的最大主机数为256的1次方-2=254台。 (个人猜测减二是除去路由器本身所占的IP地址以及最后一个广播地址)
6)子网掩码告知路由器,地址的哪一部分是网络地址,哪一部分是主机地址,使路由器正确判断任意IP地址是否是本网段的,从而正确地进行路由。
??网络上,数据从一个地方传到另外一个地方,是依靠IP寻址。从逻辑上来讲,是两步的。第一步,从IP中找到所属的网络,好比是去找这个人是哪个小区的;第二步,再从IP 中找到主机在这个网络中的位置,好比是在小区里面找到这个人。
??子网掩码的设定必须遵循一定的规则。与二进制IP地址相同,子网掩码由1和0组成,且1和0分别连续。子网掩码的长度也是32位,左边是网络位,用二进制数字“1”表示,1的数目等于网络位的长度;右边是主机位,用二进制数字“0”表示,0的数目等于主机位的长度。
??这样做的目的是为了让掩码与IP地址做按位与运算时用0遮住原主机数,而不改变原网络段数字,而且很容易通过0的位数确定子网的主机数(2的主机位数次方减2,因为主机号全为1时表示该网络广播地址,全为0时表示该网络的网络号,这是两个特殊地址)。通过子网掩码,才能表明一台主机所在的子网与其他子网的关系,使网络正常工作。
14、如何判断2个IP地址是否在同一子网内
(1)网络标识 = IP地址 & 子网掩码
(2)2个IP地址的网络标识一样,那么就处于同一网络。
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那么就在同一个网段
注:本资料大部分由朱老师物联网大讲堂课程笔记整理而来并且引用了部分他人博客的内容,如有侵权,联系删除!水平有限,如有错误,欢迎各位在评论区交流。
|