| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 四步帮你搞定网络编程之第一步 -> 正文阅读 |
|
[网络协议]四步帮你搞定网络编程之第一步 |
目录 一:初识网络协议1.1 什么叫协议?顾名思义,“协议”就是我们平常生活中一些心照不宣的事情,大家都公认了的事。比如,你到邻居张大爷家买肉,你俩约定好每回都买一斤,这样你下回去买张大爷都给你称一斤,所以协议就是我们大家公认的提前约定好了的事或者规则,简单来说的话。 1.2 打电话中的“协议”?? ?上面这个例子中就有各种各样的协议,相信大家看到后会对协议有一个简单形象的认识。
在这个例子中
,
我们的协议只有两层
;
但是实际的网络通信会更加复杂
,
需要分更多的层次
.
分层最大的好处在于
"
封装。
二:协议分层2.1?OSI七层模型
OSI
(
Open?System?Interconnection
,开放系统互连)七层网络模型称为开放式系统互联参考模型,是
一个逻辑上的定义和规范
;
把网络从逻辑上分为了
7
层
.
每一层都有相关、相对应的物理设备,比如路由器,交换机
;
OSI?
七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输
;
它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整
.
通过七个
层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯
;
但是
,
它既复杂又不实用
;
所以我们按照
TCP/IP
四层模型来讲解
.
2.2?TCP/IP五层(或四层)模型
TCP/IP
是一组协议的代名词,它还包括许多协议,组成了
TCP/IP
协议簇
.
TCP/IP
通讯协议采用了
5
层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求
.
物理层
:
负责光
/
电信号的传递方式
.
比如现在以太网通用的网线
(
双绞 线
)
、早期以太网采用的的同轴电缆
(
现在主要用于有线电视
)
、光纤
,
现在的
wififi
无线网使用电磁波等都属于物理层的概念。物理层的能力决定
了最大传输速率、传输距离、抗干扰性等
.
集线器
(Hub)
工作在物理层
.
数据链路层
:
负责设备之间的数据帧的传送和识别
.
例如网卡设备的驱动、帧同步
(
就是说从网线上检测到
什么信号算作新帧的开始
)
、冲突检测
(
如果检测到冲突就自动重发
)
、数据差错校验等工作
.
有以太网、令
牌环网
,
无线
LAN
等标准
.
交换机
(Switch)
工作在数据链路层
.
网络层
:
负责地址管理和路由选择
.
例如在
IP
协议中
,
通过
IP
地址来标识一台主机
,
并通过路由表的方式规划
出两台主机之间的数据传输的线路
(
路由
).
路由器
(Router)
工作在网路层
.
传输层
:
负责两台主机之间的数据传输
.
如传输控制协议
(TCP),
能够确保数据可靠的从源主机发送到目标主
机
.
应用层
:
负责应用程序间沟通,如简单电子邮件传输(
SMTP
)、文件传输协议(
FTP
)、网络远程访问协
议(
Telnet
)等
.
我们的网络编程主要就是针对应用层.
物理层我们考虑的比较少
.
因此很多时候也可以称为
TCP/IP
四层模型
.
一般而言
对于一台主机
,
它的操作系统内核实现了从传输层到物理层的内容
;
对于一台路由器
,
它实现了从网络层到物理层
;
对于一台交换机
,
它实现了从数据链路层到物理层
;
对于集线器
,
它只实现了物理层
;
但是并不绝对
.
很多交换机也实现了网络层的转发
;
很多路由器也实现了部分传输层的内容
(
比如端口转发
);
三:网络传输基本流程3.1?网络传输流程图
同一个网段内的两台主机进行文件传输
.
?具体如下表示: ?跨网段的主机的文件传输. 数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器。 ? ?3.2?数据包封装和分用
不同的协议层对数据包有不同的称谓
,
在传输层叫做段
(segment),
在网络层叫做数据报
(datagram),
在链路
层叫做帧
(frame).
应用层数据通过协议栈发到网络上时
,
每层协议都要加上一个数据首部
(header),
称为封装
(Encapsulation).
首部信息中包含了一些类似于首部有多长
,
载荷
(payload)
有多长
,
上层协议是什么等信息
.
数据封装成帧后发到传输介质上
,
到达目的主机后每层协议再剥掉相应的首部
,
根据首部中的
"
上层协议字
段
"
将数据交给对应的上层协议处理
.
下图为数据封装的过程
? ?下图为数据分用的过程 四:网络中的地址管理4.1?认识IP地址?iP协议有两个版本, IPv4和IPv6. iP地址是在IP协议中, 用来标识网络中不同主机的地址;
对于
IPv4
来说
, IP
地址是一个
4
字节
, 32
位的整数
;
我们通常也使用
"
点分十进制
"
的字符串表示
IP
地址
,
例如
192.168.0.1 ;
用点分割的每一个数字表示一个字
节
,
范围是
0 - 255;
4.2?认识MAC地址
? MAC
地址用来识别数据链路层中相连的节点
;
长度为
48
位
,
及
6
个字节
.
一般用
16
进制数字加上冒号的形式来表示
(
例如
: 08:00:27:03:fb:19)
在网卡出厂时就确定了
,
不能修改
. mac
地址通常是唯一的
(
虚拟机中的
mac
地址不是真实的
mac
地址
,
可能
会冲突
;
也有些网卡支持用户配置
mac
地址
).
总结? 以上是简单的对网络原理基本概念的一些分析,先有个基本的了解,兵马未动,粮草先行,打好基础才能为之后的做好准备,水平有限,请大家不吝赐教,感激不尽。 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 4:53:48- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |