网络基础与协议

协议

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

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

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

网络中的协议是分层的

同层协议之间在互相通信

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

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

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

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地址前缀不同

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

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

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

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

相关推荐
且听风吟_xincell1 小时前
用 TypeScript 从零写一个 TCP 聊天室(上)—— 网络编程入门实战
网络·tcp/ip·typescript
万法若空3 小时前
Libevent C语言开发完全教程:从入门到实战
c语言·网络
鹿鸣天涯3 小时前
kali 2026.1 vmware虚拟机内看不见鼠标处理方法
网络·计算机外设
蜡笔婧萱4 小时前
网络服务综合大实验--包含NFS服务器,Web服务器,DNS域名服务器
linux·服务器·网络
汽车仪器仪表相关领域4 小时前
Kvaser Hybrid CAN/LIN 单通道三合一总线分析仪:高性价比CAN FD/LIN集成测试利器
运维·服务器·网络·数据挖掘·数据分析·单元测试·集成测试
林熙蕾LXL4 小时前
守护进程&IO多路复用介绍
linux·服务器·网络
志栋智能4 小时前
超自动化安全:实现安全运营现代化的关键
大数据·运维·网络·安全·自动化
小子想咋滴4 小时前
ospf总结
网络
24zhgjx-fuhao5 小时前
虚链路的配置
开发语言·网络·php
步十人5 小时前
【Redis】网络高并发模型
网络·数据库·redis