目录
1.网络发展史
1.1 独立模式
1.2 网络互联
随着时代的发展 , 越来越需要计算机之间共享通信 , 数据和软件 , 即多个计算机协同完成任务 , 于是有了网络互联.
网络互联:将多台计算机连在一起完成数据共享.
数据共享的本质是网络传输 , 即计算机之间通过网络来传输数据 , 也称网路通信.
根据网络互联的规模不同 , 可以分为广域网和局域网.
1.3 局域网
局域网即 Local Area Network 简称LAN.局域网内的主机之间可以进行网络通信 , 又称内网. 但局域网和局域网之间在没有连接的情况下不能进行通信.
最初两个主机之间想要进行网络通信 , 通常采用网络直连的方式 , 但一次只能连一个电脑局限性较大.
随后出现了集线器的网络互联方式 , 但集线器没有寻址的功能 , 它会把信息同时发给相连的所有主机 , 由主机去辨认该信息是否是自己的 , 因此还是有很大的局限性.
交换机的出现解决了集线器无法寻址的缺陷 , 而且交换机相当于内置了一个号码本 , 可以精确的对应号码发送信息 , 如果发送信息时 , 号码本上没有对应的电话 , 这时才会进行广播式的发送 , 一但找到目标会立即更新号码本. 但只能组建局域网
路由器的出现解决了 , 局域网之间无法进行互联的局限.
1.4 广域网
广域网简称 Wide Area Network , 简称 WAN. 通过路由器将多个局域网组建起来构成广域网 , 广域网内部的每个局域网都是其子网.
2.网络通信基础
网络的互联的目的是进行网络通信 , 也就是网络数据传输 , 更具体一点就是 , 网络主机中的不同进程间基于网络传输数据.
那么 , 在组件网络中如何判断 , 到底是那台主机将数据传输到另一台主机上? 这时就需要IP地址.
2.1 IP地址
- 概念:
- 格式:
- 特殊IP:
IP地址解决了网络通信时 , 定位网络主机的问题 , 但是还存在一个问题 , 传输到目的主机后 , 由哪个进程来接收这个数据呢?这就需要端口号来标识.
2.2 端口号
概念:
在网络通信中 , IP地址用于标识主机网络地址 , 端口号可以标识主机中发送数据 , 和接收数据的进程 , 简单说: 端口号用于定位主机中的进程.
格式:
端口号是0-65535范围的数字 , 在网络通信中 , 进程可以通过绑定一个端口号 , 来发送及接收数据.
注意事项:
两个不同的进程 , 不能绑定同一个端口号 , 但一个进程可以绑定多个端口号.
2.3 认识协议
有了IP地址和端口号 , 可以定位到网络中唯一一个进程 , 但还存在一个问题 , 网络通信是基于二进制0/1数据来传输 , 如何告诉对方发送的数据是什么样呢?
网络通信传输的数据类型可以有很多中: 图片,视频,文本等. 同一个类型的数据 , 格式也可能不同 , 如发送一个文本字符串 "你好,世界!" , 那么如果表示发送的数据是哪种类型?以及文本的编码格式是什么?
因此基于网络数据传输 , 需要使用协议来规定双方的数据格式
概念:
1.语法: 即数据与控制信息的结构或格式:
- 类似打电话时双方约定都使用普通话
2.语义: 即需要发出何种控制信息 , 完成何种动作以及作出何种响应.
- 语义主要用来说明通信双方应当怎么做 , 用于协调与差错处理的控制信息.
- 类似于打电话时 , 一方说: 你愁啥? 另一方说: 瞅你咋地?
3.时序 , 即事件顺序的详细说明.
- 时序定义了何时进行通信 , 先讲什么 , 后什么 , 讲话的速度. 比如是采用同步传输还是异步传输.
- 类似于男生和女生打电话 , 总是有男生发起通话 , 而总是男生恋恋不舍的时候 , 由女生要求结束通话.
作用:
为什么需要协议?
就好比见网友 , 彼此协商胸口插只玫瑰花见面 , 这就是一种提前的约定 , 也可以称之为协议.
计算机之间的传输媒介是光信号和电信号. 通过"频率"和"强弱"来表示 0 和 1 这样的信息. 想要传递各种不同的信息 , 就需要约定好双方的数据格式.
知名协议的默认端口:
系统端口号范围为 0-65535 , 其中: 0-1023 为知名端口号 , 这些端口预留给服务端程序绑定广泛使用的应用层协议 , 如:
Tips: 以上只是说 0-1023 范围的知名端口号用于绑定知名协议 , 但某个服务器也可以使用其他1024-65535 范围内的端口来绑定知名协议.例如: 餐厅的VIP包房是给会员使用 , 但会员也可以不坐包房 , 坐普通位置.
2.4 五元组
在TCP/IP协议中 , 用五元组来标识一个网络通信:
五元组在网络通信中类似于发快递:
2.5 协议分层
对于网络分层来说 , 往往分成几个层次进行定义.
什么是协议分层
协议分层类似于打电话时 , 定义不同的层次协议.
上述例子中 , 协议只有两层 , 但是实际的网络通信会更复杂 , 需要更多的层次.
分层的作用
分层的最大好处类似于面向接口编程 , 定义好两层之间的接口规范 , 让双方遵循这个规范来对接.
在代码中 , 类似于定义好一个窗口 , 一方为接口的实现类(提供方 , 提供服务) , 一方为接口的使用类(使用方 , 使用服务).
这样可更好的展开和维护.
OSI七层模型:
OSI: 即Open System interconnection , 开放系统互联.
OSI 七层网络模型划分为以下七层 ,上层协议要调用下层协议(上层协议把数据交给下层继续封装) 下层为上层提供服务支持(下层协议解析好数据交给上级).
分层名称 | 功能 | 每层功能概览 | |
7 | 应用层 | 针对特定应用的协议 | 针对每个应用的协议 |
6 | 表示层 | 设备固有的数据格式和网络标准的数据格式的转换 | 接收不同表示形式的信息,如文字流,图像,声音等 |
5 | 会话层 | 通信管理,负责建立和断开通信连接 | 何时建立连接,何时断开连接以及保持多久连接? |
4 | 传输层 | 管理两个节点之间的数据传输 | 站在商家和客户的角度,不关心传输的过程只关心终点和起点.(上海---西安) |
3 | 网络层 | 地址管理与路由选择 | 上海--西安走哪条路线,最划算 上海--苏州--西安 上海--徐州--西安 |
2 | 数据链路层 | 互联设备之间传送和识别数据帧 | 每个站点之间做飞机还是火车.... |
1 | 物理层 | 界定连接器和网线的规格 | 相当于修路 |
OSI 七层网络模型既复杂又不实用 , 所以没有落地实现.
实现组件网络时 , 只是已 OSI 七层模型设计中的部分分层 , 即以下 TCP/IP五层(或四层) 模型来实现.
TCP/IP 五层模型
TCP/IP 是一组协议的代码词 , 它还包括许多协议 , 组成了 TCP/IP 协议簇.
TCP/IP 通信协议采用了五层的层级结构 , 每一层都呼叫它的下一层所提供的的网络来完成自己的需求.
由于物理层我们考虑的较少. 因此很多时候也可以称为 TCP/IP 四层模型.
网络分层对应
两台计算机通过 TCP/IP 通讯的过程如下:
2.6 封装和分用
下图为数据封装的过程:
例如: 我们用QQ 给好友发送 hello 这个字符串.
下图为数据分用过程: