目录
OSI七层模型(open system interconnection)开放系统互连
这里的概念相当于发快递 需要快递地址(IP)收件人(端口号)
IP地址
概念:IP地址主要用于标识网络主机,其他网络设备(路由器等)的网络地址 简单说 IP地址就是用于定位主机的地址
格式:32位二进制数 被分割为4个“8位二进制数” (4个字节)通常用十进制表示 a.b.c.d
IP地址分为两个部分。网络号和主机号 IP地址分为五类 ABCDE 普通家庭网一般是C类
特殊IP
127.*的IP地址用于本机环回(loop back)测试 通常是127.0.0.1
本机环回主要用于本机到本机的网络通信(系统内部为了性能,不会走网络的方式传输),对于开
发网络通信的程序(即网络编程)而言,常见的开发方式都是本机到本机的网络通信。
端口号
IP是定位网络主机的位置 数据传输到主机后由谁来接受呢?
答案就是需要端口号来标识
概念:端口号标识主机发送接收数据的进程,简单说 端口号是用于定位主机的进程
格式:端口号范围0-65535范围的数字 网络通信中 进程需要绑定一个端口号来发送接收网络数据
注意事项:两个不同的进程 不能绑定同一个端口号,但一个进程可以绑定多个端口号
有了IP地址和端口号,可以定位到网络中唯一的一个进程,但还存在一个问题,网络通信是基于二进制
0/1数据来传输,如何告诉对方发送的数据是什么样的呢?
网络通信传输的数据类型可能有多种:图片,视频,文本等。同一个类型的数据,格式可能也不同,如
发送一个文本字符串“你好!”:如何标识发送的数据是文本类型,及文本的编码格式呢?
基于网络数据传输,需要使用协议来规定双方的数据格式。
协议
在网络上以数据包的形式传输
这里介绍几个经常性预留给服务端程序绑定广泛使用的应用层协议
22端口:预留给SSH服务器绑定SSH协议
21端口:预留给FTP服务器绑定FTP协议
23端口:预留给Telnet服务器绑定Telnet协议
80端口:预留给HTTP服务器绑定HTTP协议
443端口:预留给HTTPS服务器绑定HTTPS协议
五元组
在TCP/IP协议中,用五元组来标识一个网络通信
1.源IP:标识源主机
2.源端口号:标识源主机中该次通信发送数据的进程
3目的IP:标识目的主机
4目的端口号:
5协议号:标识发送和接收进程双方约定的数据格式
可以在cmd中,输入 netstat -ano 查看网络数据传输中的五元组信息:
协议分层
为什么要分层:分层的最大好处就是 在对接时只需要关心这一层的实现功能
类似于面向对象接口
对于使用方 不关心对方如何实现只需使用接口即可
对于提供方来说 利用封装的特性 隐层了实现的细节 只需开放接口即可
有利于更好地维护和扩展
OSI七层模型(open system interconnection)开放系统互连
OSI 最大的优点就是将服务 接口 协议三个概念明确的分开来 通过七个层次化的结构模型使不同的系统不同网络可靠的通信
从上至下:
名称 | 功能 | 功能概述 |
应用层 | 针对特定应用的协议 | |
表示层 | 设备固有数据格式 | |
会话层 | 维护通信节点的会话建立维护和断开 | |
传输层 | 端到端的数据传输 | |
网络层 | 在数据链路层的基础上,提供点到点通信 拥塞控制 | |
数据链路层 | 帧 为相邻节点提供可靠传输 | |
物理层 | bit 利用传输介质为通信的网络节点之间的建立 |
实际组建网络时,只是以 OSI 七层模型设计中的部分分层,也即是以下 TCP/IP 五层(或四层)模型来实现
TCP/IP
一组协议的代名词 包括许多协议
应用层:负责应用层之间的沟通 如简单的电子邮件传输(SMTP)文件传输协议(FIP)网络远程访问协议(Telnet)我们的网络编程主要是针对应用层
传输层 :负责两台主机之间的数据传输 如传输控制协议(TCP)能确保数据可靠的从源主机发送到目的主机
网络层:负责地址管理和路由选择
网络接口层:
数据链路层:设备之间的数据帧的识别和传送 例如网卡设备的驱动 帧同步(就是说从网线上
检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作。
有以太网、令牌环网,无线LAN等标准。交换机(Switch)工作在数据链路层。物理层:负责光/电信号的传递方式。比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤,现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等。集线器(Hub)工作在物理层。
网络数据传输时,经过不同的网络节点(主机、路由器)时,网络分层需要对应。
以下为同一个网段内的两台主机进行文件传输:
以下为跨网段的主机的文件传输:数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器
不同的协议层对数据包有不同的称谓,在传输层叫“段”(segment)网络层叫做数据报(datagram) 链路层叫做帧(frame)
应用层数据通过协议栈发到网络上 每层协议都要加上一个数据首部(header),称为封装Encapsulation