网络初识~

目录

一,基础认识

二,TCP/IP五层模型

三,封装与分用

封装:

1.应用层(应用程序):

2.传输层:

3.网络层:

4.数据链路层:

5.物理层:

分用:

1.理论过程

2.实际应用


一,基础认识

IP地址:描述一个设备在网络上的位置,计算机通过数字来描述,本质上是32位,4个字节的整数,为方便表示,往往IP地址表示成"点分十进制"。

有了IP可以确定主机,但是一个主机上可能有很多程序在使用网络~~

端口号:描述了一个主机上的某个应用程序,每个程序在进行网络通信过程中,都需要有一个端口号(可能是用户手动指定的,也可能是系统自动分配的)同一个主机上,程序之间使用的端口号不能冲突(端口号也是一个整数)

进行一次网络通信的过程中,涉及到的IP和端口各有两个,分别为

目的IP:标识目的主机

目的端口:标识目的主机中该次通信接收数据的进程

源IP:标识源主机

源端口:标识源主机中该次通信发送数据的进程

就和买东西一样,对应收件人地址,电话,发件人地址,电话。

协议:通信过程中的约定,发送方和接收方需要提前商量好数据的格式,才能确保两者之间能够正确进行沟通。

协议就是一种约定,确保不同的厂商之间生产的设备能够相互配合。

网络通信过程中,需要涉及到的细节,其实是非常非常多的,如果要一个协议完成,就需要约束方方面面的内容,非常多的细节,导致这个协议非常复杂

一个协议太复杂太庞大,非常不利于学习和维护,所以需要把一个高大全的协议,拆分成多个功能更单一,"小而美"的协议,为了这些协议更好的相互配合,引入了协议分层

网络通信协议中,把功能定位相似的协议放到同一层中,上层协议会调用下层协议的功能,下层协议给上层协议提供服务,且只有相邻的层次之间可以进行沟通,不能跨层次调用。

协议分层还附带一些好处:

1.上层协议直接使用下层协议即可,不需要了解下层协议的细节(相当于下层协议把细节封装好了)。

2.某一层的协议进行替代之后,对于其他层没啥影响。

二,TCP/IP五层模型

OSI七层网络协议:物理层,数据链路层,网络层,传输层,会话层,表示层和应用层。

后来在实施的过程中,太麻烦了,就简化成了五层

TCP/IP五层协议:应用层,传输层,网络层,数据链路层,物理层

简述各层的作用:

应用层:程序拿到数据后,要用来干嘛就干嘛

传输层:负责关注网络数据包的起点和终点~(从哪来到哪里去) 端到端之间的传输 上海-西安

网络层:负责关注起点和终点之间,要走哪条路~~(路径规划)上海->南京->无锡->西安

数据链路层:负责两个相邻节点之间的传输~~(上海到南京,飞机空运;南京到无锡,铁路运输)

物理层:通信过程中的基础设施~~(类似公路,铁路)

对于一台主机,它的操作系统内核实现了从传输层到物理层的内容,即TCP/IP五层模型的下四层

对于一台路由器,它实现了从网络层到物理层。即下三层

对于一台交换机,它实现了从数据链路层到物理层,即下两层

对于集线器,它只实现了物理层。

其中,经典说路由器是工作在网络层,交换机工作在数据链路层,但事实上,真实世界的交换机和路由器要更复杂,很多交换机具备一些路由器的功能,也能在网络层工作,同理,很多路由器具备一些交换机的功能,也能在数据链路层工作。

三,封装与分用

封装:

1.应用层(应用程序):

如QQ发送信息,QQ从消息输入中获取到用户输入的hello,就要将这个字符串构造成一个应用层的数据包,QQ这样的程序内部就设置了一个应用层协议,应用层数据包就是按照这个应用层协议约定的格式来构造的,如:

应用程序就会调用操作系统提供的api,把这个数据交给传输层。

2.传输层:

传输层就会把上述的数据作为一个整体,再构造成一个传输层的数据包,传输层涉及到的协议,最主要的就是TCP和UDP,假定使用UDP来进行通信,就会构造一个UDP的数据包,如:

形如上述添加报头的过程就是封装,其实就是字符串拼接,只不过拼的报头,具有一定的结构

对于UDP报头来说,承载的最重要的信息就是源端口和目的端口

拼好传输层数据包之后,就要把这个数据包进一步交给下层,网络层继续进行封装了

(交给下层,指的是,下层协议提供一组api,上层调用这个api,并且把刚才构造好的数据通过参数传过去,下层协议就可以来处理这个数据了)

3.网络层:

这里涉及到最核心的协议,IP协议

