一文读懂网络通信技术原理

时间:2023-11-23 13:07:37 阅读:2

一文读懂网络通讯武艺原理

一、网络的由来?

互联网的实质就是一系列的网络协议。

一台硬设有了利用体系,然后装上软件你就可以正常使用了,每一局部都拥有一台本人的机器,但是互相伶仃。

怎样能让各位一同游玩,就有了开头的网络,但是两台盘算机之间通讯与两一局部打电话之间通讯的原理是一样的,平凡话属于中国国内人与人之间通讯的标准,那假如是两个国度的人交换呢?成绩是,你不成能要求一一局部/盘算机把握全天下的言语/标准,于是有了天下一致的通讯标准:英语

结论:英语成为天下上一切人通讯的一致标准,假如把盘算机当作分布于天下各地的人,那么毗连两台盘算机之间的internet实践上就是一系列一致的标准,这些标准称之为互联网协议,互联网的实质就是一系列的协议,总称为'互联网协议'(Internet Protocol Suite).

互联网协议的功效:界说盘算机怎样接入internet,以及接入internet的盘算机通讯的标准。

二、网络协议先容

互联网协议依照功效不同分为osi七层或tcp/ip五层

每层运转稀有物理装备

五层模子解说

我们将使用层,表现层,会话层并作使用层,从tcp/ip五层协议的角度来论述每层的由来与功效,搞清晰了每层的主要协议,就了解了整个互联网通讯的原理。

起首,用户感知到的只是最外表一层使用层,自上而下每层都依托于下一层,以是我们从最下一层开头切入,比力好了解每层都运转特定的协议,越往上越接近用户,越往下越接近硬件

1、物理层:外表提到,伶仃的盘算机之间要想一同玩,就必需接入internet,弦外之音就是盘算机之间必需完成组网

物理层功效:主要是基于电器特性发送上下电压(电信号),高电压对应数字1,低电压对应数字0

2、数据链路层:单纯的电信号0和1没有任何意义,必需划定电信号几多位一组,每组什么意思

数据链路层的功效:界说了电信号的分组办法

以太网协议:

早前的时分各个公司都有本人的分组办法,厥后构成了一致的标准,即以太网协议ethernet

ethernet划定

一组电信号构成一个数据包,叫做'帧'

每一数据帧分红:报头head和数据data两局部

head包含:(安稳18个字节)

发送者/源地点,6个字节

吸收者/目标地点,6个字节

数据典范,6个字节

data包含:(最短46字节,最长1500字节)

数据包的具体内容

head长度+data长度=最短64字节,最长1518字节,凌驾最大限定就分片发送

mac地点:

head中包含的源和目标地点由来:ethernet划定接入internet的装备都必需具有网卡,发送端和吸收端的地点便是指网卡的地点,即mac地点。

mac地点:每块网卡出厂时都被烧制上一个天下唯一的mac地点,长度为48位2进制,通常由12位16进制数表现(前六位是厂商编号,后六位是流水线号)

广播:

有了mac地点,同一网络内的两台主机就可以通讯了(一台主机经过arp协议获取别的一台主机的mac地点)ethernet接纳最原始的办法,广播的办法举行通讯,即盘算机通讯基本靠吼

3、网络层:有了ethernet、mac地点、广播的发送办法,天下上的盘算机就可以互相通讯了,成绩是天下范围的互联网是由一个个互相断绝的小的局域网构成的,那么假如一切的通讯都接纳以太网的广播办法,那么一台机器发送的包全天下都市收到,这就不仅仅是听从低的成绩了,这会是一种劫难

上图结论:必需找出一种办法来区分哪些盘算机属于同一广播域,哪些不是,假如是就接纳广播的办法发送,假如不是,就接纳路由的办法(向不同广播域/子网分发数据包),mac地点是无法区分的,它只跟厂商有关。

网络层功效:引入一套新的地点用来区分不同的广播域/子网,这套地点即网络地点

IP协议:

划定网络地点的协议叫ip协议,它界说的地点称之为ip地点,广泛接纳的v4版本即ipv4,它划定网络地点由32位2进制表现

范围0.0.0.0-255.255.255.255

一个ip地点通常写成四段十进制数,例:172.16.10.1

ip地点分红两局部

网络局部:标识子网

主机局部:标识主机

注意:单纯的ip地点段只是标识了ip地点的品种,从网络局部或主机局部都无法辨识一个ip所处的子网

例:172.16.10.1与172.16.10.2并不克不及确定二者处于同一子网

子网掩码

所谓"子网掩码",就是表现子网络特性的一个参数。它在情势上同等于IP地点,也是一个32位二进制数字,它的网络局部全部为1,主机局部全部为0。好比,IP地点172.16.10.1,假如已知网络局部是前24位,主机局部是后8位,那么子网络掩码就是
11111111.11111111.11111111.00000000,写成十进制就是255.255.255.0。

晓得"子网掩码",我们就能推断,随意两个IP地点对否处在同一个子网络。办法是将两个IP地点与子网掩码分散举行AND运算(两个数位都为1,运算后果为1,不然为0),然后比力后果对否相反,假如是的话,就标明它们在同一个子网络中,不然就不是。

好比,已知IP地点172.16.10.1和172.16.10.2的子网掩码都是255.255.255.0,叨教它们对否在同一个子网络?两者与子网掩码分散举行AND运算,

172.16.10.1:10101100.00010000.00001010.000000001

255255.255.255.0:11111111.11111111.11111111.00000000

AND运算得网络地点后果:
10101100.00010000.00001010.000000001->172.16.10.0

172.16.10.2:10101100.00010000.00001010.000000010

255255.255.255.0:11111111.11111111.11111111.00000000

AND运算得网络地点后果:
10101100.00010000.00001010.000000001->172.16.10.0

后果都是172.16.10.0,因此它们在同一个子网络。

总结一下,IP协议的作用主要有两个,一个是为每一台盘算机分派IP地点,另一个是确定哪些地点在同一个子网络。

ip数据包

ip数据包也分为head和data局部,无须为ip包界说单独的栏位,直接放入以太网包的data局部

head:长度为20到60字节

data:最长为65,515字节。

而以太网数据包的"数据"局部,最长仅有1500字节。因此,假如IP数据包凌驾了1500字节,它就必要支解成几个以太网数据包,分开发送了。

ARP协议

arp协议由来:盘算机通讯基本靠吼,即广播的办法,一切表层的包到最初都要封装上以太网头,然后经过以太网协议发送,在谈及以太网协议时分,我门了解到通讯是基于mac的广播办法完成,盘算机在发包时,获取本身的mac是容易的,怎样获取目标主机的mac,就必要经过arp协议

arp协议功效:广播的办法发送数据包,获取目标主机的mac地点

协议事情办法:每台主机ip都是已知的

比如:主机172.16.10.10/24拜候172.16.10.11/24

3.1起首经过ip地点和子网掩码区分出本人所处的子网

3.2分析172.16.10.10/24与172.16.10.11/24处于同一网络(假如不是同一网络,那么下表中目标ip为172.16.10.1,经过arp获取的是网关的mac)

3.3这个包会以广播的办法在发送端所处的自网内传输,一切主机吸收后拆开包,发觉目标ip为本人的,就呼应,前往本人的mac

4、传输层:网络层的ip帮我们区分子网,以太网层的mac帮我们找到主机,然后各位使用的都是使用步骤,你的电脑上约莫同时开启qq,暴风影音,等多个使用步骤,那么我们经过ip和mac找到了一台特定的主机,怎样标识这台主机上的使用步骤,答案就是端口,端口即使用步骤与网卡关联的编号。

传输层功效:创建端口到端口的通讯

增补:端口范围0-65535,0-1023为体系占用端口

tcp协议:可靠传输,TCP数据包没有长度限定,实际上可以无穷长,但是为了确保网络的听从,通常TCP数据包的长度不会凌驾IP数据包的长度,以确保单个TCP数据包不必再支解。

udp协议:

不成靠传输,"报头"局部一共仅有8个字节,总长度不凌驾65,535字节,恰好放进一个IP数据包。

tcp报文

tcp三次握手和四次挥手

5、使用层:用户使用的都是使用步骤,均事情于使用层,互联网是开发的,各位都可以开发本人的使用步骤,数据多种多样,必需划定好数据的构造情势

使用层功效:划定使用步骤的数据格式。

例:TCP协议可以为种种千般的步骤转达数据,好比Email、WWW、FTP等等。那么,必需有不同协议划定电子邮件、网页、FTP数据的格式,这些使用步骤协议就构成了"使用层"。

6、Socket:我们晓得两个历程假如必要举行通讯最基本的一个条件能可以唯一的标示一个历程,在当地历程通讯中我们可以使用PID来唯一标示一个历程,但PID只在当地唯一,网络中的两个历程PID分歧几率很大,这时分我们必要另辟它径了,我们晓得IP层的ip地点可以唯一标示主机,而TCP层协媾和端标语可以唯一标示主机的一个历程,如此我们可以使用ip地点+协议+端标语唯一标示网络中的一个历程。

可以唯一标示网络中的历程后,它们就可以使用socket举行通讯了,什么是socket呢?我们常常把socket翻译为套接字,socket是在使用层和传输层之间的一个笼统层,它把TCP/IP层繁复的利用笼统为几个简便的接口需求用层调用已完成历程在网络中通讯。

socket劈头于UNIX,在Unix统统皆文件哲学的头脑下,socket是一种"掀开—读/写—关闭"形式的完成,办事器和客户端各自维护一个"文件",在创建毗连掀开后,可以向本人文件写入内容供对方读取大概读取对方内容,通讯完毕时关闭文件。

三、网络通讯完成

每台主机完成网络通讯的基本四要素:

本机的IP地点

子网掩码

网关的IP地点

DNS的IP地点

获取这四要素分两种办法:

1.静态获取

即手动设置

2.动态获取

经过dhcp获取

(1)最前方的"以太网标头",设置发射方(本机)的MAC地点和吸收方(DHCP办事器)的MAC地点。前者就是本机网卡的MAC地点,后者这时不晓得,就填入一个广播地点:FF-FF-FF-FF-FF-FF。

(2)后方的"IP标头",设置发射方的IP地点和吸收方的IP地点。这时,关于这两者,本机都不晓得。于是,发射方的IP地点就设为0.0.0.0,吸收方的IP地点设为255.255.255.255。

(3)最初的"UDP标头",设置发射方的端口和吸收方的端口。这一局部是DHCP协议划定好的,发射方是68端口,吸收方是67端口。

这个数据包布局完成后,就可以发射了。以太网是广播发送,同一个子网络的每台盘算机都收到了这个包。由于吸收方的MAC地点是FF-FF-FF-FF-FF-FF,看不出是发给谁的,以是每台收到这个包的盘算机,还必需分析这个包的IP地点,才干确定是不是发给本人的。当看到发射方IP地点是0.0.0.0,吸收方是255.255.255.255,于是DHCP办事器晓得"这个包是发给我的",而其他盘算机就可以丢弃这个包。

接下去,DHCP办事器读出这个包的数据内容,分派好IP地点,发送回去一个"DHCP呼应"数据包。这个呼应包的布局也是相似的,以太网标头的MAC地点是两边的网卡地点,IP标头的IP地点是DHCP办事器的IP地点(发射方)和255.255.255.255(吸收方),UDP标头的端口是67(发射方)和68(吸收方),分派给哀求端的IP地点和本网络的具体参数则包含在Data局部。

新到场的盘算机收到这个呼应包,于是就晓得了本人的IP地点、子网掩码、网关地点、DNS办事器等等参数。

四、例举主机拜候网站的网络通讯历程

起首掀开欣赏器,在地点栏输入URL,回车,显现网站内容。这是我们几乎天天都在做的事,那这个历程中毕竟是什么原理呢?HTTP、TCP、DNS、IP这些耳熟能详的名词都在什么时分起着什么作用呢?在这里全体梳理一遍。

4.1整个历程根老实做底下几个局部:

1、域名剖析成IP地点;

2、与目标主机举行TCP毗连(三次握手);

3、发送与收取数据;

4、与目标主机断开TCP毗连(四次挥手);

4.2底下分散举行具体分析。

4.2.1域名剖析成IP地点

起首说什么是域名剖析?

我们在欣赏器地点栏中输入的都是相似"www.baidu.com"、"www.qq.com"等等容易影象的英文域名,但这些字母你直接交给整个网络线路去寻觅目标主机找取得吗?找不到,由于每个主机在网络中的地点都是以IP标识的,IP才是主机在网络中的地点,域名只是为了便利用户影象罢了,这就要求欣赏器可以识别域名并且将其转化为对应的IP地点。

