文章目录
- 网络发展
- 协议
- 网络分层结构
- 局域网通信
- IP地址和MAC地址
网络发展
- 独立模式: 计算机之间相互独立 ; 网络互联: 多台计算机连接在一起, 完成数据共享
- 因为人和人之间数据要互相协作,所以网络的出现是必然的,同时随着网络发展,必然会产生新的物理级别的设备
协议
"协议"是一种约定,计算机协议就是计算机之间的约定,目的是减少通信时的沟通成本
网络分层结构
-
软件分层
软件分层是一种常用的组织代码的方式,它将一个软件系统分解成多个层次,每个层次都有自己的职责和功能。层与层之间是松耦合的,可以随时替换,方便维护。 -
网络分层(为什么要存在网络协议?为什么要协议分层?)
因为互联网通信双方的距离变远了,必定会引发新的问题:
1.如何使用数据的问题
2.可靠性问题(数据丢包或顺序不一致)
3.主机定位的问题
4.数据包局域网转发的问题
为了解决这些问题,有人提出了网络协议,所以网络协议本质是一个解决方案,如何衡量一个方案的好与坏?好的方案一定要方便维护且可扩展,所以网络协议就是层状结构
-
OSI七层模型
分层名称 | 功能 | 每层功能概览 |
---|---|---|
应用层 | 针对特性应用的协议 | 针对每个应用的协议 |
表示层 | 备固有数据格式和网络标准数据格式的转换 | 接收不同表现形式的文件,如文字流、图像、声音等 |
会话层 | 通信管理。负责建立和断开通信连接。管理传输层以下的分层 | 何时建立连接,合适断开连接以及保持多久的连接 |
传输层 | 管理两个节点之间的数据传输负责可靠传输(确保数据被可靠的传送到目标地址) | 是否有数据丢失 |
网络层 | 地址管理与路由选择 | 经过哪个路由传递到目标地址 |
数据链路层 | 互联设备之间传送和识别数据帧 | 数据帧与比特流之间的转换 |
物理层 | 用‘0’和‘1’表示高低电压,灯光的闪灭 | 比特流与电子信号的转换、连接器与网线的规格 |
因为OSI七层模型复杂又不实用,所以实际中用的是TCP/IP五层(或四层)模型
- TCP/IP五层模型
物理层
: 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层.
数据链路层
: 负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太网、令牌环网, 无线LAN等标准. 交换机(Switch)工作在数据链路层.
网络层
: 负责地址管理和路由选择. 例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层.
传输层
: 负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机.
应用层
: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等. 我们的网络编程主要就是针对应用层
互联网因为通信双方距离变远,引发的问题:
1.如何使用数据的问题 ------ 应用层
2.可靠性问题(数据丢包或顺序不一致) ------ 传输层
3.主机定位的问题 ------- 网络层
4.数据包局域网转发的问题 ------- 数据链路层
物理层我们考虑较少,因此很多时候也可以称为TCP/IP四层模型
- 网络和OS之间的关系
windows和linux操作系统在系统上可能有很多差别,但在网络上,双方必须使用相同的数据类型,所以经过传输,对方一定认识每个字段的大小,含义,这样不同系统之间就可以进行网络通信了。
世界上所有的操作系统只要想入网,就必须遵守TCP/IP协议,保证不同主机之间的数据通信
所以站在语言角度,协议就是双方都能识别的结构体数据类型
局域网通信
局域网中的任意两台主机可以直接通信
每台主机都有网卡,每张网卡都有自己的地址,即MAC地址,MAXC地址标示网卡的唯一性
- 以太网
任何时刻只允许一台主机在局域网中发送消息,通过碰撞域和碰撞检测来完成通信的。
OS和网络一统:局域网是一个临界资源
应用层数据通过协议栈发送到网络上时,报文不断被自顶向下交付的过程中,要添加每一层的协议报头,叫做封装。
不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)。
解包和分用:任何协议(特殊情况暂不考虑)
- 1.同层协议将包头和有效载荷进行分离
- 2.将有效载荷交付给上层协议,所以协议中要有表明上层协议的字段
逻辑上,同层协议都可以认为自己在和对方直接通信
所有的主机协议在数据链路层可能不一致,但只要到了网络层以上,所有协议都是一样的,网络层屏蔽掉底层的差异,所以在互联网中只需要使用IP地址即可,所以互联网也叫做IP网
IP地址和MAC地址
我们所讲的IP,但凡没有说明,默认都是IPv4
- IP地址在IP协议中,用来标示网络中不同主机的地址
- 对于IPv4来说,IP地址是一个4字节的32位整数
- 通常也使用点分十进制的字符串表示IP地址
MAC地址用来识别数据链路层中相连的节点
长度为48位6个字节,一般用16进制数字加上冒号的形式来表示
MAC地址通常是唯一的,且MAC地址只在局域网中使用