计算机网络基础(上)
1.发展背景
本质上是计算机数量由少变多,计算机由单台完成某个功能变成多台协作完成某个功能的情况,演变出来的数据传输的解决方案。
独立模式:计算机之间相互独立;
网络互连:多台计算机连接在一起, 完成数据共享;
局域网LAN:通过交换机和路由器连接在一起(一般在距离上不超过10km)
城域网:覆盖范围从几十千米到数百千米 广域网: 覆盖的地理范围从数百千米到数千千米甚至上万千米
2.网络协议初识
1.什么是协议
- 协议是一种约定,约定沟通双方传递信息的格式(不同的少数民族沟通时采用汉语沟通)
- 网络协议:约定网络主机在传输数据时的格式
- 网络要做的工作:将数据从A主机的a进程传递给B主机的b进程
- 结论:在网络中的数据不仅仅只有数据的本身,还需要附带协议的内容,协议的内容可以帮助要传输的数据正确的在网络中传输到对方主机中;
- 基于操作系统和库函数写出来的程序,都是应用程序(大多数程序员写的代码),产生的数据称为应用层数据
- 协议部分,采用描述的书法,描述本质上是一个结构体,换句话说,,协议部分的内容就是结构体数据
2.协议分层
OSI七层模型:
TCP/IP五层模型:
- 物理层: 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层.
- 数据链路层: 负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太网、令牌环网, 无线LAN等标准. 交换机(Switch)工作在数据链路层.
- 网络层: 负责地址管理和路由选择. 例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层.
- 传输层: 负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机.
- 应用层: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等. 我们的网络编程主要就是针对应用层.
一般而言:
- 对于一台主机, 它的操作系统内核实现了从传输层到物理层的内容;
- 对于一台路由器, 它实现了从网络层到物理层;
- 对于一台交换机, 它实现了从数据链路层到物理层;
- 对于集线器, 它只实现了物理层;
但是并不绝对. 很多交换机也实现了网络层的转发; 很多路由器也实现了部分传输层的内容(比如端口转发)
为什么需要网络协议分层?
从软件的层面来考虑:将网络的功能进行解耦,有负责应用层数据,有负责端与端之间的传输,由负责路由等等 从实现层面来讲:分层中的各个协议完成各自的协议功能即可
4.网络传输流程图
同一个网段内的两台主机进行文件传输. 跨网段的主机的文件传输. 数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器
3.数据包封装与分用
- 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame).
- 应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation).
- 首部信息中包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是什么等信息.
- 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部, 根据首部中的 “上层协议字段” 将数据交给对应的上层协议处理.
数据封装过程:
数据分用过程:
4.ip地址和MAC地址初识
- ip地址:分为ipv4、ipv6
- 本质:ipv4是一个无符号32位的整数,范围是[0,2^32-1],点分十进制为[0,255]
如:42.192.83.143 101010 11000000 01010011 10001111 - 作用:在网络中标识一台主机
- MAC地址:长度为48比特位,6个字节一般采用16进制的数字加上冒号的形式来表示(如:08:00:27:03: fb: 19)
作用:表示一块具体的物理网卡设备,网卡设备在出厂时,就会打上全球独一无二的MAC地址,相当于网卡的身份证,用来识别数据链路中相邻的节点
5.网络数据的五元组信息
先来看看什么是端口?
本质:端口号port是一个2字节16位的整数,即有[0,2^16-1],65535个端口号 作用:端口号用来标识一个进程,告诉操作系统,当前的这个数据要交给哪一个进程来处理 限制:一个端口号只能被一个进程所占用,一个进程可以占用多个端口号
五元组信息:
- 源ip地址:标识网络数据从哪台主机发出
- 源端口:标识网络数据从源ip对应的这台主机的哪个进程产生
- 目的ip:表示网络数据要去哪一台主机
- 目的端口:通过目的ip找到目的主机之后,通过目的端口找到相应的进程
- 协议:双方传输数据时,使用什么协议(一般是TCP/IP)
|