网络通信基础常识

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。

1、网络通信属于进程间通信

进程间通信的一种方法是使用套接字socket,网络通信其实就是位于网络中不同主机上面的2个进程之间的通信。

2、网络通信的层次

网络通信的层次,即信息流的流动过程。

(1)硬件部分:网卡

(2)操作系统底层:网卡驱动

(3)操作系统API:socket接口

(4)应用层:低级(直接基于socket接口编程);高级(基于网络通信应用框架库);更高级(http、网络控件等)

3、网络通信的发展历程

(1)单机阶段

(2)局域网阶段

(3)广域网internet阶段(由一个个局域网互联起来,主要指电脑的有线)

(4)移动互联网阶段(手机、平板等无线上网)

(5)物联网阶段(万物互联)

4、三大网络

电信网、电视网、互联网

5、通信网络的传输媒介

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

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

7、网卡芯片

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

(2)串转并设备;

(3)数据帧封包和拆包;

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

9、路由器

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

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

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

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

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

(6)路由器的主要功能是为经过路由器的每个数据包寻找一条最佳路径(路由)并转发出去。

  • 即局域网内的电脑要发到外网的数据包,和外网回复给局域网内的电脑的数据包,都要经过路由器的选择。

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

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

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

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

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

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

(5)访问一个网站的流程

  • 先访问DNS服务器(譬如谷歌的DNS服务器IP地址为8.8.8.8),通过此DNS服务器查询我们要访问的域名对应的IP地址,然后再使用该IP地址访问我们真正要访问的网站。

  • 这个过程被浏览器封装屏蔽,其中使用的就是DNS协议。

(6)浏览器需要DNS服务,而QQ这样的客户端却不需要

  • 因为QQ软件编程时已经知道腾讯服务器的IP地址,因此可以直接IP方式访问服务器

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

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

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

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

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

(5)如果开启DHCP,必须有DHCP服务器。

12、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穿透简介;理解p2p下载。(服务器做中介)

(6)不同局域网内的主机的私网IP地址可以相同,比如都是192.169.1.3。

13、IP地址简述

1、IP地址分类(IPv4)

(1)IP地址由32位二进制构成

  • 在网络通信数据包中就是32位二进制,而在人机交互中使用点分十进制方式显示。

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

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

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

  • 譬如可以8位表示网络,24位表示主机;也可以16位表示网络,16位表示主机;14为表示网络,18位表示主机

  • 子网掩码为255.255.255.0时,表示前24位为网络地址,后8位为主机地址,表示这种网络一共最多可以有2^24个,每个这种网络中最多可以有2^8个主机。

  • 子网掩码为255.255.0.0时,表示前16位为网络地址,后16位为主机地址,表示这种网络一共最多可以有2^16个,每个这种网络中最多可以有2^16个主机。

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

2、三类IP地址

(1)A类。

(2)B类。

(3)C类。

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

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

网络标识 = IP地址 & 子网掩码,如果2个IP地址的网络标识一样,那么就处于同一网络。

示例1

192.168.1.102 & 255.255.255.0 = 192.168.1.0;

192.168.1.253 & 255.255.255.0 = 192.168.1.0;这表明两者处于同一个网段;

示例2

192.168.1.4和192.168.12.5

如果子网掩码是255.255.255.0,那么不在同一网段;

如果子网掩码是255.255.0.0,那么就在同一个网段。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/461618.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android NDK工程创建与编译运行

首发地址:http://www.eoeandroid.com/thread-201993-1-1.html一、 工程创建1. 创建一个Android工程配置好开发环境并加载好对应版本sdk后,选择菜单File->New-> Project创建工程,工程类型选择Android Project,如下图所示&…

[Quatsch]Quantum Or Optics

小生预言,鉴于目前CG产业中学术界与生产界之间的差异,未来必将有一门独立的学科,专门用于研究自然界的材质特性与表现,从此艺术界与学术界将呈现完美之统一,应该先在MIT或者Cornell出现。本人姑且将这门学科命名为“应…

C#事件 的讲解

一、事件的本质事件是软件系统里的两个子系统之间,或者两个模块之间,或者两个对象之间发送消息,并处理消息的过程。在面向对象的世界里,就可以统一认为是两个对象之间的行为。两个对象之间发送的这种消息,对发送方来讲…

phpMyAdmin密码设置

2019独角兽企业重金招聘Python工程师标准>>> 在使用phpMyAdmin操作数据库时,首先需要设置mysql的root用户的密码。具体操作参考前一篇博文。设置完mysql的root密码之后,需要对phpMyAdmin的登录进行一些配置。 未经配置的phpMyAdmin很不安全&a…

抽取网络信息进行数据挖掘 建立语料库

