计算机网络的五层协议

一、网络部分基本知识

网络通信原理:

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

互联网协议的功能:定义计算机如何接入internet,以及接入internet的计算机通信的标准。

先说一下计算机网络的五层协议的体系结构,以及各层协议:
1.物理层
2.数据链路层
3.网络层
4.传输层
5.应用层

每层运行常见物理设备:

传输层: 四层交换机 、四层的路由器
网络层:三层交换机、路由器
数据链路层:网桥、以太网交换机、网卡
物理层:中继器、集线器、双绞线

1.物理层:

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

2.数据链路层:

数据链路层由来:单纯的电信号0和1没有任何意义,必须规定电信号多少位一组,每组是什么意思

数据链路层的功能:定义电信号的分组方式

以太网协议:
早期的时候各个公司都有自己的分组方式,后来形成了统一的标准,即以太网协议ethernet

ethernet规定:
1.一组电信号构成一个数据包,叫做"帧"
2.每一个数据帧分为:报头head和数据data两部分
head | data

head包含:(固定18个字节)
1.发送者/源地址,6个字节
2.接收者/目标地址,6个字节
3.数据地址,6个字节

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

1.数据包的具体内容
head长度+data长度=最短64字节,最长1518字节,超过最大限制就分片发送

mac地址:
head中包含的源和目的地址由来:ethernet规定接入internet的设备都必须具备网卡,发送端和接收端的地址便是网卡的地址,即mac地址

mac地址:每块网卡出厂时都被烧制上一个世界唯一的mac地址,
12位16进制数表示(前6位是厂商编号,后六位是流水线号)

广播:
有了mac地址,同一网络内的两台主机就可以通信了(一台主机通过arp协议获取另一台主机的mac地址,ethernet采用最原始的方式,广播的方式进行通信,即计算机通信基本靠吼(一个局域网里))

3.网络层:

网络层由来:

有了ethernet、mac地址、广播的发送方式,世界上的计算机
就可以彼此通信了,问题是世界范围的互联网是由一个个彼此
隔离的小的局域网组成的,那么如果所有的通信都采用以太网
的广播方式,那么一台机器发送的包全世界都会收到。
这就不仅仅是效率低的问题了,这会是一种灾难。因此,必须
找到一种方法,能够区分哪些MAC地址属于同一个子网络,哪些不是。

以太网包只能在一个局域网内发是哪个,一个局域网是一个广播
域,以太网的广播只能在一个广播域内发送,跨广播域的通信只能
通过路由转发

如果是就采用广播的方式发送,如果不是,就采用路由的方
式(向不同广播域/子网分发数据包),mac地址是无法区分的,
它只跟厂商有关,所以就有了ip地址,它的作用是引进一套新
的地址,使得我们能够区分不同的计算机是否属于同一个子
网络。这套地址就叫做”网络地址”,简称”网址”

ip协议:

ip数据包:
ip数据包也分为head和data部分,无需为ip包定义单独的栏位,
直接放入以太网包的data部分

head:长度为20到60字节
data:最长为65515字节
而以太网数据包的"数据部分",最长只有1500字节。因此,如果
ip数据包超过了1500字节,它就需要分割成几个以太网数据包,
分开发送了

以太网 | ip头 | ip数据

互联网上的每一台计算机,都会分配到一个IP地址。这个地址分成两个部分,前一部分代表网络,后一部分代表主机。比如,IP地址172.16.254.1,这是一个32位的地址,假定它的网络部分是前24位(172.16.254),那么主机部分就是后8位(最后的那个1)。处于同一个子网络的电脑,它们IP地址的网络部分必定是相同的,也就是说172.16.254.2应该与172.16.254.1处在同一个子网络。

但是,问题在于单单从IP地址,我们无法判断网络部分。还是以172.16.254.1为例,它的网络部分,到底是前24位,还是前16位,甚至前28位,从IP地址上是看不出来的。

那么,怎样才能从IP地址,判断两台计算机是否属于同一个子网络呢?这就要用到另一个参数”子网掩码”(subnet mask)。

所谓”子网掩码”,就是表示子网络特征的一个参数。它在形式上等同于IP地址,也是一个32位二进制数字,它的网络部分全部为1,主机部分全部为0。比如,IP地址172.16.254.1,如果已知网络部分是前24位,主机部分是后8位,那么子网络掩码就是11111111.11111111.11111111.00000000,写成十进制就是255.255.255.0。

知道”子网掩码”,我们就能判断,任意两个IP地址是否处在同一个子网络。方法是将两个IP地址与子网掩码分别进行AND运算(两个数位都为1,运算结果为1,否则为0),然后比较结果是否相同,如果是的话,就表明它们在同一个子网络中,否则就不是。

比如,已知IP地址172.16.254.1和172.16.254.233的子网掩码都是255.255.255.0,请问它们是否在同一个子网络?两者与子网掩码分别进行AND运算,结果都是172.16.254.0,因此它们在同一个子网络。

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

ARP协议
arp协议由来:计算机通信基本靠吼,即广播的方式,所有上层的包
到最后都要封装上以太网头,然后通过以太网协议发送,在谈及
以太网协议的时候,我们了解到,
通信是基于mac的广播方式实现,计算机在发包时,获取自身的mac
是容易的,如何获取目标主机的mac,就需要通过arp协议

arp协议功能:广播的方式发送数据包,获取目标主机的mac地址

协议工作方式:每台主机ip都是已知的
例如:主机172.16.10.10/24访问172.16.10.11/24

一、首先通过ip地址和子网掩码区分自己所处的子网
    场景        数据包地址
    同一子网     目标主机mac,目标主机ip
    不同子网      网关mac,目标主机ip

