news 2026/9/12 2:48:29

网络基础:初识TCP/IP协议

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
网络基础:初识TCP/IP协议

🎬 胖咕噜的稞达鸭:个人主页

🔥 个人专栏: 《数据结构》《C++初阶高阶》
《Linux系统学习》
《算法日记》
⛺️技术的杠杆,撬动整个世界!

宏观概念

计算机是人类的工具,人之间是需要协作的,就注定了计算机之间要进行协作 局域网LAN:计算机数量更多了,通过交换机和路由器连接在一起 广域网WAN:将相隔千里的计算机连接在一起

初始协议

协议是什么

减少通信的成本,用于快速形成共识
协议:本质是一种约定
计算机之间的传输媒介就是光信号和电信号,通过“频率”和“强弱”来表示0和1这样的信息,要想传递各种不同的信息就需要约定好双方的数据格式。
但是只有两台主机,约定好了协议,还是不能实现通信:比如A用频率表示0,B用强弱表示0,你说英语,我说汉语,语言不通不能实现通信

计算机之间,如何做约定呢?

国际标准化组织:ISO,推出一个标准OSI,只生产标准,不写代码实现,由工程师看到这个标准去写代码

协议分层

协议本质上就是软件,在设计上为了更好的进行模块化,解耦合,也是被设计成为层状结构的
所有的软件都是层状,模块化的,网络协议栈就是分层的

分析层状结构

结论1:在工程师视角和在普通用户视角
结论2:同层之间可以直接通信
结论3:分层之后,可以无障碍替换任意一层—>分层,解耦

再识协议

为什么要有TCP/IP协议?

TCP/IP协议与操作系统的关系(宏观上是怎么实现的)

所有设备是通过“线”连接在一起的,所以在计算机内部,冯诺依曼,本身就是一个网络结构(本地通信)
多台主机,通过网络通信,本质也是设备到设备(网络通信)
本地通信和网络通信的唯一区别:单纯距离变长了
引发新问题:如何处理数据?数据丢了怎么办?怎么定位目标主机的问题?怎么解决当下立即要去哪里的问题?(这些问题在本地通信都不存在,只存在于网络通信)

TCP/IP协议:本质上就是一种网络长距离通信的解决方案

什么是TCP/IP协议
TCP/IP协议能分层,前提是问题本身可以分层
网络是操作系统的一部分,所有操作系统内部功能网络部分完全一样(网络操作系统和TCP/IP协议的关系)

所以什么是协议?
协议本质就是约定好的结构体
关于协议的朴素理解:所谓协议就是通信双方都认识的数据类型
因为协议栈是分层的,所以,每层双方都有协议,同层之间,互相可以认识对方的协议。(快递单子)

网络传输基本流程

宇宙中引起光传播需要介质:以太,最后被证伪了

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

两台主机在同一个局域网,是否能够直接通信(可以的)
原理类似于上课,在课上说一句话,课堂参与者都听得到,但是只有消息的目标人会对信息做出受理:A在跟B说话,但是周围有好多吃瓜群众

局域网中数据是透明的
每台主机在局域网上,要有唯一的标识来保证主机的唯一性:mac地址
任何时刻,只允许一台机器向网络中发送数据,如果有多台同时发送,会发生数据干扰,我们称之为数据碰撞,没有交换机的情况下,一个以太网就是一个碰撞域,所有发送数据的主机要进行碰撞检测和碰撞避免
以太网的本质就是共享的资源
以太网就是临界资源(所有数据碰撞,碰撞避免就相当于 互斥属性)

数据包封装和分用

细节一:不考虑应用层协议,任何协议
a.报头必须要能做到,和有效载荷进行分离的能力
b.报头必须包含,如何将自己的有效载荷,交付给上层的那一个具体协议

细节二:底层收到报文,但是该报文不是发送给我的,数据链路底层直接丢弃
细节三:协议栈
主机A向主机B发送信息,自顶向下封装(“message”,应用层报头,传输层报头,网络层报头,数据链路层报头)就是入栈的过程,主机B解包和分用过程就是一步一步出栈的过程

网络中的地址管理—>IP地址

IP地址,用来标识,全球范围内,主机的唯一性(公网IP
MAC地址也是全球唯一

IPMAC地址的区别:
从哪里来到哪里去---->源IP,目标IP地址;
上一站从哪里来,下一站去哪里---->源MAC,目标MAC地址

举个例子:
唐僧从东土大唐而来去往西天大雷音寺取经,目前在车迟国,下一站去女儿国。
这一句话中,东土大唐就相当于源IP地址,西天大雷音寺就是目标IP地址,车迟国是目前阶段的MAC地址,女儿国就是目标MAC地址。

路由过程中,IP地址不变,mac地址只会在本局域网内有效

网络层+IP的本质意义:给网络提供了一层虚拟化层,让世界上所有的网络,都叫做IP网络

问题:如果IP地址每台机器都是独特的话,那它怎么保证同一局域网下的IP地址相似呢?
答:局域网通过子网划分机制,将同一网段的 IP 地址分配给内部设备,从而保证地址相似性。
给局域网内所有机器分配同一网段前缀的 IP(比如 192.168.1.x),通过子网掩码限定 “相似范围”,既保证局域网内地址统一,又通过公网 IP 或 NAT 实现与外网的区分和通信。

IP网络存在的意义:提供网络虚拟层,让世界的所有网络都是IP网络,屏蔽最底层网络的差异

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/3 5:42:22

Java转行者福音!飞算JavaAI,快速落地项目,破解入门焦虑

对于Java转行者而言,入门阶段的核心诉求是“快速落地项目、积累实操经验”——转行者大多面临时间紧、基础弱、缺乏实战指导的问题,迫切需要通过完成简单项目,证明自身能力、巩固学习成果,为求职或转行落地打下基础。但现实往往不…

作者头像 李华
网站建设 2026/9/6 18:20:45

聚焦Java全场景赋能,飞算JavaAI重构编程效率新边界

在Java编程领域,效率与规范始终是开发者的核心追求,而框架适配难、Bug排查久、冗余代码多、版本兼容差等痛点,却常年困扰着从新手到资深开发者的各类人群。不同于市面上通用AI的“多语言泛泛而谈”,飞算JavaAI深耕Java单一领域&am…

作者头像 李华
网站建设 2026/9/6 3:25:36

智能代客泊车,JAVA源码轻松搞定出行

JAVA可通过SpringBootMyBatis-PlusMySQL等技术栈,结合高德地图API、Redis缓存及微服务架构,构建智能代客泊车系统,实现“一键无忧”的接机送机服务。 一、系统核心功能与技术实现 多端入口与跨平台开发 用户端:采用UniApp实现小…

作者头像 李华
网站建设 2026/9/10 19:35:19

DeepSeek总结DuckPL:为DuckDB引入过程式编程语言

DuckPL:为DuckDB引入过程式编程语言 原文地址:https://blobs.duckdb.org/events/duckdb-developer-meeting-1/duckpl-a-procedural-language-in-duckdb-denis-hirn.pdf 在2026年1月30日的DuckDB开发者会议#1上,来自蒂宾根大学的Denis Hirn&…

作者头像 李华
网站建设 2026/9/12 1:32:16

【计算机毕业设计案例】基于php+vue.js流浪动物宠物领养公益网站基于php+vue的动物救助网站的设计与实现(程序+文档+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华