网络编程-网络相关的基本概念(一)

有些道理没什么用,但是知道了会让人很开心。

这是我的第十篇原创文章

很久以前young我就想往网络方向学习学习,因为现在这个社会什么都离不开网络。可能你们也有体会,我们生活中好像什么都能联网。然后就是智能家居,物联网之类的词语经常出现在我们眼前。那这篇文章我们来说说网络相关的基本概念吧。

(注:这篇文章很多概念和内容来自朱有鹏老师课程)

1

网络通讯的概念

概念什么的我就不bb了,举一个简单的例子我们了解下,日常的微信聊天。直接表现是你发一个消息,我接收到消息显示并震动。然而实际上底层是这样实现的:

例如我用的是wechatA,你用wechatB,A给B发送消息是通过应用层调用系统层的API接口,API中有网卡驱动,网卡驱动控制硬件层的网卡连接网络,网络找到wechatB的IP。这时候B的电脑硬件层网卡通过网卡驱动向系统层回传信息,这个信息通过应用层显示。如果wechatB给wechatA发送消息则反过来。

网络通讯最开始的进程间通讯是同一个电脑同一个操作系统不同进程之间的通讯,后来发现这种通讯方式可以拓展。这就是网络通讯的来历。这里就涉及到TCP/IP协议族了。本质上TCP解决了局域网的点对点通讯,但是不能解决多个局域网之间的通讯。IP协议解决多个局域网间通讯。IP 协议定义了一套自己的地址规则,称为 IP 地址。它实现了路由功能,允许某个局域网的 A 主机,向另一个局域网的 B 主机发送消息。

IP 协议只是一个地址协议,并不保证数据包的完整。如果路由器丢包(比如缓存满了,新进来的数据包就会丢失),就需要发现丢了哪一个包,以及如何重新发送这个包。这就要依靠 TCP 协议。

简单说,TCP 协议的作用是,保证数据通信的完整性和可靠性,防止丢包。

2

网络通讯传输媒介

网络通信的传输媒介主要分成有线和无线两种。

