网络基础与协议

协议

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

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

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

网络中的协议是分层的

同层协议之间在互相通信

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

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

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

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

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

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

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

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

相关推荐
GoFly开发者2 小时前
Go语言开发框架GoFlyGen新增 网站安全助手 插件,帮助开发者提供应用安全防护,保障平台系统数据安全。
网络·安全
happyprince2 小时前
07_NVIDIA_ModelOpt-Recipe配方系统
网络·modelopt
韦胖漫谈IT3 小时前
Apple M3 Max 与 Apple M5 Max 对比:本地算力的新旧王者之争
网络·人工智能·macos·transformer
treesforest4 小时前
做内容平台,IP地址精准定位和IP高精度定位查询怎么帮我们提升用户留存
网络·网络协议·tcp/ip
电商API_180079052474 小时前
电商ERP 自动同步订单功能实现拆解与技术手段
服务器·前端·网络·爬虫
云计算-Security4 小时前
分组交换的可靠性来自哪里?
网络·智能路由器
ward RINL4 小时前
# GPT-5.6-sol vs GPT-5.5 新题实测:非弹性碰撞物理题和稳定路由算法
网络·gpt·算法
wang_shu_mo_ran5 小时前
网络编程(二):UDP数据报在客户端与服务端之间的传输
网络·网络协议·udp
humors2215 小时前
【转帖】关于防范AI编程工具Claude Code安全后门隐患的风险提示
网络·安全·ai编程
永久鳕5 小时前
WebSocket 连接成功但行情不更新,应该先查哪几个状态?
网络·websocket·网络协议