在初步谈完操作系统后,我们来看看网络,网络其实没有那么神秘,我们大可把远程通信看作是一根很长的传输线。
为了方便软件和网络的 问题归类,解耦,以及便于维护,我们将协议分层。
OSI模型
OSI
(
Open System Interconnection
,开放系统互连)七层网络模型称为开放式系统互联参考模型, 是一个逻辑上的定义和规范;
把网络从逻辑上分为了
7
层
.
每一层都有相关、相对应的物理设备,比如路由器,交换机
;
OSI
七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输
;
它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整
.
通过七 个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯;
但是
,
它既复杂又不实用
;
所以我们按照
TCP/IP
四层模型来讲解
.
7. 应用层
网络服务与最终用户的一个接口
各种应用程序协议
协议有:HTTP(超文本传输协议) FTP(文本传输协议) TFTP(简单文件传输协议) SMTP(简单邮件传输协议) SNMP(简单网络管理协议) DNS(域名系统) TELNET(远程终端协议) HTTPS(超文本传输安全协议) POP3(邮局协议版本3 ) DHCP(动态主机配置协议)
6. 表示层
数据的表示、安全、压缩。(在五层模型里面已经合并到了应用层)
信息的语法语义以及他们的关联,如加密解密、转换翻译、压缩解压
格式有,JPEG、ASCll、EBCDIC、加密格式等 [2]
如LPP(轻量级表示协议)
5. 会话层
建立、管理、终止会话。(在五层模型里面已经合并到了应用层)
不同机器上的用户之间建立及管理会话
对应主机进程,指本地主机与远程主机正在进行的会话
安全协议:SSL(安全套接字层协议)、TLS(安全传输层协议)
4. 传输层
定义传输数据的协议端口号,以及流控和差错校验。
接受上一层数据,在必要的时候把数据进行切割,并将这些数据交给网络层,并保证这些数据段有效到达对端
协议有:TCP UDP,数据包一旦离开网卡即进入网络传输层
3. 网络层
进行逻辑地址寻址,实现不同网络之间的路径选择。
控制子网的运行,如逻辑编址、分组传输、路由选择
协议有:ICMP(互联网控制信息协议) IGMP(组管理协议) IP(IPV4 IPV6)(互联网协议)
安全协议、路由协议(vrrp虚拟路由冗余)
2. 数据链路层
建立逻辑连接、进行硬件地址寻址、差错校验 [3] 等功能。(由底层网络定义协议)
将比特组合成字节进而组合成帧,用MAC地址访问介质,错误发现但不能纠正。
物理寻址、同时将原始比特流转变为逻辑传输线路
地址解析协议:ARP、PARP(反向地址转换协议)
1. 物理层
建立、维护、断开物理连接。(由底层网络定义协议)
机械、电子、定时接口通信信道上的原始比特流传输
TCP/IP 层级模型结构,应用层之间的协议通过逐级调用传输层(Transport layer)、网络层(Network Layer)和物理数据链路层(Physical Data Link)而可以实现应用层的应用程序通信互联。
原文链接:https://blog.csdn.net/wwy0324/article/details/109310658
同时TCP/IP的五层(或四层)模型
物理层
:
负责光
/
电信号的传递方式
.
比如现在以太网通用的网线
(
双绞线
)
、早期以太网采用的的同轴电缆
(
现在主要用于有线电视
)
、光纤
,
现在的
wifi
无线网使用电磁波等都属于物理层的概念。物理层的能力决
定了最大传输速率、传输距离、抗干扰性等
.
集线器
(Hub)
工作在物理层
.
数据链路层
:
负责设备之间的数据帧的传送和识别
.
例如网卡设备的驱动、帧同步
(
就是说从网线上检测
到什么信号算作新帧的开始
)
、冲突检测
(
如果检测到冲突就自动重发
)
、数据差错校验等工作
.
有以太
网、令牌环网
,
无线
LAN
等标准
.
交换机
(Switch)
工作在数据链路层
.
网络层
:
负责地址管理和路由选择
.
例如在
IP
协议中
,
通过
IP
地址来标识一台主机
,
并通过路由表的方式规
划出两台主机之间的数据传输的线路
(
路由
).
路由器
(Router)
工作在网路层
.
传输层
:
负责两台主机之间的数据传输
.
如传输控制协议
(TCP),
能够确保数据可靠的从源主机发送到目标
主机
.
应用层
:
负责应用程序间沟通,如简单电子邮件传输(
SMTP
)、文件传输协议(
FTP
)、网络远程访问
协议(
Telnet
)等
.
我们的网络编程主要就是针对应用层
.
OSI和TCP/IP可以一一对应
针对网络协议,每一层只能和同层的协议会话。
那么具体是如何操作的呢?
![](https://img-blog.csdnimg.cn/17ed7a5f534a4107a2ac52aa28fbc251.png)
那如果一次没有到,那么会如何操作呢?
![](https://img-blog.csdnimg.cn/1f83f18a48764d4da2db84a2a795c2b6.png)
答案是,会直接把路由器当跳板跳走,不是相应的设备也会丢弃这部分数据.
网络中的地址管理
IP地址
是在
IP
协议中
,
用来标识网络中不同主机的地址
;
对于
IPv4
来说
, IP
地址是一个
4
字节
, 32
位的整数
;
我们通常也使用
"
点分十进制
"
的字符串表示
IP
地址
,
例如
192.168.0.1 ;
用点分割的每一个数字表示一个字节,
范围是
0 - 255;
其中,IP地址代表了在广域网中应用,一个IP地址标识了唯一一台主机.
MAC地址
用来识别数据链路层中相连的节点
;
长度为
48
位
,
及
6
个字节
.
一般用
16
进制数字加上冒号的形式来表示
(
例如
: 08:00:27:03:fb:19)
在网卡出厂时就确定了
,
不能修改
. mac
地址通常是唯一的
(
虚拟机中的
mac
地址不是真实的
mac
地址
,
可
能会冲突
;
也有些网卡支持用户配置
mac
地址
).
其中,MAC地址主要在局域网中应用较多,MAC地址标识了网络适配器(网卡)
端口号(port)
是传输层协议的内容
.
端口号是一个
2
字节
16
位的整数
;
端口号用来标识一个进程
,
告诉操作系统
,
当前的这个数据要交给哪一个进程来处理
;
IP
地址
+
端口号能够标识网络上的某一台主机的某一个进程
;
一个端口号只能被一个进程占用(但是一个进程可以占用多个端口号)
网络字节序
发送主机通常将发送缓冲区中的数据按内存地址从低到高的顺序发出
;
接收主机把从网络上接到的字节依次保存在接收缓冲区中
,
也是按内存地址从低到高的顺序保存
;
因此
,
网络数据流的地址应这样规定
:
先发出的数据是低地址
,
后发出的数据是高地址
.
TCP/IP
协议规定
,
网络数据流应采用大端字节序
,
即低地址高字节
.
不管这台主机是大端机还是小端机
,
都会按照这个
TCP/IP
规定的网络字节序来发送
/
接收数据
;
如果当前发送主机是小端
,
就需要先将数据转成大端
;
否则就忽略
,
直接发送即可
;
所以,网络字节是按照大端发送的!!!