Linux网络编程第一课:深入浅出TCP/IP协议簇与网络寻址系统

news2025/5/26 5:23:50

知识点1【网络发展简史】

**网络节点:**路由器和交换机组成

交换机的作用:拓展网络接口

路由:网络通信路径

1、分组交换

分组的目的:

数据量大,不能一次型传输,只能分批次传输,这里的每一批次就是每个分组。

传输单元:网络传输是有限制的。以太网传输单元最大字节数:1500Byte

同一个分组系统中,数据是等分的(每组大小是等长的)

分组的组成:

每个分组都是由首部和数据段组成

首部:存储的是分组在原数据的位置、目的主机和源主机信息

解释:每个组独立发出,并且要准确地发给目的主机,目的主机收到也要知道是谁发的。主机收到后 需要将分组 组合成一个完整的数据,也需要用到首部内的信息。

2、分组方式的交换方式:存储转发

节点收到分组,先暂时存储下来,再检查其首部,按照首部中目的地址,找到合适的节点转发出去

重组发生在目的主机上,每个节点只是数据的中转站

3、云特网发展史

因特网是从单个ARPA NET发展起来的

TCP/IP协议成为ARPA NET标准协议

TCP/IP 是协议的统称,它是一个族,并不是单指TCP/IP协议

知识点2【TCP/IP协议】(重要)

每种协议完成不同的功能

网络是分层次来管理的

分层结构(背下来)

背下来每一层,并且要知道每一层是干什么的,这一出现问题可以快速确定是哪一层的错误,并且每层对应的协议是有限的,进而确定哪个协议有问题

1、网络的分层结构:

(一)七层结构

**七层结构:**OSI/RM(Open Standard Interconnection /Reference Model)开放互联参考模型(理论上的标准)

  • 七层的解释

    **物理层:**网络卡的接口类型,电流强弱等标准。(网卡在第八层)

    **数据链路层:**负责完整的帧数据 收发,mac地址的封装和解封装。(设备 到 设备的通信)

    帧数据:能够完整独立在网络上传输的数据单元

    (在链路层上组好的报文可以直接脱离网卡,在网络上传输)

    mac地址:网卡地址

    **网络层:**负责IP报文的封装和解封装,IP地址。(主机 到 主机的通信)

    每个主机都有自己唯一的IP地址,发数据就是封装IP地址,收数据就是解析IP地址

    一个网线连接一个网卡,为了拓展网络接口,就需要用到交换机,而连接这些拓展接口,就需要利用网卡的接口接入,一个网卡可以对应多个系统,就会有一个主机的判断,主机里又可以有多个IP地址

    交换机中就会形成MAC地址表

    **传输层:**负责端口的封装和解封装(端口 区别的是 系统的进程)(进程到进程的通信)

    **会话层:**负责数据的转发,查看数据是否能够到达目的主机,查看网络通信状态

    **表示层:**将计算机识别 的二进程数据 转换成 为用户能识别的(图片,音频等)

    **应用层:**具体应用程序的协议

(二)四层结构

**四层结构:**TCP/IP模型(事实上的标准)

  • 四层的解释

    **应用层:**具体应用程序的协议

    传输层:负责端口的封装和解封装(端口 区别是 系统的进程)(进程 到 进程的通信)

    网络层:负责IP报文的封装和解封装,IP地址。(主机 到 主机的通信)

    链路层:负责完整的帧数据 收发(帧数据:完整独立在网上传输的数据),mac地址的封装和解封装(设备 到 设备的通信)

(三)协议

应用层

FTP文件传输协议、Telnet远程登录协议、TFTP:简单文件传送协议,NFS:网络文件系统、HTTP超文本传送协议

传输层

TCP传输控制协议、UDP用户数据报协议

网络层

IP网际协议、ICMP网络控制报文协议、IGMP网络组管理协议

链路层

ARP地址解析协议、RARP逆地址解析协议

2、IP协议(网际协议)

特点:

1、尽最大可能地将数据报文 传送到目的主机

2、IP报文独立传输,不按顺序收发

3、IP报文中要包含 源IP地址 和 目的IP地址

3、TCP报文(传输控制协议)

TCP是可靠传输层协议(进程和进程的通信)、面向连接的、序号和确认序号、排序检 错、失败重传,面向大文件传输。

如HTTP、FTP、SMTP等

4、UDP协议(用户数据报 协议)

UDP协议是一种不靠谱的传输协议(进程与进程之间的通信),不连接,不排序检错,不冲传,简单应答服务,支持广播、多播

