网络发展史
独立模式
计算机之间相互独立;
网络互联
将多个计算机连接一起,完成数据共享
数据共享的本质是网络数据传输
即计算机之间通过网络来传输数据,也称网络通信
根据网络互连得规模不同,可以划分为局域网和广域网
局域网LAN(Local Area NetWork)
Local 即标识了局域网是本地,局部组建的一种私有网络。
- 局域网内的主机之间能进行网络通信,又称内网;
- 局域网和局域网之间在没有连接的情况下无法通信;
局域网组建网络的方式:
1.基于网线直连
2.基于集线器组建
3.基于交换机组建
4.基于交换机和路由器组建
广域网WAN(Wide Area Network)
- 通过路由器,将多个局域网连接起来,在物理上组成范围很大的网络,形成广域网;
- 广域网内部的局域网都属于其子网;
有些情况下,广域网指的是公网;
公网:又叫外网,互联网
国际上大家公认的网络,连接上公网后,可以访问公网上的资源
网络的作用:共享数据/通过网络传输数据实现数据共享
网络通信基础
网络互连的目的是进行网络通信,也即是网络数据传输,更具体一点,是网络主机中的不同进程间,基 于网络传输数据
IP地址—标识网络地址
作用:
IP地址 用于标识网络主机,其他网络设备的 网络地址
说明:
网络中的ip地址,必须是唯一的(如果一个局域网包含在其他网络中(如公网),那公网是看不到局域网内的IP,公网的ip是唯一的,局域网内的ip也是惟一的,不同局域网之间就可能有重复)
格式:
ip地址:32位二进制数,分为四部分(8位一部分)
通常用点分十进制的方式表示,即:a.b.c.d(0~255的十进制整数)
特殊的ip
127.*的IP地址用于本机环回(loop back)测试,通常是127.0.0.1
本机环回主要用于本机到本机的网络通信(本质是主机和主机之间的进程,传输数据)系统内部为了性能,不会走网络的方式传输,直接将数据交付给对应程序。
对于开发网络通信的程序(即网络编程)而言,常见的开发方式都是本机到本机的网络通信。
端口号—标识主机进程
作用:
标识某台主机中的进程
网络通信中,进程通过绑定一个端口号,发送及接受数据
格式:
端口号是0~65535范围的数字
注意:
网络通信中,进程绑定主机中唯一的端口,不同进程不能使用同一个端口
了解:
一个进程启动后,系统会随机分配一个端口(启动端口)
程序代码中,进行网络编程时,需要绑定端口号(收发数据的端口)来发送、接收数据。
进程绑定一个端口号后,fork一个子进程,可以实现多个进程绑定一个端口号,但不同的进程不能 绑定同一个端口号
网络协议—标识数据
协议,网络协议的简称
概念:
网络通信(即网络数据传输)经过的所有网络设备都必须共同遵从的一组约定、规则。
网络协议三要素:
1.语法:即数据与控制信息的结构或格式
2.语义:即需要发出何种控制信息,完成何种动作以及做出何种响应
主要说明通信双方应当如何做;
用于协调与差错处理的控制信息;
3.时序:即时间实现顺序的详细说明
时序定义了何时进行通信,先讲什么,后讲什么,讲话的速度等。
比如是采用同步传输还是异步传输。
最终体现为:网络中数据包传输的格式
作用:
计算机之间的传输媒介是光信号和电信号。通过 "频率" 和 "强弱" 来表示 0 和 1 这样的信息。要想传递 各种不同的信息,就需要约定好双方的数据格式。
计算机生产厂商有很多;
计算机操作系统,也有很多;
计算机网络硬件设备,还是有很多;
如何让这些不同厂商之间生产的计算机能够相互顺畅的通信? 就需要有人站出来,约定一个共 同的标准,大家都来遵守,这就是 网络协议
五元组
在TCP/IP协议中,用五元组来标识一个网络通信:
1. 源IP:标识源主机
2. 源端口号:标识源主机中该次通信发送数据的进程
3. 目的IP:标识目的主机
4. 目的端口号:标识目的主机中该次通信接收数据的进程
5. 协议号:标识发送进程和接收进程双方约定的数据格式
这一次通信的必要数据,下次通信可能会变化
协议分层
分层的作用
方便扩展和维护
面向接口编程:定义好两层之间的的接口规范,双方根据规范对接;
对于调用方:不关心实现,只需要使用即可
对于提供方:利用隐藏实现细节,只需要开放接口即可
OSI七层模型-Open System Interconnection
开放系统互联
- OSI 七层网络模型是一个逻辑上的定义和规范:把网络从逻辑上分为了7层。(逻辑分层)
- OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传 输;
- 它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整。通 过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯。
分层名称 | 含义/功能 | |
高 ^ | | | | | | | | 低 | 应用层 | 应用程序所在分层; 针对特定应用的协议 |
表示层 | 数据按照何种形式展示; 设备固有数据格式和网络标准数据格式的转换 | |
会话层 | 约定建立和断开连接的方式; 通信管理。负责建立和断开通信连接。管理传输层以下得分层 | |
传输层 | 负责数据的可靠传输 | |
网络层 | 地址管理和路由选择 | |
数据链路层 | 互联设备之间的传送和识别数据帧 | |
物理层 | 0/1 光电信号 |
OSI七层模型复杂不实用,七层模型并未实现
TCP/IP五层模型
TCP/IP是一组协议的代名词,包括许多协议
分层名称 | 作用 | 代表性硬件/软件 | 代表性协议 |
应用层 | 负责应用程序间沟通。 (网络编程主要针对应用层) | 进程 | http,https,DNS,NAT/NAPT 了解:邮件协议(SMTP,POP3) 文件传输协议(FTP,SFTP) |
传输层 | 负责可靠数据传输 | 操作系统(下四层) | TCP,UDP |
网络层 | 负责地址管理和路由选择 | 路由器-Router(下三层) | IP协议 |
数据链路层 | 负责设备之间的数据帧传送和识别 | 交换机-Switcher(下两层) | 以太网帧,ARP |
物理层 | 负责光电信号的传输 | 集线器-Hub |
封装和分用
- 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame)。
- 应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装 (Encapsulation)。
- 首部信息中包含了一些类似于首部有多长,载荷(payload)有多长,上层协议是什么等信息。
- 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中 的 "上层协议字段" 将数据交给对应的上层协议处理