以是欣赏器会有一个DNS缓存,此中纪录了一些域名与IP的对应干系,供欣赏器快速查找必要的IP。但是这个DNS缓存不成能存下一切的域名-IP地点,何况IP地点偶尔分还会厘革,因此当在DNS缓存中没有找到的时分,就要先向DNS办事器哀求域名剖析,我们常听到的DNS办事器很大的作用就是举行域名剖析。

值得一提的是,DNS域名剖析时用的是UDP协议。

整个域名剖析的历程如下:

1、欣赏器向本机DNS模块发射DNS哀求,DNS模块天生干系的DNS报文;

2、DNS模块将天生的DNS报文转达给传输层的UDP协议单位;

3、UDP协议单位将该数据封装成UDP数据报,转达给网络层的IP协议单位;

4、IP协议单位将该数据封装成IP数据包,其目标IP地点为DNS办事器的IP地点;

5、封装好的IP数据包将转达给数据链路层的协议单位举行发送;

6、发送时在ARP缓存中查询干系数据,假如没有,就发送ARP广播(包含待查询的IP地点,收到广播的主机反省本人的IP,切合条件的主机将含有本人MAC地点的ARP包发送给ARP广播的主机)哀求,等候ARP回应;

7、取得ARP回应后,将IP地点与路由的下一跳MAC地点对应的信息写入ARP缓存表;

8、写入缓存后,以路由下一跳的地点添补目标MAC地点,以数据帧情势转发;

9、转发约莫举行多次;

10、DNS哀求抵达DNS办事器的数据链路层协议单位;

11、DNS办事器的数据链路层协议单位剖析数据帧,将内里的IP数据包转达给网络层IP协议单位;

12、DNS办事器的IP协议单位剖析IP数据包,将内里的UDP数据报转达给传输层UDP协议单位;

13、DNS办事器的UDP协议单位剖析收到的UDP数据报,将内里的DNS报文转达给DNS办事单位;

14、DNS办事单位将域名剖析成对应IP地点,产生DNS回应报文;

15、DNS回应报文->UDP->IP->MAC->我的主机;

16、我的主机收到数据帧,将数据帧->IP->UDP->欣赏器;

17、将域名剖析后果以域名和IP地点对应的情势写入DNS缓存表。

此中提到了一个ARP的看法,相似于DNS将域名翻译成IP,ARP则是将IP翻译成MAC地点,我们晓得了IP后,必要经过主机的MAC地点来更具体的找到主机。相反的也有一个ARP缓存,此中存储了一些IP与MAC地点的对应干系,假如缓存中找不到,就会举行广播来查找MAC地点,收到广播的主时机反省本人的IP对否是待查找的IP,是的话就前往本人的MAC地点。

假如做开发,屡屡还会交往到端口这个看法,那端口是什么呢?这里是指TCP/IP协议中的端口,端标语的范围从0到65535,好比用于欣赏网页办事的80端口,用于FTP办事的21端口等等,都有一些安稳的端标语,被占用后就不克不及被别的办事拿来传输数据了。

4.2.2与目标主机举行TCP毗连(三次握手)

取得域名对应的IP地点后,也就表现可以将数据送达目标主机了,这时分才开头我们常说的三次握手创建毗连。

HTTP的哀求时使用TCP举行传输的,可以确保可靠传输,并且有序,而TCP是有毗连的传输,也就是在传输数据之前,会创建我的主机与目标主机之间的毗连,然后才干传输数据,传输完成后,另有断开毗连。这也就是TCP的三次握手和四次挥手,大抵历程如下图所示:

具体的三次握手创建毗连的历程如下表述,此中数据包的传输历程相似上文哀求DNS办事器时的历程,就简便的表现一下:

1、向目标主机发送TCP毗连哀求报文;

2、该TCP报文中SYN标志位设为1,表现毗连哀求;

3、该TCP报文经过IP(DNS)->MAC(ARP)->网关->目标主机;

4、目标主机收到数据帧,经过IP->TCP,TCP协议单位回应哀求应对报文;

5、该报文中SYN和ACK标志设为1,表现毗连哀求应对;

6、该TCP报文经过IP(DNS)->MAC(ARP)->网关->我的主机;

