网络原理初识一>网络基本的概念, 网络如何转发
目录:
一.网络基本的概念:
二. 封装和分用 (网络转发):
一.网络基本的概念:
1..局域网 (LAN):
局域网,即 Local Area Network,简称LAN。 Local 即标识了局域网是本地,局部组建的⼀种私有网络。 局域网内的主机之间能方便的进行网络通信,又称为内网;局域网和局域网之间在没有连接的情况 下,是无法通信的。 一般基于交换机和路由器组建
2.广域网 (WAN):
⼴域⽹,即 Wide Area Network,简称WAN。 通过路由器,将多个局域⽹连接起来,在物理上组成很⼤范围的⽹络,就形成了⼴域⽹。⼴域⽹内部 的局域⽹都属于其⼦⽹。
3.IP地址:
IP地址主要⽤于标识⽹络主机、其他⽹络设备(如路由器)的⽹络地址。简单说,IP地址⽤于定位主机的⽹络地址。 就像我们发送快递⼀样,需要知道对方的收货地址,快递员才能将包裹送到目的地。
3.端⼝号:
概念 在⽹络通信中,IP地址⽤于标识主机⽹络地址,端⼝号可以标识主机中发送数据、接收数据的进程。 简单说:端⼝号⽤于定位主机中的具体进程。 类似发送快递时,不光需要指定收货地址(IP地址),还需要指定收货⼈(端⼝号)。 格式 端⼝号是0~65535范围的数字,在⽹络通信中,进程可以通过绑定⼀个端⼝号,来发送及接收⽹络数 据。
4.协议:
概念 协议,⽹络协议的简称,⽹络协议是⽹络通信(即⽹络数据传输)经过的所有⽹络设备都必须共同遵 从的⼀组约定、规则。如怎么样建⽴连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能 相互通信交流。 协议(protocol)最终体现为在⽹络上传输的数据包的格式。(我们学习网络主要就是学习各种协议)
协议分层:网络通信非常复杂,所以我们把一个大的协议拆分成若干个小的,功能单一的协议所以协议会分很多层,各自管好各自的功能,实现上层协议调用下层协议,下层协议为上层协议提供服务
分层的好处:
类似于面向接口编程:定义好两层间的接口规范,让双方遵循这个规范来对接。 在代码中,类似于定义好⼀个接口,⼀⽅为接口的实现类(提供⽅,提供服务),⼀⽅为接口的使用 类(使⽤⽅,使⽤服务): • 对于使⽤⽅来说,并不关⼼提供⽅是如何实现的,只需要使⽤接口即可 • 对于提供⽅来说,利⽤封装的特性,隐藏了实现的细节,只需要开放接口即可。
5.五元组
在TCP/IP协议中,用五元组来标识一个网络通信(实现一次网络通信离不开以下元组):
1. 源IP:标识源主机
2. 源端口号:标识源主机中该次通信发送数据的进程
3. 目的IP:标识目的主机
4. 目的端口号:标识⽬的主机中该次通信接收数据的进程
5. 协议号:标识发送进程和接收进程双方约定的数据格式
6. OSI七层模型:
OSI 七层⽹络模型是⼀个逻辑上的定义和规范:把⽹络从逻辑上分为了7层。 OSI 七层模型是⼀种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输;
这一套分层只在教科书上,太复杂我们把它为TCP/IP五层(或四层)模型
7.TCP/IP五层(或四层)模型:
具体解释:
物理层:规定了网络通信一些硬件设施符合的要求 (网线,WiFi,光猫......)
数据链路层:完成两个相邻节点设备之间如何通信的 (网线把电脑和路由器/交换机连接起来)
网络层:两个任意设备之间如何通信 (之间可以隔着很多路由器和交换机)
传输层:也是两个任意设备之间如何通信,但是不考虑中间隔着多少个设备
应用层:Java程序员操作最多的层,关注怎么使用和应用程序直接相关。
注:这里也可以把物理层和数据链路层看作一个整体,因为这两层都直接于硬件设备直接相关
2. 封装和分用:
以下简述,实现一次网络通信的基本流程:通过QQ发一个简单的信息来叙述
封装:
第一步:应用层:
应用层获取用户输入,构造一个应用层数据包,这个应用层数据包就会遵守应用层的协议 (这个协议一般都是开发者自己自定义的)
数据包在发送和接收的时候,会涉及序列化,和反序列化;
序列化:把这个结构体的数据包,转化为字符串或者bit流的方式 (网络传输实际上就是0,1或者光电信号的方式传输)
第二步传输层:
应用程序调用传输层提供的API,把数据传输给传输层,传输层拿到数据后,构造传输层数据报,传输层主要协议TCP/UDP
注:数据报一般等于,报头+载荷
报头:该数据包的一些属性,比如TCP的端口,窗口大小等等。
载荷:拼接上的,一层的数据包
第三步网络层:
传输层继续调用网络层的API,把传输层的数据包交给网络层,网络层继续进行处理
第四步数据链路层:
IP协议继续调用数据链路层的API,把网络层的数据包交给数据链路层,数据链路层核心协议“以太网”,以太网这个协议也会进一步加工无力网络层的数据包。
注意:以太网不光会加上以太网数据报头,还会加上一个帧尾 (帧==报)
第五步物理层:
以太网把数据交给网卡,网卡会把上述的二进制数据,以电信号或者电磁波方式发出去
总结:从上层到下层,要调用下层的API,以上一层的数据包基础上,加上该层协议的报头,这就是封装 (这个封装和面向对象的封装不是一个意思
分用:
数据到达接收方主机,根据相邻层的协议逐层进行解析:
步骤一物理层接收:
数据到达接受对方的网卡,把光电信号还原成二进制,把二进制交给数据链路层
步骤二数据链路层:
数据链路层按照以太网协议进行解析,把报头和报尾取出来,把剩下的载荷往上传输给网络层
步骤三网络层:
网络层拿到数据后,根据IP协议进行解析,把IP报头去掉,剩下的载荷向上传给传输层
步骤四传输层:
传输层拿到数据后,根据TCP协议进行解析,把TCP报头去掉,剩下的载荷向上传给应用层
步骤五应用层:
QQ应用层程序解析,传来的数据,拿到关键信息展示到页面上
总结:封装和分用,是完全相反的过程
面试题:路由器和交换机分别工作在哪一层?
答:路由器工作在网络层
原因:路由器收到数据之后,经过三层转发,网络层,物理层,数据链路层;分别构造:网络层数据包,以太网数据帧,二进制信号进行转发
答:交换机工作在数据链路层
原因:路由器收到数据之后,经过二次转发,物理层解析,数据链路层解析,构造以太网数据帧,和二进制数据进行转发
原文地址:https://blog.csdn.net/robin_suli/article/details/144334920
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!