确定不来看看新出炉的知识???
目录
1.网络互连
1.1局域网
1.2广域网
2.网络通信基础
2.1IP地址
2.2端口号
3.认识协议
3.1五元组
3.2协议分层
3.3OSI 7层模型
3.4TCP/IP5层(或5层)模型
3.5网络设备所在分层
4.封装和分用
①什么是网络互连:
将多台计算机连接在一起,完成数据共享。数据共享本质是 网络数据传输 ,即计算机之间通过网络来传输数据,也称为 网络通信 。②网络互连的分类:根据网络互连的规模的不同,我们将其分为局域网和广域网。
①什么是局域网?
局域网,即 Local Area Network ,简称 LAN。Local 即标识了局域网是本地,局部组建的一种私有网络。 局域网内的主机之间能方便的进行网络通信,又称为内网;局域网和局域网之间在没有连接的情况下, 是无法通信的。②局域网组件网络的方式:a.基于网线直连b.基于交换机的组建
借助交换机组成的一个局域网使得局域网内部的主机之间可以相互进行访问,交换机就是把若干个设备组建到一个局域网中
c.基于路由器的组建
认识路由器:
对于路由器而言其实有两类端口,WAN口和LAN口。
在这里是如何实现局域网的?
其中插在LAN口上的设备,在一个局域网里,通过WAN口连接到另一个局域网,这个地方一共就连接了两个局域网。
d.基于集线器
实际中基本没有使用集线器组网的,因为集线器相当于把一根网线给分叉了
①什么是广域网:
广域网,即 Wide Area Network ,简称 WAN 。通过路由器,将多个局域网连接起来,在物理上组成很大范围的网络,就形成了广域网。广域网内部的局域网都属于其子网。②举个例子:全世界最大的广域网Internet(因特网)
我们刚刚认识了网络互连,我们知道网络互连的目的是进行网络通信,也即是网络数据传输,更具体一点,是网络主机中的不同进程间,基于网络传输数据。
那么,在组建的网络中,如何判断到底是从哪台主机,将数据传输到那台主机呢?这就需要使用 IP 地址来标识。
①什么是IP地址?
描述了网络上一个主机的位置(就类似于我们买快递的收货地址)
②IP地址的格式:
IP 地址是一个 32 位的二进制数,通常被分割为 4 个 “8 位二进制数 ” (也就是 4 个字节),如:01100100.00000100.00000101.00000110 。 通常用“ 点分十进制 ” 的方式来表示,即 a.b.c.d 的形式( a,b,c,d 都是 0~255 之间的十进制整数)。如:100.4.5.6。③特殊的IP:
127.0.0.1这是一个特殊的IP地址,环回IP,表示自己这个主机。
本机环回主要用于本机到本机的网络通信(系统内部为了性能,不会走网络的方式传输),对于开发网络通信的程序(即网络编程)而言,常见的开发方式都是本机到本机
①什么是端口号?
描述了主机上的某个应用程序(拿快递时收件人的电话,我们可以通过电话找到收件人,同理我们可以通过端口号找到某个应用程序)比如我们安装的MySQL的端口号为3306②端口号的格式:端口号本质上是一个2个字节(16位)的无符号整数,范围是0~65535③端口号的作用:服务器程序在启动的时候,就需要绑定好一个 端口号,这样当用户对此服务器进行访问时(即为客户端来访问),才能够准确找到该程序进行访问。
①什么是协议:
要进行有效的通信,前提就是能够明确通信协议。协议本质上就是约定,发出来的数据是什么样的格式,接收方就需要按照对应的格式来进行解析。
②在网络通信中协议的体现:
而在网络通信的时候,本质上传输的是光信号和电信号,通过光信号的频率(高频率/低频率),电信号的电平(高电平/低电平)来表示0/1。
③举个例子更好理解协议:
A同学约了网友B同学见面,事先她们并不认识,她们就会在面基前给对方提示一些东西。A同学说:“我今天穿的粉色连衣裙”,B同学说:“我今天穿的紫色牛仔裙,背了红色书包”。这样,在她们之间就达成了一种协议,那么她们不出意外就能通过她们之间约定的这种协议而找到彼此。
①什么是五元组:
在 TCP/IP 协议中,用五元组来标识一个网络通信:a. 源 IP :标识源主机b. 源端口号:标识源主机中该次通信发送数据的进程c. 目的 IP :标识目的主机d. 目的端口号:标识目的主机中该次通信接收数据的进程e. 协议号:标识发送进程和接收进程双方约定的数据格式
①为什么要协议分层?
在网络通信的这个过程中其实是相当复杂的,我们如果仅仅设定一个协议那么任务量是相当大的,对于我们而言,更好的办法就是把这个大协议拆成很多个小的协议,这个样子每个版块就能够负责相应的文件任务,不仅做到了互不影响,而且效率也更高了。
②协议分层的好处是什么?
(1)每层协议不需要理解其它层协议的细节,从而做到了更好的封装
(2)能够随时把对应层的协议进行一个替换,实现了更好的解耦合操作
③给大家举个实例理解一下协议分层:
比如有一场大型的篮球比赛,为了做好保密工作,双方教练都对其队员的身份信息进行了保密工作,若是某个运动员在比赛过程受了伤,那么相应的替补就会替他上场,来完成这场比赛。
这种模型只是存在于教课书中,因此我们这里就只同一个图来进行简单的介绍:
①先用一个图来认识一下与OSI七层模型的一个区别与联系:
②分别介绍一下各层:
(因为在后面的时候我们会进一步详细介绍,因此在这里就简单地介绍一下)
a.应用层:
和应用程序有关,通俗的说就是你传输这个程序是干嘛的,不同的应用程序的用途也是不同的。
b.传输层:负责端点的通信,这里主要是指起始位置和最终位置。(比如网购的时候,对于商家而言,他要发货就只需要知道起始地址和最终地址,置于中途怎么走不归它管)c.网络层:负责点到点之间的通信,这里就是全局的了,网络中的任意节点,到任意一个节点的通信,当然这些就不一定是相邻的,然后网络层的协议就负责在这两个点之间规划出一条最优的路线,当然路线是很多的,但是会根据用户的不同需求来给出最合适的一条。(类似于高德地图,看你的需求是时间短,还是开销少,或者是换乘少)d.数据链路层:负责完成相邻两个设备的通信,这里是局部的,可以理解为一个网线连接的两个设备e.物理层:
针对网络通信的硬件设备,类似于网线,网卡,对硬件设备的约定,就是物理层协议所负责的范畴,需要保证所有的主机和网络设备之间都是相互匹配的③用通俗的实例来对整个层面进行一个介绍。比如我要从成都到北京去出差,此时出差这件事就是所谓的应用层,那么我的出发地是成都,目的地是北京,那么这就是确定了的,这就是所谓的传输层,并且从成都到北京我可以走多条路,A从成都到河北再到北京(路程最短),B从成都到天津再到北京(开销最小),那么这个时候结合我自身考虑,我需要的是尽快到达,那么我会选择方案A,这就是对我这个客户而言的最优方案选择,那么这里体现的就是网络层,然后我要先从成都到河北这两个相邻的路就叫做数据链路层,而我乘坐火车还是飞机这种交通硬件工具就是我们所说的物理层。④为什么要说TCP/IP五层(或四层)?因为对于程序员而言,对物理层属于硬件设备,不属于工作范畴,所以也称为TCP/IP四层。
一台主机,其实就对应了物理层到应用层五层都实现了
一台路由器,主要就是物理层到网络层(实现了物理层,数据链路层,网络层)
一台交换机,主要就是物理层到数据链路层(实现了物理层,数据链路层)
①封装(注意!!!这里的封装不是java中的封装没有啥关系)
而不同分层之间是如何配合的呢?我们通过下面的例子来进行说明
比如,使用QQ给同学发送一条消息:“你在干嘛”
用户A在键盘上输入了“你在干嘛”这条消息
应用层:
根据用户A输入的内容,把数据构造成一个应用层的协议报文,而这个应用层协议报文是由开发QQ的程序员所进行设定的(需要注意的是程序员涉及的设定大多都是应用层,而其余传输层,网络层,操作系统,硬件,驱动等等都是已经实现好了的)
我们假设一种应用层的格式,对所发的消息进行如下封装。(这里的封装可以理解为我们人在出门的时候会进行衣着打扮)
接着应用层协议就调用操作系统提供的API(简称socket API) ,把应用层的数据交给传输层(此时就已经进入操作系统内核了)
传输层:
到了传输层之后,我们根据刚才传过来的数据,基于当前使用的传输层协议,来构造出一个传输层协议报文(传输层最典型的协议:UDP,TCP,此处以TCP为例)
而此处构造TCP报文的操作,可以视作一个简单的字符串拼接,而这里的拼接指的是二进制的拼接。然后就会把传输层的数据报交给网络层。
网络层:
拿到了完整的传输层数据报,就会再根据当前使用的网络协议(例如IP),再次进行封装,把TCP数据报构造成IP数据报,还是会添加一个协议报头
紧接着当前的网络层协议,就会把这个IP数据报,交给数据链路层(驱动程序)。
数据链路层:
在刚才的IP数据报基础上,根据当前使用的数据链路层协议,给构造成一个数据链路层的数据报(典型的数据链路层协议叫做"以太网"),就会构造成一个"以太网数据帧" 。
物理层:
这里做的工作就是根据刚才的以太网数据帧(一组0 1),把这里的0 1变成高低电平,通过网线传输出去,或者把这里的0 1变成高频/低频的电磁波,通过光纤/无线的方式传播出去
到这里为止:
数据就已经离开了当前主机,前往了下一个设备,下一个设备可能是其它设备,这里的用户A和B大概率不是网线直连的,中间就有很多个路由器和交换机来负责数据的转发。中间的过程我们先不做考虑,主要来看数据到了主机B后的表现。(也就是分用)
②分用(实质上就是封装的逆过程)
物理层:
先到物理层(硬件设备,网卡),主机B的网卡感知到了一组高低电平,然后就会把这些电平翻译成0 1的一串数据,然后这一串0 1就是一串完成的以太网数据帧,然后物理层就会把这个数据交给数据链路层(驱动程序)。
数据链路层:
然后数据链路层就会对这个数据进行解析,去掉帧头帧尾,取出里面的IP数据报,然后交给网络层协议(操作系统)
网络层:
网络层协议(IP协议)又会把这个数据进行解析,去掉IP数据报头,取出里面的TCP数据报,然后再交给传输层(操作系统内核)。
传输层:
传输层协议(TCP协议)又会把这个数据进行解析,去掉TCP报头,取出TCP报,交给应用层(应用程序 QQ)。
应用层:
应用层就是调用刚才的socket API从内核中读取到这个应用层数据报,再按照应用层协议进行解析,根据解析结构显示到窗口,这样就完成了一个数据具体的解析过程。
③中间过程的实现:
上述讨论的只是起点和终点的情况,A和B中间还有很多的路由器和交换机。(下面粗略介绍一下)
a.交换机
b.路由器
c.交换机和路由器
本节的内容就到这里啦,下期将会为大家介绍网络编程套接字哦~