最近的实习项目需要做一个大数据库(语料库),采集博客、微博、问答库的信息。将数据库的内容进行训练,最后应该是做成一个类似中文siri的模型吧。 第一步新闻抓取器已经稳定运行了,基本原理用的是爬虫去爬新闻门户网站的…

四旋翼无人机调研结果

P.S:作者曾在大学某次小班课上看到该视频,深深被震撼了,因此对无人机念念不忘。 恰逢某课程要求讲解自己喜欢的领域的内容,因此对四旋翼无人机进行了调研。

选购四轴飞行器的部件

内容截于:http://www.loveuav.com/article-191-1.html

重复编辑命令行

为什么80%的码农都做不了架构师?>>> 要想重复前面已经输入的命令,请按向上方向键。每按这个键一次,shell都会显示前一个命令行。要想重新执行所显示的命令行,请按回车键。按向下方向键,则可以沿着相反的方…

hadoop2.2.0 分布式存储hdfs完全分布式搭建及功能测试记录(一)----架构及原理介绍...

0.文档说明:本文是围绕hadoop2.2的分布式文件系统hdfs进行分布式存储功能测试,形成的hdfs分布式存储功能测试报告,其中主要包括三大部分内容:第一部分介绍了hdfs的基本原理;第二部分介绍了hadoop2.2的完全分布式集群安…

宏定义函数container_of的解释

从kernel里面抠出的一些与宏container_of有关的代码,如下: 1、此宏作用是从结构体的某元素(member)出发,得到结构体的首地址; 2、container_of的参数解释 (1)type:指的是…

【ASP.NET Web API教程】2.3 与实体框架一起使用Web API

2.3 Using Web API with Entity Framework 2.3 与实体框架一起使用Web API 本小节是ASP.NET Web API第2章的第3小节,原文共分为7个部分,分成了7篇文章,故这里也分为7个帖子贴出,以下是本小节的第1部分 — 译者注。 Part 1: Overvi…

ITTC数据挖掘平台介绍(综述)——平台简介

数据挖掘方兴未艾,大量新事物层出不穷。本系列将介绍我们自主设计的数据挖掘软件平台。与大家共同分享对知识,微博,人际等复杂网络的分析,以及对自然语言处理的见解。 一、我们需要怎样的数据挖掘系统 一直以来,以高校…

Linux—程序包安装与管理

1、软件包是对于一种软件所进行打包的方式。在不同的操作系统中,软件包的类型有很大的区别。对于Linux系统中,软件包主要以两种形式出现:二进制包以及源代码包。二进制包:1)传统的red hat linux二进制包2)d…

Master-Detail(主表明细),确认可以出货的SQL指令 -- Not Exists

这是我文章的备份,原文请看: http://www.dotblogs.com.tw/mis2000lab/archive/2011/08/18/master_detail_finish_and_shipping.aspx [补充]下集,第十四章。Master-Detail(主表明细),确认可以出货的SQL指令…

开发板——X210开发板的SD卡启动方式

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 前言与总结 这里说的SD卡启动方式,指的是uboot在SD卡中或者在inand里,且启动介质拨码开关选择SD卡启动方式(对于X210,是拨到远离电源键的一侧&#xf…

使用iBATIS3.0完成增删改查

为什么80%的码农都做不了架构师?>>> 使用iBATIS3.0完成增删改查 iBATIS3.0和以前的版本有一些改变,不过学过以前版本的再学习3.0应该不是太难,3.0要求JDK1.5支持,因为其中增加了注解和泛型,这些都是JDK1.5…

oracle-11g-R2监听文件配置

客户端连接oracle数据库时出现如下错误: Listener refused the connection with the following error: ORA-12514, TNS:listener does not currently know of service requested in connect descriptor 首先看看Oracle服务是否开启: 然后找到listener.or…

【C】strcpy()需谨慎使用;

大家都知道C中的strcpy()函数是用来复制字符串的库函数。先附上代码看看strcpy()函数的功能&#xff1a; 1 #include<stdio.h>2 #include<string.h>3 #define MAX 204 5 int main(void)6 {7 char a[MAX]"abc";8 char b[MAX]"abcdefghi"…

多重指针操作

之前对多重指针操作心存忐忑&#xff0c;不能很熟练使用&#xff0c;本质原因是不了解其实质&#xff0c;因此对其进行了学习。 一、简单的代码如下 #include <stdio.h> #include <stdlib.h> #include <string.h>void myArray(char ***p2, int num) {int i0;…

嵌入式Linux系统的构成和启动总结

以下内容源于网络资源的整理&#xff0c;如有侵权请告知删除。 一、嵌入式Linux系统典型结构 Flash划分成以下4个区&#xff1a; &#xff08;1&#xff09;Bootloader区。存放的是Bootloader&#xff0c;它负责嵌入式系统最初的硬件初始化、驱动和内核加载。 &#xff08;2&…