(1)无线传输:WIFI(家庭网络)、蓝牙(近距离、zigbee,4G/5G/GPRS(2G/3G)等。

(2)有线通信:双绞线、同轴电缆(早期)、光纤(上下行基本一致)等

网路通讯中还有几个必备的东西:网卡,集线器,交换机,路由器等。下面来介绍下这几个东西。

3

网卡

网卡就是芯片。计算机上网必备硬件设备,CPU靠网卡来连接外部网络。笔记本电脑就是内部主板集成网卡。网卡的作用就是隔离和连接。CPU要上网必须通过网卡。

网卡是串转并设备。网卡和CPU通讯时并行通讯。网络通讯本身是一种全双工差分串行通讯。并行通讯一般都是内部使用,外部通讯一般都采用并行。数据是通过并行通讯发给网卡,网卡通过串行通讯外发。

网卡能进行数据帧封包和拆包。网络通讯采用数据包的形式发送和接收。数据包的产生是网络驱动产生的,应用层给驱动发数据,驱动层负责打包数据,网卡会给数据包加上”包头”和”包尾”(crc校验,ip地址之类的)进行封包。包头包位是一些必要数据。这个”包头”和”包尾”是在网卡间通讯间才有的。这个类似快递,我给你寄东西,会将东西打包。你收到东西会拆包才能拿到我给你的东西。

网卡还可以进行网络数据缓存和速率适配。网卡能自动协调速率,能自动缓存一定数据。

4

集线器(HUB)

集线器相当于中继器,信号中继放大。他用广播方式工作,组成局域网络,。

但是值得注意的是,集线器是不能用来连接外网的,只能用来组成局域网。现在很少用这个,一般用交换机。

5

交换机

交换机包含集线器功能,但更高级。交换机中有地址表,数据包查表后直达目的通信口而不是广播方式,提高了效率。交换机本身是不知道端口信息IP的,当交换机找不到IP时候,会用广播的形式给各个端口发送消息,如果找到端口,端口会返回该端口对应PC的IP,将端口存在地址表中,下次就不同这个广播发送,提高效率。

6

路由器

路由器是局域网和外部网络通信的出入口,它将整个internet划分成一个个的局域网,却又互相联通。他可以对内管理子网LAN(局域网),可以在路由器中设置子网的网段,设置有线端口的IP地址,设置dhcp功能等,因此局域网的IP地址是路由器决定的;还可以对外实现联网WAN,联网方式取决于外部网络(如ADSL拨号上网、宽带帐号、局域网等)。这时候路由器又相当于是更高层级网络的其中一个节点而已。所以路由器相当于有2个网卡,一个对内做网关、一个对外做节点。

路由器的主要功能是为经过路由器的每个数据包寻找一条最佳路径(路由)并转发出去。其实就是局域网内电脑要发到外网的数据包,和外网回复给局域网内电脑的数据包。所以路由器技术是网络中最重要技术,决定了网络的稳定性和速度,市面上的路由器的高低档次,其实就是内部路由算法的效率和信息负载能力的高低。

7

DNS域名服务

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

浏览器需要DNS服务,而QQ这样的客户端却不需要(因为QQ软件编程时已经知道了腾讯的服务器的IP地址,因此可以直接IP方式访问服务器),有时候会发现,为什么qq能上网,但是浏览器不能上网,就是DNS没有配置导致的。

8

DHCP协议

DHCP(dynamic host configuration protocl),是动态主机配置协议,在了解DHCP协议之前,我们得知道个基本的概念,在一个局域网中,每台计算机都需要一个IP地址,且局域网内各电脑IP地址不能重复,否则会地址冲突。当然我们的计算机的IP地址可以静态设定,也可以动态分配。动态分配是局域网内的DHCP服务器来协调的,很多设备都能提供DHCP功能,譬如路由器。

为什么我们要使用DHCP呢?因为方便接入和断开,在有限的IP地址得到充分利用。原则上我们使用静态IP的话,一个局域网能够链接的设备最多只有256台,但是我们用DHCP原则上可以连接大于256,只是同时上网机器最多只有256而已,提高了设备接入的灵活性。

9

NAT

NAT(network address translation),是网络地址转换协议。

我们所说的IP地址分为公网IP(internet范围内唯一的IP地址)和私网IP(内网IP),局域网内的电脑使用的都是私网IP(常用的就是192.168.1.xx),网络通信的数据包中包含有目的地址的IP地址。当局域网中的主机要发送数据包给外网时,路由器要负责将数据包头中的局域网主机的内网IP替换为当前局域网的对的外网IP。这个过程就叫NAT。

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

10

NAT穿透

网络中有一个词语叫做P2P下载(点对点)。比如我们用迅雷下载电影,电影在服务器中,服务器都有一个外网IP.我们普通的下载是我们电脑在局域网中通过路由器再过NAT转化,访问服务器,然后服务器通过这个链路返回数据包给路由器,路由器返回给我们数据。

这个P2P下载就是迅雷给你做了一个桥,就是在别人服务器中有你要的资源,迅雷就会找到对方路由器的IP地址(前提是对方也用迅雷),然后实现对接下载。所以我们用迅雷下载电影的时候下面有一个种子数。比如267/32,这个267就是在整个网络中有267个资源,32代表迅雷给你连接成功32个服务器。所以用P2P下载时候可能会快很多的原因。

这篇文章就说明下一些网络通讯的的基本概念。关于网络这块我会不断更新一些内容,毕竟做嵌入式技术的,未来几年内,肯定离不开服务器之类的。所有现在的主流就是将项目挂在在服务器管理。在完成这些的前提下,网络是一切的基础。

这篇文章主要借鉴了朱老师上课的内容,之后的文章可能多少会借鉴老师上课的内容加上自己看的博客和对网络的理解来整理。下篇还是会说明一些网络方面的一些符号的基本概念,比如网络中的数据包呀,十进制点分之类的概念。

好吧,这篇文章就先这样,下回见。

-END-

转载是一种动力 分享是一种美德

感谢您抽出·来阅读此文

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180820G0RHTJ00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券