协议
定义
协议
什么是协议:协议就是双方约定同一种语言进行沟通
什么是网络协议:通信双方,约定通信时使用的数据格式进行网络通信
协议分层:网络是有分层结构的,每一个分层当中有不同的网络协议,不同的网络协议完成不同的事情,不同的分层都有自己要完成的事情
网络协议簇:指的是很多网络协议组成的,称之为协议簇
体系结构:体系结构规定了网络的分层,以及每一个分层需要完成的功能,以及每一个分层拥有的协议,还规定了每一个分层与自己上下层的关系
ISO七层模型(网络模型,网络的分层模型)
物数网传会表应
①物理层
②数据链路层
③网络层
④传输层
⑤会话层
⑥表示层
⑦应用层
工业当中并没有广泛的应用,因为划分的太繁琐
TCP/IP四层(或五层)模型
应用层:程序员写的代码,都是应用层代码,换句话说,程序员是工作在这一层的
传输层:端与端之间的传输,端指的是端口(端点 port)
网络层:IP地址管理和路由选择
典型的设备:路由器
数据链路层:网络数据帧的传输,负责相邻设备之间的传输
典型的设备:交换机
物理层:将二进制数据转化成光电信号,进行传输
典型的设备:集线器(放大信号)
数据流向
假设在使用微信进行聊天,A发出一条消息,从A的应用层传递到传输层再到网络层经数据链路层传递到物理层,
在物理层转化为二进制数据通过光电信号传输到B的物理层,而从A的应用层到物理层便是A的网络协议栈。到达
B的物理层后向上传递,经过数据链路层到网络层再传输层最后到达应用层在B的微信上边显示出接收到的消息。
即:
1、网络数据的转发需要先经历自己的网络协议栈,进而通过网络将数据转化成为光电信号,传输到对端机器
2、对端机器收到数据之后,需要经历自己的机器网络协议栈的层层向上递交,一直将数据递交到应用层的的应用程序当中
ip、端口的本质和作用
ip地址:ipv4版本的ip地址
本质:uint32_t(无符号32位)的整数,范围(0~42亿+),也就意味着ipv4版本的ip地址只有42亿多个
ipv4版本的地址,通常是使用点分十进制的方式来表示的,例如“172.11.10.1”
点分十进制:以“.”分隔出来了4个部分,每一个部分占用1个字节,换句话说每一个部分的每一个数字的范围都是(0~255)
作用:可以在网络当中唯一标识一台主机
即一个(公网)ip地址只能被一台机器所占用,一台机器可以拥有多个ip地址
端口:
本质:unit16_t(无符号16位)的整数,范围(0~65535)
作用:在一台机器中唯一标识一个进程
引申出来的含义:一个端口只能被一个进程所绑定,但一个进程可以绑定多个端口
一条网络数据在网络转发时,需要具备哪些条件?
网络数据的五元组信息:
{源ip地址, 源端口, 目的ip, 目的端口, 协议}
网络数据中一定是存在五元组信息的,否则网咯就没有办法进行转发
例如需要寄一件快递,需要有收件人信息,收件人地址,快递公司,自己的信息和地址,其中自己的信息和地址对应的就是源ip地址与端口,
快递公司代表的便是协议,收件人信息和地址代表的便是目的ip与端口
网络协议栈在进行数据转发的时候做了哪些事?
数据的封装:
A在应用层输入一个为[A]的消息
[A]
进入到传输层后传输层会给数据加上一个传输层头
[传输层头] [A]
进入网络层后数据被加上网络层头,也就是ip头
[网络层头] [传输层头] [A]
进入数据链路层打上以太头,在数据末尾加上一个CRC帧尾
[以太头] [网络层头] [传输层头] [A] [CRC帧尾]
进入物理层后将拿到的二进制数据转换成为光电信号传到B
数据的分用:
B的物理层先拿到了数据
[以太头] [网络层头] [传输层头] [A] [CRC帧尾]
递交给数据链路层,数据链路层在递交给网络层之前要去掉以太头和CRC帧尾
[网络层头] [传输层头] [A]
网络层拿到数据,在递交给传输层之前去掉网络层头
[传输层头] [A]
传输层拿到数据,去掉传输层头,将数据递交给应用层
[A]
对于接收端而言,所有的网络数据都是需要经历网络协议栈的,但是这么区分网络数据到底是属于哪一个应用程序的?
通过端口进行区分
|