(javaEE)网络原理-初识 局域网和广域网 ip地址和端口号 协议 五元组 协议分层 OSI七层模型 网络数据通信的基本流程
目录
局域网和广域网
网络通信基础
ip地址和端口号:
协议
五元组
协议分层
OSI七层模型
网络数据通信的基本流程
局域网和广域网
根据网络互连的规模不同,可以划分为局域⽹和⼴域⽹
局域网和广域网
局域网:路由器,把两个设备连到同一个路由器上,在同一个局域网中了
广域网:通过路由器,将多个局域网连接起来,在物理上组成很大范围的网络,就形成了⼴域网。
全世界最大的广域网"因特网"The Internet
咱们所使用的广域网,其实就是一个"大一点的局域网
单机时代=>局域网时代=>广域网时代=>移动互联网时代~~
交换机:
交换机可以视为是"对路由器的接口进行了扩展"
家用路由器,一般就是查4个网线(1WAN口连运营商的设备)
交换机不会进行组局域网功能~可以把路由器的接口进行扩展下面这个图就是路由器和交换机:
很显然交换机的接口更多!!
某个电脑连接到交换机上,等价于连接到路由器上
这个都是处于同一个局域网当中:两者和插排的感觉是一样的
交换机口不够用还可以接更多交换机,引入更多的插口
路由器接的东西太多了,就处理不过来了
家用的路由器,普通的,一般接20个设备,差不多就是极限了~~贵的路由器会有更高的负荷:但是路由器还有企业级的路由器(动不动几千块钱)带几百个设备,都没啥压力~~
局域⽹,即LocalAreaNetwork,简称LAN。 Local 即标识了局域⽹是本地,局部组建的⼀种私有⽹络。 局域⽹内的主机之间能⽅便的进⾏⽹络通信,⼜称为内⽹;局域⽹和局域⽹之间在没有连接的情况 下,是⽆法通信的。 局域⽹组建⽹络的⽅式有很多种: (1)基于⽹线直连 (2)基于集线器组建 (3)基于交换机组建 (4)基于交换机和路由器组建
⼴域⽹WAN ⼴域⽹,即WideAreaNetwork,简称WAN。 通过路由器,将多个局域⽹连接起来,在物理上组成很⼤范围的⽹络,就形成了⼴域⽹。⼴域⽹内部 的局域⽹都属于其⼦⽹
如果有北、中、南等分公司,甚⾄海外分公司,把这些分公司以专线⽅式连接起来,即称为“⼴域 ⽹”。 如果属于全球化的公共型⼴域⽹,则称为互联⽹(⼜称公⽹,外⽹),属于⼴域⽹的⼀个⼦集。 有时在不严格的环境下说的⼴域⽹,其实是指互联⽹。 所谓"局域⽹"和"⼴域⽹"只是⼀个相对的概念。⽐如,我们有"天朝特⾊"的⼴域⽹,也可以看做 ⼀个⽐较⼤的局域⽹。
网络通信基础
ip地址和端口号:
网络互连的目的是进行网络通信,也即是网络数据传输,更具体一点,是网络主机中的不同进程间,基于网络传输数据。
那么,在组建的网络中,如何判断到底是从哪台主机,将数据传输到那台主机呢?这就需要使用IP地址来标识。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地址就是用来标识一台网络设备的 标识网络一台设备所在的位置.
端口号:
一台主机上可能有多个程序,同时使用网络~~
端口号区分一台主机上多个应用程序的~~网络数据包?网络传输的数据,形象的比喻成"包裹"
通过ip和端口号就成功的找到了所对应的应用程序
端口号 概念: 在网络通信中,IP地址用于标识主机网络地址,端口号可以标识主机中发送数据、接收数据的进程。 简单说:端口号用于定位主机中的进程。 类似发送快递时,不光需要指定收货地址(IP地址),还需要指定收货人(端口号)。 格式: 端口号是0~65535范围的数字,在网络通信中,进程可以通过绑定一个端口号,来发送及接收网络数 据。
协议
认识协议:程序已经收到数据了,程序如何理解数据的含义
网络协议,通信双方对于发送/接受数据格式的约定~~
我的数据怎么发,你收到就得怎么解析~~协议,⽹络协议的简称,⽹络协议是⽹络通信(即⽹络数据传输)经过的所有⽹络设备都必须共同遵 从的⼀组约定、规则。如怎么样建⽴连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能 相互通信交流。 协议(protocol)最终体现为在⽹络上传输的数据包的格式。
作用:
为什么需要协议?
就好比见网友,彼此协商胸口插支玫瑰花见面,这就是一种提前前的约定,也可以称之为协议。也好比是插头和插座的关系,因为协议的存在,两者总是能匹配 保证规格是一样的
计算机之间的传输媒介是光信号和电信号。通过"频率"和"强弱"来表示0和1这样的信息。要想传递 各种不同的信息,就需要约定好双方的数据格式。 计算机生产厂商有很多; 计算机操作系统,也有很多; 计算机网络硬件设备,还是有很多; 如何让这些不同厂商之间生产的计算机能够相互顺畅的通信 就需要有人站出来,约定一个共同的标准,大家都来遵守,这就是网络协议;
协议就是一种约定 双方都履行--就是协议
网络通信中协议非常关键
多个主机设备~~
多个主机都能认同并遵守同一套协议,此时通信才是有意义的~~
五元组
在TCP/IP协议中,用五元组来标识一个网络通信:
1.源IP:标识源主机
2.源端口:标识源主机中该次通信发送数据的进程
3.目的IP:标识目的主机
4.目的端口:标识目的主机中该次通信接收数据的进程
5.协议类型:标识发送进程和接收进程双方约定的数据格式 遵循的是哪种协议
协议分层
什么是协议分层
协议分层类似于打电话时,定义不同的层次的协议:
拆分:把一个大的协议,拆成若干个小的,功能单一的协议了.
拆完之后,小的协议,太多了!!!甚至有几十个/上百个......把这些小的协议归类---内聚
分层:只有相邻两层协议之间可以进行交互:
上层协议可以调用下层协议,下层协议可以给上层提供服务.
(协议之间的交互,不能夸层进行)在这个例子中,我们的协议只有两层;但是实际的网络通信会更加复杂,需要分更多的层次。
分层的作用:
为什么需要网络协议的分层?
分层最大的好处,类似于面向接口编程:定义好两层间的接口规范,让双方遵循这个规范来对接。
在代码中,类似于定义好一个接口,一方为接口的实现类(提供方,提供服务),一方为接口的使用
类(使用方,使用服务):
对于使用方来说,并不关心提供方是如何实现的,只需要使用接口即可
对于提供方来说,利用封装的特性,隐藏了实现的细节,只需要开放接口即可。
OSI七层模型
TCP/IP五层(或四层)模型 TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一月层所提供的网络来完成自己的需求。应用层:负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。我们的网络编程主要就是针对应用层。传输层:负责两台主机之间的数据传输。如传输控制协议(TCP),能够确保数据可靠的从源主机发送到目标主机。网络层:负责地址管理和路由选择。例如在IP协议中,通过IP地址来标识一台主机,并通过路由表的方式规划出两台主机之间的数据传输的线路(路由)。路由器(Router)工作在网路层。数据链路层:负责设备之间的数据顿的传送和识别。例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作。 有以太网、令牌环网,无线LAN等标准。交换机(Switch)工作在数据链路层。物理层:负责光/电信号的传递方式。比如现在以太网通用的网纱(双绞线)、早期以太网采用的的同 轴电缆(现在主要用于有线电视)、光纤,现在的wifi无线网使用电磁波等都属于物理层的概念。物理 层的能力决定了最大传输速率、传输距离、抗干扰性等。集线器(Hub)工作在物理层。
物理层规定了网络通信中的一些硬件设施符合的要求~
物理层的协议,就是约定这些硬件设施要符合的要求是怎样的~~
数据链路层
完成两个相邻的设备之间如何进行通信的.通过网线,把电脑连到路由器/交换机上
电脑和路由器/交换机相邻节点/设备
先考虑一小步怎么走网络层
则是两个任意设备之间如何进行通信,手机/考虑通讯的中间过程是怎样的
这俩设备之间,可能隔着很多的交换机和路由器传输层
也是两个任意设备之间的通信,不考虑中间过程,只考虑,起点和终点~~应用层
包裹拿到之后怎样使用~~
物理层我们考虑的比较少。因此很多时候也可以称为TCP/IP四层模型:
主机:工作过程涉及到 从物理层->应用层(通过应用程序满足网络通信的需求~~)
路由器:工作过程涉及到 从物理层-网络层(组建局域网,进行网络数据包的转发)
交换机:工作过程涉及到 从物理层->数据链路层(对路由器的接口的扩展,不需要考虑组网的问题)
真实情况,还不太一样. 真实的路由器交换机功能是更丰富,更强大的. 现代的交换机,很多都有路由器的功能. 路由器也可以开启特殊的模式(mesh),就可以起到"交换机"的效果甚至还有更多的功能你通过WX发一个数据(数据属于应用层) 数据经过某个运营商的路由器,给你解析出来你发的内容 (此时,路由器相当于工作在应用层)
网络数据通信的基本流程
我通过qq,发送hello给对方~~应用程序获取到用户输入.构造一个应用层的数据包
此处假设这样的协议格式:发送者的qq号,接受者的qq,消息的时间,消息正文
这个应用层数据包就会遵守应用层协议,往往是开发这个程序的程序员自己定义的应用层数据包往往是"结构化数据"(C的结构体,有很多属性)
发送数据的时候,把结构化数据=>字符串/二进制bit流 序列化
接受数据的时候,字符串/二进制比特流=>结构化数据 反序列化网络传输的数据,本质上都是"字符串"或者"二进制的bit流"
2.应用程序调用传输层提供的接口(API),把数据交给传输层.
传输层拿到数据之后,构造出"传输层数据包"!!!
传输层的协议,主要是两个TCP,UDPTCP数据包=TCP报头(header)+TCP载荷(payload)
报头:TCP功能相关的属性
载荷:应用层数据包
买一件衣服 卖家发货,把衣服交给快递小哥 一定不是直接把衣服团个球,交给快递小哥,一定是带有包装的!! 有了包装之后,就可以贴标签 贴的这个标签,快递单,包含了这次传输的关键信息!!! (五元组) 源ip,源端口,目的ip,目的端口,协议类型
3.传输层构造好数据之后,继续调用网络层的api,把传输层的数据包交给网络层
网络层继续进行处理,网络层最主要的协议,IP协议
IP协议继续对上述数据包进行加工=>拼上IP报头
IP数据包=IP报头+IP载荷(整个传输层的数据包)
IP协议本身不关心载荷内容是啥.
TCP协议也不关心载荷内容是啥.协议类型,其实不只是一份数据,有很多层!!! 其中IP报头里就会记录当前的传输层使用的是哪个协议 传输层报头中,也会记录应用层使用哪个协议(准确的 说是数据交给哪个应用程序) 数据链路层报头中也会记录网络层使用哪个协议
4.IP协议继续调用数据链路层的api,把IP数据包交给数据链路层
数据链路层中,核心协议,"以太网"
以太网这个协议,也会在网络层数据包的基础上进一步加工~
目前为止,数据还在当前主机上转悠,还没出门的~~
谈到网络传输的"基本数据单位"涉及到多个术语~~
以太网数据帧=帧头+载荷+帧尾
5.以太网继续这样的数据交给硬件设备(网卡)
网卡会把上述二进制数据,最终以光信号/电信号/电磁波信号传播出去了~~
数据终于出门了~~从上层到下层,数据都要进一步加工(添加报头封装(和面向对象的封装,不是一个封装)
接受方法是从下到上依次解析,分用~~封装的逆向过程
分用,数据到达接收方主机,逐层进行解析:
1.数据到达接收方的网卡.光电信号.网卡把光电信号还原成二进制0101
把二进制数据交给上层数据链路层
2.数据链路层按照以太网协议进行解析,把报头和报尾取出来,剩下的载荷,往上传递给网络层
以太网的帧头中就有专门的属性,描述了网络层使用哪个协议
3.网络层拿到这个数据之后,按照IP协议的格式解析.再把载荷数据交交给传输层
IP报头中也有专门的属性,描述了传输层使用哪个协议
4.传输层拿到数据之后,也是类似,按照TCP协议来解析,取出载荷,交给应用层
传输层报头中,通过目的端口号,告知我们数据交给哪个应用月程序
5.QQ应用程序,解析应用层数据,拿到关键信息,展示到界面上,给出提示
不同的应用程序,自然使用不同的应用层协议来解析~~
1.数据到达接收方的网卡.光电信号.网卡把光电信号还原成二进制0101
把二进制数据交给上层数据链路层
物理层数据信号是咋来的,和数据链路层是直接相关的~~
网线/光纤来的数据,数据链路层=>以太网.
wifi来的数据,数据链路层=>802.11协议
2.数据链路层按照以太网协议进行解析 把报头和报尾取出来,剩下的载荷,往上传递给网络层传输的中间过程中,也是涉及到封装分用的.
交换机,只需要封装分用到数据链路层即可.
主机的数据=>交换机,交换机收到之后,物理层解析,数据链路层解析(没有网络层了),重新构造出新的以太网数居帧,发给下一个设备A
数据链路层中,得到的以太网数据顿的帧头,信息就足以支持交换进行下一步工作交换机是工作在数据链路层(二层转发)
主机的数据=>路由器.路由器收到之后,物理层,数据链路层,网络层解析(没有传输层),重新构造出新的网络数据包,构造出以太网数据帧,构造出二进制数据,进行转发~~
路由器是工作在网络层(三层转发)无线用的协议是802.11,和以太网是并列的关系,本质是一样的,同样的封装分用
分装分用啥的帧头帧尾不一样的,~~数据格式不一样,功能略有差别.是否有设备工作在传输层:这样的设备也有.比如防火墙/网关~~封装分用到传输层~~
也有设备,只工作在物理层的,集线器,网线延长线