网络层 IP协议,把刚才的传输层的数据包作为一个整体,再拼接上IP协议的报头,构造成一个IP数据包

IP报头中也会包含一些辅助转发的关键信息,其中最重要的就是源IP和目标IP了。

构造完成完整的IP数据包后,IP协议继续调用数据链路层的api,把数据再交给数据链路层这里的协议进行处理

4.数据链路层:

数据链路层这里涉及到的核心协议是以太网,其中以太是用来表示网络数据传输的介质

以太网就是我们日常最常见的有线网络,我们日常用到的网线,也叫做"以太网线",日常用到的网口也叫做''以太网口'',用到的交换机也叫做"以太网交换机"

一样的进行封装,将IP数据包做完一个整体,在这个基础上添加上帧头和帧尾

数据还要继续向下传,交给物理层

5.物理层:

把上述这样的以太网数据帧,二进制结构转换成光信号/电信号/电磁波然后进行发送

光纤:光信号,通过光的频谱进行编码;网线:电信号,高电平/低电平;无线wifi:电磁波

经过以上的一系列操作,数据才终于从你的电脑上发送出去了

分用:

1.理论过程

暂时不考虑中间过程,假如上面发送的数据包已经到了B的网口,B如何处理,B的处理过程,就称为"分用"。

1.B的物理层收到了光信号/电信号/电磁波,就会把这些物理信号转换成数字信号(二进制的0101),得到一个以太网数据帧,进一步的把这个数据帧交给数据链路层处理

2.数据链路层按照以太网数据帧的格式来解析,取出其中的载荷(即封装时上层传下来的IP数据包),再交给上层协议(注意发送方和接受方得使用一样的协议才行,传的UDP就得UDP协议来,传TCP就得TCP协议来)

3.网络层 IP协议 按照IP协议的格式进行解析,取出其中的载荷,再交给上层协议

4.传输层 UDP协议 按照UDP协议格式来解析,取出其中的载荷,再交给上层协议

5.应用层 QQ应用程序 按照QQ应用程序内部的应用层协议来解析数据。

其实,分用的过程,就是封装的逆向过程。

2.实际应用

真实情况下,两个主机不太会是通过网线直连的,而是通过一系列的交换机和路由器来进行数据转发的

但是实际上即使是经过一系列的交换机和路由器,上述的封装分用过程也是同样适用的,只不过封装分用的程度不一定是到应用层(五层都有)

对经典交换机来说,就只需要封装分用到数据链路层即可,经典的路由器来说,就只需要封装分用到网络层即可

假如如图左边第一个小正方形是交换机:

交换机就会把上述光电信号转换成以太网数据帧,交给数据链路,交换机的数据链路层再根据得到的数据进行解析~~

这个解析过程,一方面要取出载荷部分,另一方面,就要解析到帧头中的关键信息~~

再根据帧头中的信息,决定下一步把数据往哪里进行发送,根据这个情况再构造出新的以太网数据帧~~

再把这个新的数据继续通过物理层发送出去

如果是路由器,情况就稍微复杂一点点~~就是需要封装到网络层

上述过程是经典的交换机和路由器,如果是现实中的情况就可能更加复杂,如交换机要截取/解析你传输的数据,就会封装分用到应用层,把你的传的数据取出来看看

因此,网络传输数据,并非是一个简单的事情,背后有大量的工作,只不过这些工作都是硬件&驱动&操作系统帮我们完成了~~

Ciallo~ (∠・ω< )⌒★

相关推荐
wzlsunice882 小时前
用vir-manager创建kvm虚拟机(创建网桥和配置网络等)
运维·网络
思茂信息3 小时前
CST License(Flexnet)设置与问题处理方法
服务器·网络·单片机·3d·php·1024程序员节·cst
m0_738120723 小时前
内网横向靶场——记录一次横向渗透(三)
开发语言·网络·安全·web安全·网络安全·php
Jerry2505094 小时前
微信小程序必要要安装SSL证书吗?小程序SSL详解
网络·网络协议·网络安全·微信小程序·小程序·https·ssl
大G的笔记本5 小时前
gRPC vs RPC 高频面试题
网络·网络协议·rpc
无敌最俊朗@5 小时前
7层/4层模型讲解
网络
代码程序猿RIP6 小时前
【Linux面经】OSI七层模型和TCP/IP四层体系结构
linux·网络·面试·面经
njnu@liyong6 小时前
HTTP-发展史
网络·网络协议·http
_星辰大海乀6 小时前
UDP / TCP 协议
网络·网络协议·tcp/ip·udp·tcp·三次握手·四次挥手