如NFS、NTP(网络时间协议)、DNS(域名解析协议)等

知识点3【地址】

1、mac地址(网卡的地址 链路层)

通过网卡可以将不同的计算机连接起来

mac是标识网卡地址编号(理论上全球唯一),mac地址可以修改,但是一般不修改

如果多人一起修改,会有mac地址不唯一的风险

以太网的mac地址是48位

window:ipconfig 与 网络属性搭配使用查询 IPv4 IPv6 mac地址

2、IP地址(重要)

IPv4 32位

IPv6 128位 专家说IPv6可以给地球上每一粒沙子分配一个IP

主要介绍IPv4

32位分为 子网ID主机ID

子网ID:IP地址中由子网掩码中 1 覆盖的连续位

主机ID:IP地址中由子网掩码中 0 覆盖的连续位

可见IP和子网掩码是相辅相成的 他们两个需要搭配起来才都有意义

子网ID:标示IP地址在哪一个网段

主机ID:标识IP地址在网段的具体位置

覆盖这里的意思是对应,并不是按位或按位与,让我们举例说明一下

注意

1、IPv4 与 子网掩码ID 配合才能确定 子网ID 和 主机ID

2、掩码的0和1不能相见,必须连续

3、IP地址的分类

IP地址分为A类,B类,C类,D类,E类

我们最常见的是A类,B类,C类

A类地址:默认8bit子网ID,第一位为0 (广域网 国家‐国家之间)

掩码:255.0.0.0

0xxx xxxx.0000 0000.0000 0000.0000 0000

0xxx xxxx.1111 1111.1111 1111.1111 1111

B类地址:默认16bit子网ID,前两位为10 (城域网 城市‐城市之间)

掩码:255.255.0.0

10xx xxxx.xxxx xxxx.0000 0000.0000 0000

10xx xxxx.xxxx xxxx.1111 1111.1111 1111

C类地址:默认24bit子网ID,前三位为110 (局域网)

掩码:255.255.255.0

110x xxxx.xxxx xxxx.xxxx xxxx.0000 0000

110x xxxx.xxxx xxxx.xxxx xxxx.1111 1111

D类地址:前四位为1110,多播地址

E类地址: 前五位为11110,保留为今后使用

注意

**网段个数:**2^(x的个数)

如A类 就是2^7

**主机个数:**2^ (主机ID的位数)- 2

这里为什么减2呢?

是因为全零全一的地址有特殊含义

全零:网段地址

全一:广播地址(如果是A类的广播地址,全世界都能收到)

4、IP地址分类(能否上外网)

共有IP:可直接连接Internet

私有IP:不可直接上Internet,可以借助代理上Internet

私有IP不能直接与共有IP进行通信

5、回环IP地址

回环地址的作用是什么呢?

ping这个地址段(127.0.0.1~127.255.255.254),大家会发现,这个地址段的任意地址都将回环到本地主机上,它的作用是用来测试本机的网卡和IP协议是否正常的

这个地址段不属于任何一个 有类比的地址类,它代表设备的本地入口地址

6、设置IP地址

windows下 图形页面设置 大家都应该尝试过,没有尝试过的可以问一下deepseek 或者其他AI。

这里我详细说一下Linux非图形式修改。

1、设置静态IP

(1)首先需要确定要修改的IP是否被占用,被占用不建议修改:ping一下,看能否打通

(2)ifconfig 查看网络的名称

(3)修改方法:可以修改IP地址 和 子网掩码

ifconfig eth0 目标IP netmask 掩码值

(4)验证是否修改成功 ifconfig

2、动态IP的设置

sudo dhcclient

3、拨号(了解即可)

7、子网掩码

子网掩码(subnet mask)又称网络掩码,地址掩码

是一个32bit由1和0组成的数值,并且1和0分别连续

作用

表明IP中的哪些位标识的是主机所在的子网 以及 哪些位标识的是主机号

特点

1、必须结合IP地址一起使用,不能单独存在

2、IP地址中由字码掩码中1 覆盖的连续位 是子网ID;其余的是主机ID

子网掩码的表现形式

192.168.220.0/255.255.255.0
192.168.220.0/24

知识点4【端口】(重要)

1、端口的概述

TCP/IP协议 采用端口标识通信的进程

系统编程中,是在同一主机操作,我们用进程ID标识进程

网络编程中,是在不同的主机操作,我们用端口标识进程

本质

端口的本质是 一段缓冲区