7、我的主机收到数据帧,经过IP->TCP,TCP协议单位回应哀求确认报文;

8、该TCP报文经过IP(DNS)->MAC(ARP)->网关->目标主机;

9、目标主机收到数据帧,经过IP->TCP,毗连创建完成。

三次握手的历程就是一去一回一去,互相确认一下,就创建毗连啦。这个历程中任何一个报文出错大概超时,都要举行重传。

4.2.3发送与收取数据

如上所说,仅有创建毗连后才干开头传输数据,数据但是有多种传输办法,好比分段啊分组啊分时啊等等。而一个数据包的传输历程如下所示,以HTTP的GET办法哀求为例:

1、欣赏器向域名发射GET办法报文;

2、该GET办法报文经过TCP->IP(DNS)->MAC(ARP)->网关->目标主机;

3、目标主机收到数据帧,经过IP->TCP->HTTP,HTTP协议单位会回应HTTP协议格式封装好的HTML情势数据;

4、该HTML数据经过TCP->IP(DNS)->MAC(ARP)->网关->我的主机;

5、我的主机收到数据帧,经过IP->TCP->HTTP->欣赏器,欣赏器以网页情势体现HTML内容。

其他的HTTP办法在传输数据时办法都相似,只是所携带的内容不同。

4.2.4与目标主机断开TCP毗连(四次挥手)

数据传输完成后必要断开毗连,与创建时不同,断开毗连必要多一次,有四次挥手,至于为什么,看完历程我们再讲。

看图了解历程:

历程如下:

1、欣赏器向目标主机发射TCP毗连完毕哀求报文,此时进入FIN WAIT形态;

2、该报文FIN标志位设为1,表现完毕哀求;

3、TCP完毕哀求报文经过IP(DNS)->MAC(ARP)->网关->目标主机;

4、目标主机收到数据帧,经过IP->TCP,TCP协议单位回应完毕应对报文;

5、如今只是举行回应,由于目标主机约莫还多数据要传,并不急着断开毗连;

6、该报文中ACK标志位设为1,表现收到完毕哀求;

7、目标数据发送完一切数据后,向我的主机发射TCP毗连完毕哀求报文;

8、该报文FIN标志位设为1,表现完毕哀求;

9、TCP完毕哀求报文经过IP(DNS)->MAC(ARP)->网关->我的主机;

10、我的主机收到数据帧,经过IP->TCP,TCP协议单位回应完毕应对报文,此时进入TIME WAIT形态,由于不信赖网络是可靠的,假如目标主机充公到还可以重发;

11、该报文中的FIN标志位均设为1,表现完毕应对;

12、该TCP回应报文经过IP(DNS)->MAC(ARP)->网关->目标主机;

13、目标主布局闭毗连;

14、TIME WAIT等候完毕后,没有收到回复,分析目标正常关闭了,我的主机也关闭毗连。

这里的历程是以我的主机主动倡导完毕哀求开头的,实践上也可以由目标主机主动倡导,那么历程就会跟外表相反,但细节差不多。

FIN_WAIT形态是主动倡导哀求时等候确认信息,而TIME_WAIT形态是收到完毕哀求后发送确认信息后等候看对否必要重发。

如今来说说为什么断开毗连时必要四次挥手呢?由于创建毗连时目标主机可以直接发送SYN(同步)+ACK(应对)报文。而当断开时,目标主机收到FIN后约莫还多数据要发,并不一定直接断开,以是先发送一次应对,见告我的主机收到了哀求,等确认一切数据都发完了,再发送FIN,同时等候我的主机应对,这里的FIN和ACK就不克不及一同发送,以是必要四次。

4.2.5总结一下:

以上就是主机拜候网站时的网络通讯全历程,总结起来就是:

起主要经过域名找到IP,假如缓存里没有就要哀求DNS办事器;取得IP后开头于目标主机举行三次握手来创建TCP毗连;毗连创建后举行HTTP拜候,传输并获取网页内容;传输完后与目标主机四次挥手来断开TCP毗连。

版权声明:本文来自互联网整理发布,如有侵权,联系删除

原文链接:https://www.yigezhs.comhttps://www.yigezhs.com/qingganjiaoliu/39955.html


Copyright © 2021-2022 All Rights Reserved 备案编号:闽ICP备2023009674号 网站地图 联系:dhh0407@outlook.com