👑作者主页:Java冰激凌
📖专栏链接:JavaEE
局域网/广域网
在我们的生活中 经常会使用到网络 对于网络 我们现在已经变得与生活息息相关 甚至可以说为密不可分 而在我们的网络中 我们的网络是分为局域网与广域网 我们的局域网和广域网有什么区别呢?
·通过路由器/交换机组件起来的这些都叫做局域网
·广域网和局域网之间没有明确界限 可以认为比较大的局域网可以成为'广域网'
·我们可以简单认为 家中的无线是一个局域网 而你们一个小区 则可以认为是一个广域网
IP地址
在我们的网络中 如果一台计算机想要上网 那么必不可少的会有一个IP地址 而我们的IP地址其实是动态变化的
那么这个ip是干嘛的呢?
IP地址主要用于标识主机和路由器和其他网络设备的网络地址 ip地址用于定位主机的网络位置
那么我们如何查看自己主机的ip呢?
我们可以通过cmd窗口来进行查看 我们打开cmd窗口(win+r)然后在编辑框中输入ipconfig即可
那么ip是如何组成的呢?
ip也是有着固定的格式的 我们当前使用的大部分都是ipv4 所以说我们的ip将由4个字节组成(32位bit)那么我们为何看到的ip地址不是32位这么长的呢 这是因为我们使用了点分十进制来进行简化 方便我们查看
ipv4
ipv4诞生的很早 起初在诞生之初网络还不是很普及 所以说创立的时候没有特别放宽 就设定了4个字节 起初本以为需要发展很久 而这60余年过去 ipv4其实在我们的十年前已经枯竭了 为什么说ipv4会枯竭呢?
我们已知 ipv4是由32位二进制组成的 所以说 我们ipv4可以分配的最多ip是42亿多 个ip 而我们当今网络发展迅速 全球已经有60亿人口 而且我们现在基本都不止一台设备可以上网 所以说 我们的ip地址 如果不做出升级 就要枯竭了 那么有的童鞋就疑惑了 枯竭就枯竭呗 一个虚拟的东西会有什么影响? 我们在开头便提到了 ip地址是我们主机在网络中的身份标识 如果你没有这个身份标识 那么你是无法上网的 所以 依照我们对于网络的依赖性 如果真的有一天 我们没有网络可以用了 会发生什么 难以想象 所以 诞生出一系列的优化措施出来
优化措施一 动态分配ip
动态分配ip ipv4做了以下简单的升级 我们对于上网的设备我们才会去分配ip 对于不上网的被谁 我们就选择不分配ip 这样在一定程度的情况下 减少了一定的网络ip不够用的情况 但是要知道我们的网络是发展迅速的时代 这样的优化措施显然是不够的
优化措施二 NAT
NAT协议可以将一个由私有IP构成的局域网中所有的计算机,通过一台具有公网IP和NAT功能的设备来访问公网公网资源。因为局域网中的设备可以通过很少的公有IP(甚至一个)就能实现网上冲浪,很大程度上节约了地址资源,所以在实际场景中,NAT被应用的极其广泛。豪不夸张的说,哪里有网络,哪里就有NAT的身影。
简单来说,用户发出一个请求后,NAT设备会检查该数据包,当它发现这是一个请求外网的数据包时,会进而检查是否存在映射关系,对源IP地址和端口进行翻译(修改),同时在映射表中添加新建的IP和端口的映射条目,然后再把修改的数据包转发出去。
就是说 在路由器端 会有一个队列来组织主机ip 并且会在发送到服务器前 替换掉mac地址 替换掉之后就能保证服务器的发回能够找到路由器 路由器再根据队列中的排列找到要发挥的主机进行发回即可
这么来看 经过一系列的优化 ipv4看起来是没有啥弊端 但是 完美的事物是不存在的 渐渐的NAT的漏洞也暴漏了出来
- 增加了网络的复杂性
- NAT违背了网络分层模型的设计原则根据OSI七层网络结构中,明确规定:第N层不容许修改第N+1层的爆头内容,但NAT报文中却违背了这一原则。
- 不能处理嵌入式ip或者端口
综上所述 ipv4被淘汰 是迟早的事情 那么我们有没有新的代替呢?
有的!ipv6
ipv6
ipv6是一种新的协议 这个协议在2000年的时候已经被提出 ipv6是由16个字节组成的 相比而言 ipv4是由4个字节组成的 那么 ipv6可以容纳的ip就只是ipv4的4倍吗 大错特错 我们此处 是按照2次方来的 所以说 ipv4 = 2^32 那么 ipv6 = 2^32*2^32*2^32*2^32 这可不是单单的四倍 ipv6可以大到什么程度 我们的CPU是由于沙子提纯硅来制作的 所以 一个生动的比喻 ipv6可以为全世界所有 的沙子都分配一个ip地址
ipv6的发展史
ipv6当初被提出的时候 中国其实属于最早加入的一批其实我们中国很早之前已经在使用ipv6网络 你们是否还记得中国2008年奥运会 在北京奥运会的时候 其实使用的全部都是ipv6网络 并且 中国在于ipv6的普及程度是相当高的,然而当ipv4快枯竭的时候 本身打算的是要使用ipv6 并且如果ipv6启动的话 中国的奥运会 将是全世界第一个使用ipv6的典型范例 此场奥运会也将称为使用ipv6的典范 不过 NAT的问世打破了这个美梦 启用ipv6的计划也暂时落幕了
端口号
在网络通信中 ip地址表示主机的网络地址 端口号表示主机中发送数据 接收数据的进程 简单说的话 一个端口号就代表的是一个进程
格式
端口号由0-65535组成 在网络通信中进程可以绑定一个端口号 用于发送和接收数据
需要注意到的是 一个进程可以绑定多个端口号 而一个端口号只能被一个进程绑定
协议
概念
网络协议是网络通信经过所有网络设备都必须遵循的一组约定、规则。例如如何建立连接、怎样互相识别等等。只有遵守这个约定,不同计算机之间才能互相通信交流。
协议的作用
协议类似于我们的语言 我们北方的家乡话 可能放到南方 就听不懂了 所以如果想要进行交流 就需要一个公共的语言 遵守相同的语言 那么这个语言就是普通话 所以在计算机中也是类似 计算机厂商有很多 但是多种不同的计算机之间如何才能实现相互通信呢?
此处就需要一个普通话(协议)来做中间的桥梁
协议分层
在网络中主要使用的是两种模型 OSI模型和TCP/IP协议 OSI协议分为7层 TCP/IP协议分为四层或者五层都可以
请求和响应
我们要获取资源的话 我们一般会涉及两个 客户端和服务器
客户端主要是用来先发送 后接收数据
服务器主要是先接收数据 再发送数据
客户端和服务器之间也很好理解 我们可以将其理解为我们去饭店吃饭 只有你点餐了 老板才能给你下单让厨师去做饭 而不会出现你没进饭店而厨师端着饭让你吃的 这显然是不符合逻辑的 哈哈哈