网络基础与协议

协议

在网络通信中,协议本质是一种约定

协议本质也是软件,软件是分层的

是为了更好的模块化和解耦合

网络中的协议是分层的

同层协议之间在互相通信

同层协议之间是没有直接通信的

是各自使用下层提供的结构能力,完成通信

分层就是解耦合的有效方式,是为了代码的可维护性

eg.

OS和网络之间的关系

网络是操作系统的一部分

因为windows和Linux使用相同的网络协议栈

所以他们虽然OS不同,但是可以互相通信,因为他们必须遵守相同的协议

OSI七层模型和TCP/IP四层(五层)模型

OSI将网络协议定成了七层

但实际工程实践中(TCP/IP)只有四层

链路层,网络层,传输层,应用层(没包括物理层)

TCP/IP协议族

为什么要有TCP/IP协议

TCP/IP协议本质是一种解决方案

TCP/IP协议能够分层,前提是因为问题本身是可以分解的

网络通信最大的特点就是主机之间的距离变远了

这会导致一些问题

如何局域网通信,如何定位主机,丢包如何解决等

这些不同性质的问题

TCP/IP协议就是这些问题的解决方案

TCP/IP协议是分层的,就是因为这些不同性质的问题

协议本身就是为了操作系统之间为了能够网络通信,所约定的数据结构

所以协议就是结构体

所谓协议,就是双方都认识的结构化的数据类型

网络传输的基本流程

局域网(以太网为例)通信原理

每台主机在局域网,都有一个唯一的标识来保证主机的唯一性

这个唯一的标识就是mac地址

两台主机在同一个局域网,可以直接通信

原理:

所有的主机都能收到消息和目标主机的mac地址

然后将报文中包含的mac地址和自己的mac地址对比

和自己相同就接受该报文

不同就丢弃报文

mac地址用来识别数据链路层中相连的节点

长度位48bit,即6个字节,一般用十六进制加冒号标识(08:00:27:03:fb:19)

mac地址在网卡出厂时就确定了

主机会在数据链路层来对比mac地址并选择是否丢弃

上面的层是不会知道被自己丢弃的的报文的

一个局域网是一个碰撞域

在一个碰撞域如果同时发消息,就是发生了碰撞

则这些同时发消息的主机会随机休眠一段时间

这就是碰撞避免

所有主机都可以访问以太网

但同一时间只能由一个主机访问

本质是一种临界资源

一个子网中的主机数越多,发生碰撞的概率越高

发送的过程:

主机A逐层将信息封装,发送到主机B,然后逐层解包

同层之间都认为自己在和对方的同层直接通信,但是实际上确实逐层封装解包的

同层间拿到的报头是一样的

报文 = 报头 + 有效载荷

报头的共性:

1.报头和有效载荷的分离问题

2.报头内部,必须包含一个字段,叫做交给上层的谁的字段---分用

跨网传输

IP协议有两个版本,分别是IPv4和IPv6,但是没有特殊说明,都是IPv4

对于IPv4,IP地址是一个4字节,32比特的整数

通常用点分十进制来标识,如192.168.0.1

mac与ip的区别:

源ip地址 -> 目的ip地址

源 地址到最终目的地址

源mac地址 -> 目的mac地址

当前 地址到下一个地址

传输mac地址的两个设备在同一个局域网

局域网通信需要mac地址,mac地址,一般只在局域网有效

自己机器要发送的报文会发送至自己的网络层

自己的机器有路由功能

网络层发现要发送的报文的目的ip地址与自己的局域网的ip地址前缀不同

则会将报文发给路由器,路由器是连接外网的唯一出口

随后由路由器将报文解包,分用,然后封装,发给别的局域网

网络层,全网同一层,拿到的报文时一样的,是统一的

网络报文流通的真实流程:

相关推荐
Dream Cosmos15 分钟前
传输层协议之UDP
网络·网络协议·udp
鸿蒙开发爱好者4 小时前
下班后做的小工具和小游戏,我把它们整理成了 WyanHub
网络·人工智能·职场和发展·个人开发
乐橙开放平台4 小时前
海康和大华摄像头能统一管理吗?可以通过 GB28181 或视频融合平台接入
网络·后端·物联网·音视频
张小姐的猫6 小时前
【基于 WebSocket 的多用户网页五子棋】—— 项目结构设计与实用工具类模块
网络·websocket·网络协议
QXWZ_IA6 小时前
测绘单位采购RTK:设备价格、账号年费、售后,用时间轴分权重
网络·人工智能·安全
IT大白鼠8 小时前
GitLab 未认证 RCE 应急实战CVE-2026-97229(CVSS 10.0)
网络·安全·gitlab
陈希1238 小时前
Linux 网络诊断工具实战:ping、curl、tcpdump、mtr、dig 用法详解
linux·网络·tcpdump
草莓熊Lotso10 小时前
【C++ 基于微服务的即时通讯系统】文件存储子服务实战:UUID生成、文件IO封装与全接口单元测试
开发语言·网络·数据库·c++·微服务·架构·单元测试
wuyk55511 小时前
Spider-第03讲-HTTP速通与读懂响应
网络·爬虫·网络协议·http
默|笙21 小时前
【Linux网络】网络层协议 IP(1)理解报头、网段划分
linux·网络·tcp/ip