特点:(理解记忆)

1、同一系统,一个端口只能对应一个进程

2、同一个端口(端口号相同),在不同的系统中对应不同的进程

3、在同一个系统中,一个进程可以对应多个端口

4、一个进程拥有一个端口后,传输层送到该端口的数据全部被该进程接收,同样,进程送交传输层的数据也通过该端口被送出

不同的主机如何识别端口呢?这就需要引入端口号的概念了。

2、端口号

端口号类似于PID 标识一个进程,在网络编程中,用端口号(port)来标识一个运行的网络程序。

给端口取一个端口号,其他主机(端口号对其他主机无特殊含义,只知道将端口号发送到目标主机)要向目标主机端口发送数据,数据到了目标主机的传输层,目标主机识别端口号,来找到对应的缓冲区。

结束

代码重在练习!

代码重在练习!

代码重在练习!

今天的分享就到此结束了,希望对你有所帮助,如果你喜欢我的分享,请点赞收藏夹关注,谢谢大家!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2336409.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GESP2023年12月认证C++七级( 第三部分编程题(2)纸牌游戏)

参考程序&#xff1a; #include <iostream> #include <cstring> // for memset #include <vector> using namespace std;const int max_n 1005; int n; int a[max_n], b[max_n], c[max_n]; // a[]: 得分系数&#xff1b;b[]: 换牌惩罚&#xff1b;c[]: …

HarmonyOS学习 实验九:@State和@Prop装饰器的使用方法

HarmonyOS应用开发&#xff1a;父子组件状态管理实验报告 引言 在HarmonyOS应用开发领域&#xff0c;组件之间的状态管理是一个至关重要的概念。通过有效的状态管理&#xff0c;我们可以确保应用的数据流动清晰、可预测&#xff0c;从而提升应用的稳定性和可维护性。本次实验…

【Ai】MCP实战:手写 client 和 server [Python版本]

什么是mcp MCP 是一个开放协议&#xff0c;它为应用程序向 LLM 提供上下文的方式进行了标准化。你可以将 MCP 想象成 AI 应用程序的 USB-C 接口。就像 USB-C 为设备连接各种外设和配件提供了标准化的方式一样&#xff0c;MCP 为 AI 模型连接各种数据源和工具提供了标准化的接口…

Java与C在典型场景下的性能对比深度剖析

&#x1f381;个人主页&#xff1a;User_芊芊君子 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 &#x1f50d;系列专栏&#xff1a;AI 【前言】 在计算机编程领域&#xff0c;Java和C语言都是举足轻重的编程语言。Java以其跨平台性、自动内存管理和丰富…

多智能体 AI 游戏框架(开源程序):竞争、发展、适应

一、软件介绍 文末提供程序和源码下载 SamoAI 在人类和 AI 之间创建了一个无缝的多代理叙事层&#xff0c;实现了跨多个平台的自然协作。通过一致的身份保留和情境记忆&#xff0c;它允许通过一系列行动随着时间的推移而演变的交互&#xff0c;就像人际关系一样。 二、核心概念…

java实现二叉树的前序、中序、后序遍历(递归和非递归方式)以及层级遍历

java实现二叉树的前序、中序、后序遍历以及层级遍历 一、二叉树节点定义二、递归方式1.前序遍历2.中序遍历3.后序遍历 三、非递归方式1.前序遍历2.中序遍历3.后序遍历4.层级遍历5.分层打印 四、测试用例 一、二叉树节点定义 class TreeNode {int val;TreeNode left;TreeNode r…

Solr admin 更新文档

<add><doc><field name"id">1904451090351546368</field><field name"companyName" update"set">测试科技有限公司</field></doc> </add>

【Netty篇】EventLoopGroup 与 EventLoop 详解

目录 开场白&#xff1a;话说 Netty 江湖第一段&#xff1a;EventLoopGroup——“包工头”的角色第二段&#xff1a;EventLoop——“身怀绝技的工人”第三段&#xff1a;EventLoop 如何处理 I/O 事件、普通任务和定时任务第四段&#xff1a;Handler 执行中如何换人&#xff1f;…

操作系统之shell实现(上)

&#x1f31f; 各位看官好&#xff0c;我是maomi_9526&#xff01; &#x1f30d; 种一棵树最好是十年前&#xff0c;其次是现在&#xff01; &#x1f680; 今天来学习C语言的相关知识。 &#x1f44d; 如果觉得这篇文章有帮助&#xff0c;欢迎您一键三连&#xff0c;分享给更…

数据结构与算法——链表OJ题详解(2)

文章目录 一、前言二、OJ续享2.1相交链表2.2环形链表12.2环形链表2 三、总结 一、前言 哦了兄弟们&#xff0c;咱们上次在详解链表OJ题的时候&#xff0c;有一部分OJ题呢up并没有整理完&#xff0c;这一个星期呢&#xff0c;up也是在不断的学习并且沉淀着&#xff0c;也是终于…

Linux 基础知识详解

Linux 基础知识详解 一、快照与克隆 1. &#x1f4f8;快照&#xff08;Snapshot&#xff09; 快照是虚拟机当前运行状态的一次“瞬间拷贝”&#xff0c;包括内存、磁盘、配置等信息。这使得管理员能够快速恢复到某个特定的时间点。 用途&#xff1a; 安全实验前保存状态&am…

centOs7配置有限网络

最简单快速的是使用nmtui命令&#xff0c;采用图形页面修改。 点击编辑连接并回车&#xff1a; 选中编辑然后回车&#xff1a; 千万记住DNS服务器就是子网掩码&#xff0c;不是常说的DNS域名。把地址&#xff0c;网关&#xff0c;子网掩码配置好。只要ip不冲突&#xff0c;网…

C语言 —— 指尖跃迁 刻印永恒 - 文件操作

目录 1. 什么是文件 1.1 程序文件 1.2 数据文件 1.3 文件名 2. 二进制文件和文本文件 3. 文件的打开与关闭 3.1 流和标准流 3.2 文件指针 3.3 文件的打开与关闭 fopen fclose 4. 文件的顺序读写 4.1 fgetc和fputc fgetc fputc 4.2 fgets和fputs fgets fputs…

网络安全与信息安全的区别​及共通

在数字化时代&#xff0c;网络安全与信息安全已成为保障个人、企业乃至国家正常运转的重要防线。尽管二者紧密相关且常被混为一谈&#xff0c;但实则存在显著差异。当然&#xff0c;它们也有一些相同点&#xff0c;比如都以保障数字环境下的安全为核心目标&#xff0c;均需要通…

【愚公系列】《Python网络爬虫从入门到精通》052-Scrapy 编写 Item Pipeline

&#x1f31f;【技术大咖愚公搬代码&#xff1a;全栈专家的成长之路&#xff0c;你关注的宝藏博主在这里&#xff01;】&#x1f31f; &#x1f4e3;开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主&#xff01; &#x1f…

【AI News | 20250416】每日AI进展

AI Repos 1、Tutorial-Codebase-Knowledge 自动分析 GitHub 仓库并生成适合初学者的通俗易懂教程&#xff0c;清晰解释代码如何运行&#xff0c;还能生成可视化内容来展示核心功能。爬取 GitHub 仓库并从代码中构建知识库&#xff1b;分析整个代码库以识别核心抽象概念及其交互…

GIS开发笔记(6)结合osg及osgEarth实现半球形区域绘制

一、实现效果 输入中心点坐标及半径&#xff0c;绘制半球形区域&#xff0c;地下部分不显示。 二、实现原理 根据中心点及半径绘制半球形区域&#xff0c;将其挂接到地球节点。 三、参考代码 void GlobeWidget::drawSphericalRegion(osg::Vec3d point,double radius) {// 使…

element-ui自定义主题

此处的element-ui为基于vue2.x的 由于https://element.eleme.cn/#/zh-CN/theme/preview&#xff08;element的主题&#xff09;报错503&#xff0c; 所以使用https://element.eleme.cn/#/zh-CN/component/custom-theme 自定义主题文档中&#xff0c;在项目中改变scss变量的方…

windows下使用nginx + waitress 部署django

架构介绍 linux一般采用nginx uwsgi部署django&#xff0c;在Windows下&#xff0c;可以取代uwsgi的选项包括Waitressa、Daphnea、Hypercoma和Gunicorna(通过WSLa 运行)。windows服务器一般采用nginx waitress 部署django&#xff0c;,他们的关系如下 django是WEB应用…

MySQL-多版本并发控制MVCC

文章目录 一、多版本并发控制MVCC二、undo log&#xff08;回滚日志&#xff09;二、已提交读三、可重复读总结 一、多版本并发控制MVCC MVCC是多版本并发控制&#xff08;Multi-Version Concurrency Control&#xff09;&#xff0c;是MySQL中基于乐观锁理论实现隔离级别的方…