二、分析172.16.10.10/24与172.16.10.11/24处于同一网络,
   如果不是同一网络,那么下标中目标ip为172.16.10.1通过
   arp获取的是网关的mac

             源mac    目标mac             源ip          目标ip                                数据部分
发送端主机   发送端    FF:FF:FF:FF:FF:FF  172.16.10.11   172.16.10.11     数据
(过程:
        首先分析是否在同一个局域网,如果在,目标Mac是FF:FF:FF:FF:FF:FF
        所有人都收到了,解包后知道了发送端是想要mac地址,然后看目标ip,只有
        ip是这个的才会返回自己的mac,其他的会丢弃这个包
            )

当网络层的IP包进入链路层时,链路层该如何加这个头部的目标信息呢?它要依靠ARP协议来完成.显然如何加链路头并不是网络层的功能。而且,ARP协议工作时,并不使用IP的包头。所以也有很多人说,ARP是链路层的。可以说,在TCP/IP模型中,ARP协议属于IP层;在OSI模型中,ARP协议属于链路层。

4.传输层
有了MAC地址和IP地址,我们已经可以在互联网上任意两台主机上建立通信。

接下来的问题是,同一台主机上有许多程序都需要用到网络,比如,你一边浏览网页,一边与朋友在线聊天。当一个数据包从互联网上发来的时候,你怎么知道,它是表示网页的内容,还是表示在线聊天的内容?

也就是说,我们还需要一个参数,表示这个数据包到底供哪个程序(进程)使用。这个参数就叫做”端口”(port),它其实是每一个使用网卡的程序的编号。每个数据包都发到主机的特定端口,所以不同的程序就能取到自己所需要的数据。

“端口”是0到65535之间的一个整数,正好16个二进制位。0到1023的端口被系统占用,用户只能选用大于1023的端口。不管是浏览网页还是在线聊天,应用程序会随机选用一个端口,然后与服务器的相应端口联系。

“传输层”的功能,就是建立”端口到端口”的通信。相比之下,”网络层”的功能是建立”主机到主机”的通信。只要确定主机和端口,我们就能实现程序之间的交流。因此,Unix系统就把主机+端口,叫做”套接字”(socket)。有了它,就可以进行网络应用程序开发了。

UDP协议

现在,我们必须在数据包中加入端口信息,这就需要新的协议。最简单的实现叫做UDP协议,它的格式几乎就是在数据前面,加上端口号。

UDP数据包,也是由”标头”和”数据”两部分组成。

“标头”部分主要定义了发出端口和接收端口,”数据”部分就是具体的内容。然后,把整个UDP数据包放入IP数据包的”数据”部分,而前面说过,IP数据包又是放在以太网数据包之中的,所以整个以太网数据包现在变成了下面这样:

UDP数据包非常简单,”标头”部分一共只有8个字节,总长度不超过65,535字节,正好放进一个IP数据包。

TCP协议

UDP协议的优点是比较简单,容易实现,但是缺点是可靠性较差,一旦数据包发出,无法知道对方是否收到。

为了解决这个问题,提高网络可靠性,TCP协议就诞生了。这个协议非常复杂,但可以近似认为,它就是有确认机制的UDP协议,每发出一个数据包都要求确认。如果有一个数据包遗失,就收不到确认,发出方就知道有必要重发这个数据包了。

因此,TCP协议能够确保数据不会遗失。它的缺点是过程复杂、实现困难、消耗较多的资源。

TCP数据包和UDP数据包一样,都是内嵌在IP数据包的”数据”部分。TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。

5.应用层
应用层由来:

应用程序收到”传输层”的数据,接下来就要进行解读。由于互联网是开放架 构,数据来源五花八门,必须事先规定好格式,否则根本无法解读。

应用层功能:规定应用程序的数据格式

例:TCP协议可以为各种各样的程序传递数据,比如Email、WWW、
FTP等等。那么,必须有不同协议规定电子邮件、网页、FTP数据的
格式,这些应用程序协议就构成了"应用层"。

发送数据是一个封装的过程,接收数据则是解封装。

上述就是网络的5层协议讲解

#-----------------------------------------------------------------------------

补充:

http协议:
http是一个通信规则,通信规则规定了客户端发送给服务端的内容格式,也规定了服务端发送给客户端的内容格式。其实,我们要学习的就是这两个格式!客户端发送给服务器的格式叫"请求协议";服务器发送给客户端的格式叫"响应协议"

特点:
http叫超文本传输协议,基于请求/响应模式的!

http是无状态协议(一次请求,拿到数据后,再和服务端无任何关系),
ftp是有状态的

请求协议
请求协议的格式如下:
请求首行: //请求方式,请求路径 协议和版本,例如:GET/index.html HTTP/1.1
请求头信息: //请求头内容,即为key:value格式,例如: Host:localhost
空行: //用来和请求体分隔开
请求体: //get没有请求体,只有post有请求体
因为如果是get方式,数据都跟在url的后面传到服务端去的。

浏览器发送给服务器的内容就是这个格式的,如果不是这个格式服务器将
无法解读!在http协议中,请求有很多请求方法,其中最为常用的就是
get和post。

get请求
http默认的请求方法就是get
数据必须在1k之内

get请求的常用操作:
   1.在浏览器的地址栏中直接给出url,那么就一定是get请求
   2.点击页面上的超链接也一定是get请求
   3.提交表单时,表单默认使用get请求,但可以设置为post

转载:https://blog.csdn.net/wy757510722/article/details/73917007

你可能感兴趣的:(计算机网络,计算机网络五层协议)